un pingouin en sleep
Par davux, vendredi 6 août 2004 à 06:27 :: geekeries :: #320 :: rss
Je viens d'installer software-suspend sur
mon laptop, et ça marche plutôt pas mal :)
Software-Suspend permet de suspendre un ordinateur en sauvegardant
le contenu de la RAM quelque part: partition d'échange (swap),
fichier du disque dur local et prochainement en NFS. De cette manière l'ordinateur
peut être éteint, et au prochain redémarrage l'état de la RAM est
restauré comme si de rien n'était.
Je vais essayer d'expliquer la procédure que j'ai suivie.
Je suis sur un ordinateur portable HP/Compaq NX9000, disposant de 512 Mo de RAM, d'un processeur P4 à 2.2 GHz, et de 30 Go de disque dur. J'utilise Linux, plus spécifiquement la distribution Debian sid.
J'ai commencé par installer le package kernel-source-2.6.7 (version du package: 2.6.7-3), qui m'a fourni un fichier .tar.bz2 dans /usr/src/ à décompresser. J'ai ensuite créé un lien symbolique /usr/src/linux vers le répertoire créé, parce que c'est bon pour la santé.
J'ai ensuite téléchargé le patch
swsusp2.0.0.102 (dernière version disponible à ce moment),
disponible sur le site officiel du projet. Pour l'appliquer, il
suffit de le décompresser n'importe où (pas trop n'importe où quand
même, personnellement j'étais sur mon lit). Ensuite se placer dans
le répertoire /usr/src/linux et lancer la commande
suivante: <chemin-du-patch>/apply.
Le problème est que ce patch contient des erreurs qui l'empêchent de compiler correctement. La bonne nouvelle c'est qu'un gentil monsieur a corrigé le problème et fournit un patch du patch. Oui bon ça va je t'ai vu rigoler.
Donc j'ai suivi sagement les instructions, téléchargé et
appliqué le brouzouf avec la commande suivante: patch -p1
< fichier.diff, pour chacun des fichiers à appliquer,
dans le bon ordre.
Avec mon nouveau noyau tout maquillé et coiffé, j'ai pu
configurer tranquillement avec make menuconfig (mon
.config est ici),
puis compilé avec make puis make
modules_install. Copié les fichiers System.map,
.config pour la forme, et bien sûr
arch/i386/bzImage dans /boot. Ensuite
j'ai pu modifier ma configuration de Grub pour
pouvoir booter sur le nouveau kernel. Il convient de rajouter
l'option "resume2=swap:/dev/hda3" (à remplacer par le chemin de
votre partition de swap) si cela n'a pas été précisé dans la
configuration du noyau. C'est à cet endroit que sera sauvegardé le
contenu de la RAM lors de la suspension.
À partir de ce moment, on peut redémarrer l'ordinateur sur le nouveau noyau. Une fois celui-ci au pouvoir, il suffit de taper echo >> /proc/software_suspend/activate pour lancer la procédure de suspension. Après quelques secondes, l'ordinateur s'éteint. Lorsqu'on le rallume, le contenu de la swap est récupéré et replacé en RAM, et la vie continue comme si rien ne s'était passé. C'est assez bluffant: j'ai coupé au milieu d'une musique, et à la reprise le type a continué à chanter, ce con n'a même pas remarqué qu'il avait pioncé 10 minutes.
Il existe un paquet Debian nommé hibernate, que vous pouvez installer pour configurer un peu plus finement la suspension (modules du noyau à relancer explicitement, menu alternatif de Grub lors de la reprise, etc.). Vraiment bien foutu.
Pour finir, j'ai configuré le démon ACPI (paquet Debian acpid) pour que l'événement de fermeture du couvercle de l'ordinateur lance la commande hibernate. Le script shell à modifier se trouve dans /etc/acpi, et vous pouvez connaître son nom en consultant les fichiers dans le répertoire /etc/acpi/events. J'ai simplement rajouté un appel à la commande hibernate à l'endroit du script qui concerne la fermeture du couvercle. Il suffit maintenant de baisser la casquette du bébé pour l'endormir le bébé, et de lui pouéter le nez pour le réveiller.
Le chan #swsusp sur irc.freenode.net est très utile et peuplé d'habitants charmants; le site web du projet est quant à lui austère mais fruité.
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire