Démarrer Linux en moins de 40 secondes

Gazette Linux n°147 — Février 2008

Deny

Adaptation française

Joëlle Cornavin

Relecture de la version française

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

1. De quoi s'agit-il ?
2. Commençons
3. Apporter un correctif au noyau
4. Mettre à jour le chargeur d'amorçage
5. Redémarrer
6. Installer le script hibernate
7. Modifier les fichiers d'hibernate
8. Vérifier le moteur DMA
9. Le temps du gel
10. Conclusion

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.

1. De quoi s'agit-il ?

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).

2. Commençons

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

devX est la partition d'échange (par exemple hda8, sda1, etc.).

3. Apporter un correctif au noyau

À 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

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.

4. Mettre à jour le chargeur d'amorçage

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

5. Redémarrer

À 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.

6. Installer le script hibernate

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

7. Modifier les fichiers d'hibernate

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

devX est votre partition d'échange.

8. Vérifier le moteur DMA

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

9. Le temps du gel

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 :

http://www.tuxonice.net/.

10. Conclusion

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'exploitation Linux dans son lycée. À partir de 2007, il a travaillé comme consultant dans le secteur privé et lors de réunions d'affaires.

Adaptation française de la Gazette Linux

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.