Temps de lecture : 3 minutes
Publié le 06/11/2016.
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 :
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 ! :)