Les logiciels Deuchnord

[HS] Comment activer le mode « hibernation » sous Arch Linux ?

Voilà environ un an et demie que j'utilise comme système principal Arch Linux, et j'avais depuis un souci, pas spécialement majeur, mais un peu pénible : par défaut, la distribution n'active pas le mode hibernation (connu par les Windowsiens sous le nom de veille prolongée), de ce que j'ai compris pour des raisons de stabilité, certains modèles d'ordinateurs pouvant avoir quelques problèmes avec cela.

Pour mémoire, le mode hibernation est semblable au mode veille, si ce n'est que là où le mode veille sauvegarde son état dans la mémoire vive avant de se mettre dans un état que je qualifierai de « second » (tout est arrêté, à l'exception, justement de la mémoire vive, cette dernière ayant besoin de courant électrique pour conserver son contenu), l'hibernation le sauvegarde sur le disque dur ou le SSD avant d'éteindre complètement l'ordinateur, lui conférant donc l'avantage de ne consommer absolument rien en courant électrique.

Sous Arch Linux, donc, une petite manipulation est nécessaire pour permettre l'activation de cette fonctionnalité ma foi très utile quand on n'a plus de batterie mais qu'on ne veut pas tout fermer.

NB: cette manipulation a été réalisée avec succès sur un Dell XPS L501X ainsi qu'un Asus 1015CX, tous deux exécutant Arch Linux. Bien que je n'aie pas testé, cela devrait pouvoir fonctionner également sur les distributions dérivées d'Arch.

NB2: je suppose ici que vous utilisez Grub comme chargeur de démarrage. Si ce n'est pas le cas, vous devrez adapter la manipulation.

Prérequis

Le noyau Linux sauvegardant son état dans la partition d'échange (swap) du disque dur, il faut avant tout vérifier que vous en possédez bien une. Pour ma part, ma partition d'échange a une taille de 4,7 Go, soit un peu plus que la quantité de mémoire vive. Généralement, je recommande d'allouer au moins la taille de la RAM en swap.

Si vous n'avez pas de partition d'échange, commencez par en créer une.

Configuration de Grub

Commencez par ouvrir le fichier /etc/default/grub. Il s'agit du fichier utilisé par le programme de génération de la configuration de grub. Vous devriez y trouver la ligne ci-dessous (chez moi, il se trouve à la ligne 4) :

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

Ajoutez simplement après quiet ceci : resume=/chemin/vers/le/swap. Chez moi, la ligne ressemble donc à ceci (sda6 étant le nom donné par mon système à la partition d'échange) :

GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/sda6"

Enregistrez et fermez, puis lancez la commande suivante pour générer la nouvelle configuration de Grub :

bash sudo grub-mkconfig -o /boot/grub/grub.cfg

Configuration du noyau

La deuxième étape consiste à ajouter un greffon (hook) au noyau afin de lui permettre de récupérer d'une hibernation.

Ouvrez le fichier /etc/mkinitcpio.conf et recherchez la ligne commençant par HOOKS=. Chez moi, elle se trouve à la ligne 52 et a pour valeur la chaîne suivante :

HOOKS="base udev autodetect modconf block filesystems keyboard fsck"

Ajoutez simplement resume dans cette chaîne. Attention, ce greffon doit être positionné après le greffon udev !

Voici ma ligne modifiée :

HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"

Enregistrez et fermez. Il ne reste plus qu'à reconstruire l'initramfs pour prendre en compte le changement, et le tour est joué :

sudo mkinitcpio -p linux

Voilà, désormais, votre Arch Linux est capable d'hiberner et de sortir de son hibernation correctement ! 🙂

Jérôme Deuchnord, le 06/11/2016