Hibernation sur un système Arch Linux (s2disk / uswsusp)

Intérêt
Cet article se veut un bref tutoriel qui n’entre pas dans les détails, mais qui donne la marche exacte à suivre pour pouvoir faire fonctionner l’hibernation (ou suspend to disk) sur un ordinateur équipé du système Arch linux. Avec les rolling releases de cette distribution Linux, nous n’avons pas à préciser pour quelle(s) version(s) ces manipulations sont valables, mais la procédure a notamment été testée (avec succès) sur IBM / Lenovo Thinkpad X40, X60 et X60S en mai 2011. Veuillez noter que si vous êtes utilisateur d’un poste de travail fixe (au lieu d’un portable), vous avez également tout intérêt à utiliser la mise en hibernation.


Table des matières

1. Hiberner ?

L’hibernation (hibernate) est une méthode d’arrêt et de redémarrage du système qui consiste —pour faire simple— à créer sur le disque dur une « image » de la mémoire de l’ordinateur en fonctionnement avant d’arrêter ce dernier d’une manière plus « brutale » que d’ordinaire. Au lieu de démarrer normalement, un système en hibernation détecte la présence de l’image assez tôt dans sa phase de lancement et la charge en mémoire, ce qui lui permet de retrouver rapidement son état antérieur (interface démarrée et applications ouvertes comprises). Le nombre d’accès au disque demeure quant à lui plus limité que dans le cas d’un démarrage ordinaire (puisqu’il consiste, principalement, à charger l’image du disque vers la mémoire).

Contrairement à la mise en veille classique, le procédé d’hibernation ne consomme donc pas d’énergie (ou du moins une quantité négligeable). Il offre également une méthode rapide et relativement sûre pour arrêter et pour (re)démarrer son ordinateur. Par opposition à la mise en veille « classique », ou suspend to ram, l’hibernation est aussi nommée en Anglais suspend to disk.

2. Comment

La méthode la plus simple pour activer l’hibernation sous Arch linux consiste à installer et à configurer le paquet AUR uswsusp-git qui contient à la fois des scripts d’hibernation (s2disk) et de mise en veille (s2ram) s’exécutant entièrement dans l’espace utilisateur (userspace), ainsi que l’indispensable resume (le code qui prend en charge le redémarrage à partir de l’image créée avant d’hiberner).

Les avantages principaux de cette méthode sont :

  • —une configuration aisée, en éditant un simple fichier (/etc/suspend.conf)
  • —une exécution entièrement dans l'espace utilisateur : il est inutile de recompiler son noyau.

Il faut toutefois noter qu’il est indispensable de régénérer le système de fichiers initialement chargé en RAM (initramfs) lorsqu’on installe uswsusp : ceci permet de faire savoir au système où l’image sera stockée et de lui signifier qu’il doit redémarrer à partir de l’image lorsqu’elle existe. L’opération s’effectue simplement, à l’aide de la commande mkinitcpio.

3. Installation de uswsusp-git

Ce paquet AUR (du Arch User Repository) doit être installé avec yaourt : yaourt -Sy uswsusp-git

Au cas où vous ne disposez pas déjà de yaourt, pour l’installer :

  1. éditez le fichier /etc/pacman.conf et ajoutez les lignes suivantes :
[archlinuxfr]
Server = http://repo.archlinux.fr/$arch
  1. installez ensuite simplement yaourt avec pacman : pacman -Sy yaourt

4. Configuration dans /etc/suspend.conf

Pour configurer la mise en hibernation, éditez comme il a été dit le fichier /etc/suspend.conf :

snapshot device = /dev/snapshot
resume device = /dev/sda2
#image size = 350000000
#suspend loglevel = 2
#compute checksum = y
compress = y
#encrypt = y
#early writeout = y
#splash = y
shutdown method = shutdown
  1. Les entrées qui sont à changer ou à ajouter par rapport au fichier par défaut sont : resume device, compress et shutdown method.
  2. L’entrée la plus importante est celle du resume device (litt. « périphérique de redémarrage ») ; celle-ci doit avoir comme valeur le chemin vers votre votre partition de swap (pour savoir quelle est votre partition de swap, utilisez par exemple avec prudence la commande fdisk : fdisk /dev/sda, puis p et <Entrée> pour afficher la liste des partitions, puis q et <Entrée> pour quitter.

Note : votre partition de swap doit être suffisamment grande pour pouvoir accueillir l’image système en toutes circonstances, ce qui est a contrario une des causes les plus fréquentes d’échec de la mise en hibernation : vous vous éviterez bien des frustrations en allouant au swap 1 à 4 Go au minimum (et pour mémoire, on considérait jusqu’à tout récemment que la taille de ce dernier devait équivaloir à 2 fois la taille de la RAM installée).

  1. Le fait d’activer la compression améliore généralement la vitesse de mise en hibernation (y compris sur des systèmes peu puissants : on ne peut pas en dire autant du early writeout, qui consiste à écrire l’image sur disque au cours de sa création...).
  2. La dernière ligne (shutdown method) vise simplement à éviter un problème fréquent de redémarrage intempestif du système (au lieu d’un simple arrêt une fois la création de l’image terminée...)

5. Configuration de l’initramfs

  1. Vous devez en premier lieu éditer le fichier /etc/mkinitcpio.conf pour ajouter « l’accroche » qui permettra au système de poursuivre son démarrage à partir de l’image créée lors de la mise en hibernation. Pour ce faire, sous Arch linux, il suffit d’ajouter uresume à la liste des HOOKS (litt. « crochets ») :
HOOKS="base udev autodetect pata scsi sata uresume filesystems"
  1. L’entrée uresume doit venir juste avant celle des filesystems,
  2. si une entrée (alternative) resume existe déjà, elle doit remplacer cette dernière.

Il vous faut ensuite régénérer le initramfs : mkinitcpio -p kernel26 (si vous utilisez le noyau standard des dépôts).

6. Test de mise en hibernation et redémarrage

Une fois ces opérations effectuées, vous devriez directement pouvoir faire hiberner le système : commencez simplement, en conservant peu d’applications ouvertes (certaines pourraient empêcher l’hibernation, voire la restauration) et lancez la commande /usr/sbin/s2disk.

Sous réserve que l’image soit correctement créée (le système doit s’éteindre immédiatement à la fin du processus), vous devriez pouvoir observer le déclenchement de uresume et assister à la restauration de votre session d’utilisateur dès le prochain redémarrage.

7. Activation de la mise en hibernation

Pour automatiser le processus de mise en hibernation avec uswsusp, plusieurs solutions existent, notamment documentées ici (en Anglais).

La plus simple est probablement de choisir d’utiliser les pm-utils (pour Power Management utilities) : pour les installer, lancez pacman -Sy pm-utils.

  1. ensuite, comme il est décrit ici (en Anglais), paramétrez les pm-utils pour qu’ils utilisent le module de mise en hibernation uswsusp :

echo "SLEEP_MODULE=uswsusp">>/etc/pm/config.d/module

(la commande crée le fichier module s’il n’existait pas et le configure en une seule ligne).

  1. Pour plus d’options de configuration et pour résoudre certains problèmes spécifiques liés à la sortie d’hibernation, veuillez vous référer à la documentation des pm-utils (dernier lien ci-dessus).

8. Hiberner demain

Avec Gnome 3, la dernière version à ce jour de l’environnement de bureau libre, et plus particulièrement dans le gnome-shell, le lien de mise en hibernation n’apparaît plus par défaut dans le menu de statut de l’utilisateur (situé en haut à droite de l’écran, dans le panneau supérieur). Pour le rendre visible, il faut installer l’extension pour gnome-shell nommée alternative-status-menu ([1] et [2]).


9. Références

Sur archlinux.org :

Illustration : Ours blanc, gravure du XIXe siècle (origine inconnue). L’ours pratique une forme particulière d’hibernation puisque sa température corporelle diminue peu et que son réveil peut être très rapide.



Les droits de ce document sont régis par un contrat Creative Commons

et plus précisement par le contrat Creative Commons Paternité - Partage des Conditions Initiales à l’Identique Licence France 2.0 de Creative Commons, plus connue sous le nom de "CC-BY-SA".


Droits d'auteur © F. Philibert-Caillat, (G+).



Catégorie (1) GNU Linux, Unix 
 
Évaluation 100.00 %
Contenu sous droits d'auteur — Dernière mise-à-jour : 2014-03-24 10:03:32




Commentaires


*


Anti-robot
Veuillez résoudre l'opération suivante :


* obligatoire



Découvrez nos contenus

par catégories

par mots-clés

par dates d'ajout et de modification

Index alphabétique

Partagez vos connaissances !
Pour publier durablement et librement sur Internet, contactez-nous.





/a>