Suspend2
Un article de Linuxette.
Sommaire |
Qu'est-ce que suspend2?
C'est une méthode de mise à l'arret d'un ordinateur, mais qui garde en souvenir, l'état du système. Voila comment cela se passe:
1/ demande d'arret (shutdown)
2/ sauvegarde de la mémoire dans le swap (partition dédié ou fichier)
3/ arret complet
4/ redémarrage
5/ lecture du swap (partition ou fichier)
6/ remise en place de l'état
7/ vous retrouvez votre machine comme avant (applications ouvertes, fenêtres, connexion(s) réseau, ...)
Comment cela se passe
Il faut d'abord, un noyau prévu pour suspend2. Pour cela, il faut 2 chose: un noyau et un patch prévu pour la version du noyau récupéré.
Exemple:
un noyau 2.6.19 http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.7.tar.bz2
un patch en version 2.2.9 pour cette version de noyau: http://www.suspend2.net/downloads/all/suspend2-2.2.9-for-2.6.19.patch.bz2
Dans l'ordre: récupération du noyau et décompactage, récupération du patch et décompactage, application du patch:
$ cd /home/remi/tmp/ $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.19.7.tar.bz2 # cd /usr/src # tar xzvf /home/remi/tmp/linux-2.6.19.7.tar.bz2 # ln -s /usr/src/linux-2.6.19.7 /usr/src/linux $ cd /home/remi/tmp/ $ wget http://www.suspend2.net/downloads/all/suspend2-2.2.9-for-2.6.19.patch.bz2 $ bzip2 -d ./suspend2-2.2.9-for-2.6.19.patch.bz2 # cd /usr/src/linux # patch -p1 < /home/remi/tmp/suspend2-2.2.9-for-2.6.19 # cd /usr/src/linux # cp /boot/config-2.6.18-4-686 ./.config # make oldconfig # make xconfig
La partie 'cp /boot/config-2.6.18-4-686 ./.config' permet de partir d'une base saine de fichier de configuration. (Attention à trouver le bon fichier sur votre machine). Ensuite, il faut appliquer la commande oldconfig afin de remettre en ordre le .config par rapport au nouveau noyau. Puis, avec make xconfig, il faut placer les options de façon à ce que le noyau puisse lire le disque (donc l'ide en dur et non en module), les lib crypto aussi en dur, etc etc... Bref, voici mon .config
Une fois votre noyau bien configuré, voici la compilation façon debian:
# make-kpkg clean # make-kpkg --append-to-version=.suspend --revision=.0.1 kernel-image modules-image # cd ../ # dpkg -i linux-image-2.6.19.7.suspend_.0.1_i386.deb
Si tout ce passe bien, vous avez vos paquets deb dans /usr/src/
Avant tout, il y a des paquets à installer en plus. Si l'on recherche pour debian, voilà ce qu'il y a comme paquet:
$ apt-cache search suspend2 -- à complèter... ---
Sinon, voila les scripts à récuperer (valable au 27 mars 2007)
hibernate-script-1.94.tar.gz snowboard-tux-v1.tar.bz2 suspend2-userui-0.7.0.tar.gz
Plus qu'à tester!
Pour cela, il faut passer en init 1 (sous debian), de façon à n'avoir qu'un minimum d'applications en cours. Ensuite:
# hibernate
Normalement, la machine devrait s'arreter. Si ça marche, retester en init 2 (avec l'écran de login graphique) mais sans se connecter en mode graphique. Si tout fonctionne, le teste suivant sera en mode graphique, sous votre compte!
--Admin 28 mars 2007 à 02:37 (CEST)
Changement de noyau
- http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.4.tar.bz2
- http://www.suspend2.net/downloads/all/suspend2-2.2.9.10-for-2.6.20.patch.bz2
La compilation / installation reste la même.
Script utilisateur
Script d'hbernation à placer dans la barre d'application de gnome:
#!/bin/sh
# ----------------------------------------------------------
# Demande confirmation avant mise en hibernation sur disque
# Version 0.1: 21 oct 2006
#
# par R. Suinot <rsuinux@free.fr>
# ----------------------------------------------------------
Xdialog --yesno "Demande de mise en sommeil sur disque ?" 0 0;\
case $? in
0)
# oui!
sudo /usr/sbin/hibernate;;
1)
# oh non!!!!!
echo "Refus de votre part.";;
255)
# escape appuyé (equ a 'non')
echo "Echap utilisé";;
esac
exit 0
--Admin 12 juin 2007 à 22:02 (CEST)
Un autre script? Celui ci permet aussi de mettre la machine en sommeil mais en gardant tout en mémoire!
$ cat bin/suspension.sh
#!/bin/sh
# ----------------------------------------------------------
# Demande confirmation avant mise en hibernation sur disque
# Version 0.2: 27 Dec. 2007
# par R. Suinot <remi@suinot.org>
# ----------------------------------------------------------
DIALOG=Xdialog
$DIALOG --title "Mise en sommeil" \
--menu "Choisissez votre hibernation" 10 40 5 \
"mem" "en mémoire" \
"disk" "sur disque" \
"no" "Surtout pas!" 2>/tmp/menu.tmp
choix=$?
selection=`cat /tmp/menu.tmp`
rm -f /tmp/menu.tmp
case $choix in
0)
case $selection in
disk)
sudo /usr/sbin/hibernate-disk
;;
mem)
sudo /usr/sbin/hibernate-ram
;;
no)
print "annule \n "
;;
esac
;;
esac
exit 0
Amélioration
J'ai eu quelques problèmes pour faire redémarrer le réseau à chaque reboot. En fait, la solution est simple, comme à chaque fois!
- edition du fichier /etc/hibernate/common.conf
- suppression du '#' pour ces deux lignes:
### network DownInterfaces auto UpInterfaces wlan0
- copie du fichier /usr/share/hibernate/scriptlets.d/network vers /etc/hibernate/scriptlets.d/network
- le rendre exécutable:
$ sudo chmod +x /etc/hibernate/scriptlets.d/network
C'est tout!
--Admin 26 juin 2007 à 09:44 (CEST)
Dernières nouvelles
Suite à un problème au niveau de la gestion usb et usb2 (kernel oops, ...), changement de version ce jour:
- nouveau patch suspend2: http://www.tuxonice.net/downloads/all/suspend2-2.2.10.2-for-2.6.22-rc6.patch.bz2
- nouveau kernel: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2
Recompilation comme ci dessus.
ATTENTION
Il semble quil ne soit plus necessaire d'indiquer dans le fichier de configuration du noyau, l'emplacement du swap. Celui ci est passé de toute façon, au noyau, lors de la phase de boot.
--Admin 10 juillet 2007 à 20:12 (CEST)
Depuis le temps que je cherche:
J'ai enfin réussi à utiliser les drivers propriétaires Nvidia ET suspend! Pour tout savoir, retrouvez la page Divx-nvidia
--Admin 11 juillet 2007 à 20:24 (CEST)

