Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:comment_patcher_son_noyau_pour_activer_hibernation [Le 26/09/2010, 15:03]
Spirzouf note warning plus visible
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​Breezy portable système kernel tutoriel BROUILLON}} 
  
----- 
- 
-====== Comment patcher son noyau pour activer l'​hibernation ? ====== 
- 
- 
- 
- 
- 
- 
-===== Introduction ===== 
- 
-<note warning>​** Ce tutoriel ne fonctionne plus (certain sites internet n'​existent plus et il n'est pas adapté aux nouvelles versions d'​Ubuntu !!!). Si quelqu'​un veut m'​aider à le mettre à jour, il est le bienvenu :-) **</​note>​ 
- 
-==== Qu'​est-ce que l'​hibernation ? ==== 
- 
-Il existe plusieurs types de mise en veille: ​ 
-- La mise en veille classique ou **Suspend To Ram**, qui coupe le disque, où l'​ordinateur continue à utiliser de la batterie pour alimenter la mémoire vive, la ram. 
- 
-- Le **Suspend To Disk** ou hibernation est le fait de sauvegarder le contenu de la mémoire vive sur le disque dur. Le disque dur étant une mémoire non volatile, l'​alimentation se coupe complétement. Au redémarrage,​ on charge l'​image depuis le disque dur dans la mémoire vive, et l'on retrouve son ordinateur dans l'​état où on l'​avait laissé. 
- 
-==== Quelles solutions existe-t-il sous linux ? ==== 
- 
-Le noyau Linux inclut par défaut une fonction d'​hibernation (suspend to disk) qui est assez longue. ​ 
-Il existe une autre solution, plus performante,​ pour mettre son ordinateur en hibernation : //​SWSUSP2//​. 
- 
-//​SWSUSP2//,​ est un patch à appliquer au noyau. Il permet de compresser l'​image de la ram avant de l'​écrire sur le disque ce qui permet de faire une hibernation en environ 6s. 
- 
-Dans ce tutoriel je vais vous expliquer comment appliquer le patch au noyau afin d'​obtenir cette fonctionnalité. 
- 
- 
- 
- 
- 
-===== Installation ===== 
- 
-**Note:** il existe des paquets "​prêts à l'​emploi"​ pour Dapper: 
- 
-[[http://​www.ucc.asn.au/​~dagobah/​dapper-kernels/​]] (en anglais) 
- 
- 
-==== Télécharger les paquets ==== 
- 
-La première chose à faire est de récupérer les paquets nécessaires à la compilation de son noyau: 
-<​code>​ 
-sudo apt-get install build-essential bin86 libncurses-dev alien kernel-package 
-sudo apt-get -y install linux-tree-2.6.12 
-cd /usr/src 
-</​code>​ 
- 
-Puis on récupère le patch //​swsusp2//:​ 
-<​code>​ 
-sudo wget http://​ubuntu.griffin3.com/​software-suspend-2.1.9.9-for-2.6.12-ubuntu5.10.tar.bz2 
-sudo wget http://​www.suspend2.net/​downloads/​all/​hibernate-1.12-1.i386.rpm 
-sudo wget http://​www.suspend2.net/​downloads/​all/​suspend2-userui-0.5.1.tar.gz 
-</​code>​ 
- 
-Ensuite, pour compiler le noyau, nous allons installer //gcc-3.4// (par défaut Ubuntu Breezy installe //gcc 4.0//): 
-<​code>​ 
-sudo apt-get install gcc-3.4 ​ 
-</​code>​ 
- 
-Nous allons indiquer au système l'​utilisation de //gcc-3.4// pour la compilation,​ en exportant la variable CC: 
-<​code>​ 
-export CC=gcc-3.4 
-</​code>​ 
- 
-Il ne reste plus qu'à décompresser le patch et le noyau fraîchement téléchargé:​ 
-<​code>​ 
-sudo tar -xjf software-suspend-2.1.9.9-for-2.6.12-ubuntu5.10.tar.bz2 
-sudo tar -zxf suspend2-userui-0.5.1.tar.gz 
-sudo tar -xjf linux-source-2.6.12.tar.bz2 
-sudo ln -s linux-source-2.6.12 linux 
-cd /​usr/​src/​linux 
-</​code>​ 
- 
-==== Application du patch ==== 
- 
-Avant d'​appliquer le patch au noyau, nous allons récupérer notre configuration noyau par défaut lors de l'​installation de Ubuntu: 
-<​code>​ 
-sudo cp /​boot/​config-2.6.12-9-386 .config 
-sudo make oldconfig 
-</​code>​ 
- 
-Maintenant, nous appliquons le patch : 
-<​code>​ 
-sudo ../​software-suspend-2.1.9.9-for-2.6.12-ubuntu5.10/​apply 
-</​code>​ 
- 
-Notre noyau est maintenant patché. 
- 
-==== Configuration du noyau ==== 
- 
-Par défaut, Ubuntu démarre avec un //​initramfs//,​ nous n'​aborderons pas la manière d'​utiliser //swsups2// avec //​initramfs//,​ ce qui est en soit assez compliqué. Mais sachez qu'il est tout à fait possible de l'​utiliser,​ j'​expliquerai plus tard comment faire. 
- 
-Afin d'​accélérer //​swsusp2//,​ il va falloir compiler le pilote du chipset en dur dans le noyau. 
-Pour connaitre le chipset IDE de votre machine: 
-<​code>​ 
-sudo lspci | grep IDE 
-</​code>​ 
-Dans mon cas, cette commande donne: 
-<​code>​ 
-0000:​00:​1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 03) 
-</​code>​ 
-Ce qui signifie que je possède un chipset Intel qu'il faudra que je compile en dur dans le noyau, ce qui permettra d'​accélérer par 5 ou 6 la mise en hibernation. 
- 
-Pour pouvoir activer l'​hibernation,​ il vous faut savoir quel est votre partition swap. En effet, lors de la mise en hibernation,​ //swsusp2// va recopier le contenu de la RAM dans la swap. A la sortie de l'​hibernation,​ le contenu de la swap sera copié en RAM pour retrouver le système tel qu'il était avant l'​hibernation. 
- 
-Pour connaître le nom de la partition swap sur votre système, il vous suffit d'​entrer la commande suivante : 
- 
-<​code>​ 
-sudo cat /etc/fstab | grep swap 
-</​code>​ 
- 
-Dans mon cas, cette commande donne 
-<​code>​ 
-/​dev/​hda7 ​      ​none ​           swap    sw              0       0 
-</​code>​ 
-Ce qui signifie que j'​utilise la partition hda7 comme partition de swap. 
- 
-Passons à la configuration:​ 
-<​code>​ 
-sudo make menuconfig 
-</​code>​ 
- 
-Voici les modifications à apporter. 
-C'est la partie la plus délicate, mais très instructive,​ de ce tutorial: 
-<​code>​ 
-#    General setup ---> 
-#        (-hibernate) Local version - append to kernel release 
-#    Power management options (ACPI, APM) ---> 
-#        [ ]   ​Software Suspend (EXPERIMENTAL) 
-#        <*> Software Suspend 2 ---> 
-#            <*> Swap Writer 
-#            (swap:/​dev/​hda7) La partition par défaut qu'​utilisera swsups2, mettez la votre 
-#    Device Drivers ---> 
-#        ATA/​ATAPI/​MFM/​RLL support ---> On compile en dur la gestion des disques, car on n'​utilisera pas initramfs 
-#            <*> ATA/​ATAPI/​MFM/​RLL support 
-#            <*> Enhanced IDE/MFM/RLL disk/​cdrom/​tape/​floppy support 
-#            <*> Include IDE/ATA-2 DISK support 
-#            <*> generic/​default IDE chipset support 
-#=== Son chipset ide, chez moi: (cela permet d'​accélérer par 5-7 fois la mise en hibernation 
-#            <*> Intel PIIXn chipsets support #===votre chipset IDE 
-#    File systems ---> 
-#        <*> Ext3 journalling file system support #==== en dur votre file system, moi c ext3 
-#    Cryptographic options ​ ---> 
-#        <​*> ​  LZF compression algorithm #==== On va utiliser la compression LZF, pour la mise en hibernation 
-#​===Maintenant le type de processeur que vous utilisez. 
-#    Processor type and features ​ ---> 
-#        Processor family (Athlon/​Duron/​K7) #===your processor 
-</​code>​ 
- 
-Ne compilez pas le noyau, nous le ferons plus tard en créant un paquet .deb. 
- 
-===== Installation du User UI ===== 
- 
-//Swsusp2// fournit deux interfaces affichant une barre de progression lors de l'​hibernation et lors du réveil: ​   
-  * Une interface texte 
-  * Une interface graphique utilisant le frame buffer 
-Je n'​utilise pas l'​interface //frame buffer// qui ralentit considérablement la mise en veille. Donc je n'​expliquerais ici que la manière installer l'UI text. 
- 
-Compilation et installation : 
-<​code>​ 
-cd /​usr/​src/​suspend2-userui-0.5.1 
-sudo make suspend2ui_text 
-sudo cp -p suspend2ui_text /​usr/​local/​sbin 
-</​code>​ 
- 
-===== Installation et Configuration du script hibernate ===== 
- 
-Nous avons déjà téléchargé le paquet rpm du dernier script. Nous allons donc le convertir en paquet deb puis l'​installer:​ 
-<​code>​ 
-cd /usr/src 
-sudo alien -d hibernate-1.12-1.i386.rpm ​ 
-sudo dpkg -i hibernate_1*.deb 
-</​code>​ 
- 
-Maintenant, passons à la configuration:​ 
-<​code>​ 
-gksudo gedit /​etc/​hibernate/​hibernate.conf 
-</​code>​ 
-Rendez-vous aux lignes suivantes, et effectuez les opérations indiquées: 
-<​code>​ 
-ImageSizeLimit nocache # Décommentez et ajouter "​nocache"​ 
-ProcSetting expected_compression 50 # Décommentez 
- 
-# Ajouter cette ligne 
-ProcSetting userui_program /​usr/​local/​sbin/​suspend2ui_text 
-SwitchToTextMode no # Décommentez 
-</​code>​ 
- 
-===== Compilation du noyau ===== 
- 
-Nous sommes maintenant prêts à compiler notre noyau: 
-<​code>​ 
-cd /​usr/​src/​linux 
-sudo make-kpkg --append-to-version=swsusp2 kernel_image 
-</​code>​ 
-Vous pouvez maintenant aller prendre un café, car cette opération nécessite un certain temps... 
-Une fois fini, ré-installez votre nouveau noyau en installant le paquet généré: 
-<​code>​ 
-cd /usr/src 
-sudo dpkg -i kernel-image-2.6.12swsusp2*.deb 
-</​code>​ 
- 
-Redémarrez pour utiliser votre nouveau noyau. 
- 
-===== Hibernation ===== 
- 
-Après tous ces efforts, nous sommes prêts à effectuer notre première hibernation:​ 
-<​code>​ 
-sudo hibernate 
-</​code>​ 
- 
-===== Remarques ===== 
- 
-==== Stats ==== 
- 
-Après votre première hibernation,​ vous pouvez récupérer quelques statistiques sur l'​hibernation en entrant: 
-<​code>​ 
-sudo cat /​proc/​software_suspend/​debug_info |grep '​compression\|speed'​ 
-</​code>​ 
-Dans mon cas, cela donne: 
-<​code>​ 
-- Overall expected compression percentage: 50. 
-  Compressed 283107328 bytes into 144722852 (48 percent compression). 
-- I/O speed: Write 45 MB/s, Read 41 MB/s. 
-</​code>​ 
-Ce qui est important, c'est la vitesse I/O. Si cette vitesse avoisine 5, c'est que vous n'avez pas compilé le bon module de gestion de votre chipset IDE. 
- 
-==== Linux Restricted Module ==== 
- 
-Quand vous recompilez votre noyau, vous ne pouvez plus utiliser les paquets officiels pour les modules propriétaires. 
-Mais ce n'est pas dramatique, effectuez les commandes suivantes : 
-<​code>​ 
-cd /usr/src 
-sudo module-assistant 
-</​code>​ 
- 
-Et suivez le guide pour réinstaller les modules propriétaires:​ //nvidia//, //​madwifi//,​ etc... 
- 
-Il existe des problèmes avec les pilotes propriétaires fglrx et nvidia, moi je ne m'en sers pas. 
-Si vous avez des problèmes, utilisez les pilotes radeon et nv. 
- 
-==== Problèmes éventuels avec FAT32 et Windows ==== 
- 
-Si vous avez des partitions FAT32 montées et que vous utilisez le script hibernate sur un ordinateur multi-boot, vous aurez peut-être des problèmes de corruption de système de fichiers si vous lancez Windows depuis grub au boot suivant (en réalité, vous ne le verrez qu'​après avoir rebooté sous Linux). 
- 
-Pour résoudre ce problème, il suffit de taper  
- 
-<​code>​ 
-gksudo gedit /​etc/​hibernate/​hibernate.conf 
-</​code>​ 
- 
-et de rajouter, à la section ### filesystem, la ligne suivante: 
- 
-<​code>​ 
-UnmountFSTypes vfat  
-</​code>​ 
- 
-(Pour les autres types de systèmes de fichiers Windows, remplacez vfat par fat ou msdos selon votre cas.)  
- 
-Les partitions seront ainsi démontées automatiquement à chaque lancement du script et vous éviterez les conflits. ​ 
- 
-==== Problèmes de compilation avec Ndiswrapper ==== 
-La compilation en dur de Ndiswrapper semble provoquer des erreurs au moment de la recompilation du kernel. 
-Si c'est le cas réessayez en décochant Ndiswrapper au moment de la configuration avec make menuconfig. 
- 
----- 
- 
-//​Contributeurs : [[utilisateurs:​mathieu.vilaplana]].//​ 
  • tutoriel/comment_patcher_son_noyau_pour_activer_hibernation.1285506206.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)