Hibernation programmé en ligne de commande

poweroff

Jusqu’à maintenant j’utilisais beaucoup la commande « shutdown -h +xx » qui permet de planifier l’extinction de la machine (ou xx est le temps en minute avant l’arrêt), par exemple pour regarder un film avant de dormir sans avoir à se relever pour éteindre la machine (étape obligatoire pour préserver le cycle de sommeil du geek du bruit, ou encore pour se soumettre au WAF). J’ai récemment trouvé le moyen de faire la même chose avec l’hibernation, l’intérêt est donc de retrouver sa session a l’identique le lendemain (tous les programmes en cours d’exécution) tout en réduisant la consommation et le bruit.

Hibernation

Il existe plusieurs mode d’hibernation à choisir selon les besoins et le type de machine (portable ou fixe) :

- Suspend to disk : l’état de la session actuelle est copié sur le disque dur (il est donc nécessaire d’avoir un peu d’espace disponible), le PC est totalement éteint et ne necessite pas d’alimentation. Au prochain démarrage le processus normal de boot se lancera (passage par grub etc…), et les données préalablement sauvegardé seront réutilisé pour restaurer l’état exacte de la session au moment de l’hibernation. Cette opération est réalisé par la commande pm-hibernate et prendra entre 10s et 45s (pour entrer ou sortir de l’hibernation).

- Suspend to ram : Les données sont copié dans la RAM, et le PC passe dans le mode de veille le plus profond (aucun ventillateur ne tourne, la machine est a première vu éteinte), l’alimentation est necessaire pour garder les données dans la ram. Attention à l’utilisation sur un portable, la batterie se videra après quelques jours. On utilisera cette fois la commande pm-suspend, qui necessitera 3s à 5s pour entrer ou sortir de l’hibernation.

- Hybrid suspend : Les deux modes sont combiné, l’état de la session est stocké a la fois sur le disque et dans la ram. Au réveil, si l’alimentation n’a pas été interrompu durant l’hibernation alors les donnés seront charger depuis la mémoire ram (en quelques seconde), sinon elles seront chargé depuis le disque dur (donc plus lent).

Planification

Dans mon cas, j’utiliserais la seconde solution. Reste a lancer la commande a une heure précise, sans sortir l’artillerie lourde. On va donc se pencher sur la commande « at » qui permet de réaliser exactement ce que l’ont veut. L’option -f permet de lire la (ou les) commande a executer depuis un fichier. Au final, on obtient quelque chose comme sa, (en admettant que le démon atd soit lancé) :

1
at now +30 minutes -f /home/user/hibernate.sh

ou le fichier /home/user/hibernate.sh contient la commande d’hibernation. Certains problèmes peuvent survenir lors de l’hibernation, ou du réveil. Je vous invite a consulter la page de manuel correspondant au commande utilisé, on y trouve une liste d’options qui permettrons de résoudre la plupart de vos soucis.

Répondre