Copyright © 2008 Alessandro Franci
Copyright © 2008 Deny
Copyright © 2008 Joëlle Cornavin
Article paru dans le n°147 de la Gazette Linux de février 2008.
Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
Avez-vous jamais rêvé de démarrer Linux
en moins d'une minute ? À présent, ce rêve peut devenir réalité : moins de 40 secondes après avoir appuyé sur le bouton de mise en marche, vous disposerez d'un système d'exploitation parfaitement opérationnel, exactement comme vous l'avez laissé lors de la dernière session. Encore mieux que ce que vous pensiez ? Alors jugez par vous-même.
Étonnant, n'est-ce pas ? Je suppose que vous souhaitez faire de même. L'opération est très simple et tient en un mot : hibernate.
Le processus d'hibernation écrit le contenu de la mémoire vive dans la partition d'échange (swap) avant de mettre le système hors tension. Plus tard, le système peut être restauré dans l'état où il se trouvait lorsque l'hibernation a été invoquée, de sorte que les programmes peuvent continuer à s'exécuter comme si rien ne s'était passé. Comme je l'ai montré dans la vidéo, effectuer une restauration depuis une hibernation est beaucoup plus rapide qu'un redémarrage sec (hard reboot).
Tout d'abord, il vous faut une partition d'échange (swap) : créez-la si vous n'en avez pas encore. Elle devra avoir au moins la même taille que votre mémoire vive — donc si elle est trop petite, augmentez-la. Pour créer une partition d'échange, vous pouvez utiliser des applications comme parted, fdisk, cfdisk (programmes shell) ou gparted (un programme doté d'une interface graphique). Une fois que vous avez crée ou modifié la partition d'échange, vous devez la définir et l'activer :
#
mkswap /dev/devX
#
swapon /dev/devX
où devX
est la partition d'échange (par exemple hda8
, sda1
, etc.).
À présent, il est temps d'apporter un correctif au noyau : ce correctif ajoutera des fonctionnalités d'hibernation au système. Téléchargez le correctif correspondant à la version de votre noyau sur le site suivant :
http://www.tuxonice.net/downloads/.
Si vous ne pouvez trouver de correctif pour votre version, il faut alors mettre à jour le noyau. Ne vous préoccupez pas de la version mineure cependant : par exemple, si la version de votre noyau est 2.6.23.13 (comme la mienne), le plus proche que vous trouverez sera un correctif pour la version 2.6.23.9. Ne songez pas même à mettre à niveau votre noyau ! Téléchargez le correctif pour la version 2.6.23.9 et appliquez-le à la version 2.6.23.13 : il fonctionnera parfaitement.
Une fois que vous l'avez téléchargé, appliquez-le :
cd /usr/src/linux-2.6.xx.xx
bzcat /chemin/vers/correctif
| patch -p1
où 2.6.xx.xx
est la version du noyau recevant le correctif. Ensuite configurez-le et ajoutez les fonctionnalités d'hibernation :
Power management options ---> [*] Power Management support [*] Hibernation (aka 'suspend to disk') <*> Enhanced Hibernation (TuxOnIce) (NEW) ---> <*> File Allocator <*> Swap Allocator <*> Compression support <*> Userspace User Interface support [ ] Allow Keep Image Mode [*] Replace swsusp by default < > Cluster support ---> [*] Checksum pageset2 (25) Default waiting time for emergency boot messages < > Test pageflags
Vérifiez que la prise en charge du moteur DMA est activée : cette fonction améliorera réellement la vitesse d'hibernation :
Device Drivers ---> DMA Engine support ---> [*] Support for DMA engines
Activez également l'algorithme de compression LZF : il comprimera les données et accélérera l'hibernation :
Cryptographic API ---> <*> LZF compression algorithm
Maintenant, compilez-le et installez-le comme d'habitude.
La prochaine étape consiste à modifier le gestionnaire d'amorçage. Il faut ajouter resume=swap:/dev/devX resume2=swap:/dev/devX
(où devX
est votre partition d'échange) à la section placée en annexe. Si vous utilisez Lilo, modifiez /etc/lilo.conf
comme dans l'exemple suivant :
image = /boot/vmlinuz root = /dev/hda6 label = Slackware append = "fb=no resume=swap:/dev/hda8 resume2=swap:/dev/hda8"
Maintenant, mettez à jour le secteur de démarrage :
#
lilo -v
Si vous utilisez Grub, modifiez /boot/grub/menu.lst
comme ci-dessous :
title Slackware root (hd0,5) kernel /boot/vmlinuz root=/dev/hda6 fb=no resume=swap:/dev/hda8 resume2=swap:/dev/hda8 ro quiet splash boot
À présent, réamorcez avec votre nouveau noyau. Si tout va bien, pendant le démarrage ou dans la sortie de dmesg, vous pourrez voir des lignes telles que celles-ci :
TuxOnIce 3.0-rc3, with support for checksumming, usm, compression, swap storage, file storage, userui.
TuxOnIce: Normal swapspace found.
Dans la négative, vérifiez que vous avez mis en place la partition d'échange :
$ free|grep Swap Swap: 497972 115020 382952
Si les résultats sont une série de zéros, vous avez oublié de configurer l'espace d'échange. Créez-le et activez-le, puis redémarrez et vérifiez à nouveau.
Installez à présent le script hibernate. Téléchargez-le sur le site suivant :
http://www.tuxonice.net/downloads/.
Décompressez et installez-le :
$ tar -xzvf hibernate-script-x.xx.tar.gz
$ cd hibernate-script-x.xx
#
./install.sh
Une fois que votre installation est en place, vous devez modifier quelques fichiers. Ouvrez et modifiez /etc/hibernate/hibernate.conf
comme ci-dessous :
TryMethod suspend2.conf TryMethod disk.conf TryMethod ram.conf
Ouvrez et modifiez /etc/hibernate/suspend2.conf
comme ci-dessous :
UseSuspend2 yes Reboot no EnableEscape yes DefaultConsoleLevel 1 Compressor lzf Encryptor none ImageSizeLimit 0 SuspendDevice swap:/dev/devX PowerdownMethod 5 FullSpeedCPU yes Include common.conf
où devX
est votre partition d'échange.
Vérifiez si le moteur DMA est activé pour votre disque dur :
# hdparm /dev/hda|grep dma using_dma = 1 (on)
hda
, bien sûr, devra être votre disque dur. Si vous ne voyez pas cette ligne, activez-le :
# hdparm -d1 /dev/hda
Automatisez le processus en ajoutant ces lignes à votre rc.local
(/etc/rc.d/rc.local
ou /etc/rc.local
) :
# Enabling DMA Engine echo "Enabling DMA Engine on /dev/hda" hdparm -d1 /dev/hda
Il faut à présent essayer le processus d'hibernation :
#
hibernate -n
Avec l'option -n
, le processus d'hibernation sera seulement simulé. S'il réussit, vous pouvez à présent tester l'application en réel :
#
hibernate
Pour que ces tests fonctionnent, cependant, je vous conseille d'employer l'option -r1
. Celle-ci ne fera pas arrêter le système — elle le redémarrera simplement. Ainsi :
#
hibernate -r1
Si l'hibernation fonctionne correctement, le système devrait apparaître exactement comme vous l'aviez laissé la dernière fois. Si quelque chose ne fonctionne pas (par exemple. le système de son ou la connexion au réseau local), vous devrez ajouter quelques modules à /etc/hibernate/blacklisted-modules
, par exemple les modules audio, les modules de la carte graphique et les modules de la carte Ethernet :
ipw2100 nvidia snd_maestro3
Dans cet exemple, vous placez en « liste noire » le pilote graphique NVIDIA®, le module ipw2100 de la carte sans fil et la carte son Maestro®.
Si vous rencontrez d'autres problèmes, allez sur la page web du projet :
En conclusion, selon les performances de votre processeur et de votre disque dur, un délai inférieur à une minute, de l'état hors tension à un système Linux
opérationnel, est une perspective raisonnable.
Né en 1988, Alessandro vit à Bologne (Italie). Tout en étant étudiant en informatique à l'université de Bologne, il a remporté en 2007 le premier prix de la quatrième édition de la Research Language Competition organisée par l'Italian Research Council (ministère de la recherche italien). Il est passionné par
Linux
, particulièrement en ce qui concerne les services et le monde du réseau : il a créé, et administre actuellement les services web et de courrier électronique de http://the-root.org/. Pendant l'été 2005, il a travaillé dans une entreprise de logiciels de bases de données en tant que développeur . En 2006, il a assuré un cours sur les bases du système d'exploitationLinux
dans son lycée. À partir de 2007, il a travaillé comme consultant dans le secteur privé et lors de réunions d'affaires.
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.