L'hibernation n'est pas une chose facile à mettre en œuvre. En fait, Apple n'a implémenté l'hibernation sur leurs Mac qu'en 2005 (source), 5 ans après que Windows ME ait officiellement introduit l'hibernation en 2000, bien que Windows 95 et 98 le supportaient si le fabricant fournissait des pilotes matériels spécifiques (source).
Fondamentalement, le fonctionnement de l'hibernation implique que le noyau mette tous les processus en veille, décharge le contenu de la RAM sur le disque, puis éteigne l'ordinateur. Ensuite, lorsque l'ordinateur est rallumé, le contenu du vidage mémoire sur le disque est rechargé dans la RAM, puis les processus sont relancés.
Toute cette procédure est pleine de problèmes. Par exemple, que se passe-t-il si l'ordinateur est mis en hibernation lorsque le tampon du système de fichiers n'est pas synchronisé avec le disque, et que vous démarrez un autre OS en redémarrant l'ordinateur? Eh bien, voilà comment vous obtenez l'erreur "La partition NTFS est dans un état non sécurisé" lors du dual-boot de Linux avec une installation Windows qui a été mise en veille ou avait activé le "démarrage rapide".
Pour compliquer encore les choses, tandis que l'implémentation actuelle de l'hibernation sur Windows crée un fichier hiberfile.sys
sur votre disque C:\
pour stocker le vidage mémoire, l'implémentation actuelle de l'hibernation sur Ubuntu nécessite une partition swap. Cependant, comme la configuration de la partition swap dépend des choix de l'utilisateur lors de l'installation, certains utilisateurs pourraient créer une partition swap de taille insuffisante pour contenir le vidage RAM, ou d'autres pourraient choisir de ne pas utiliser du tout de partition swap!
Une autre chose à considérer est que l'hibernation peut prendre du temps. Ceci est particulièrement vrai si vous disposez d'un ordinateur puissant avec beaucoup de RAM. Par exemple, j'ai 24 Go de RAM, et en supposant un taux de vidage constant sur le disque à 120 Mo/s, cela prendrait plus de 3 minutes pour effectuer l'hibernation. Sans parler du temps équivalent nécessaire pour la reprise. À ce stade, il faudrait autant de temps pour éteindre et redémarrer.
Bien sûr, l'hibernation et la reprise de l'hibernation seraient beaucoup plus rapides si vous avez un SSD. Cependant, décharger 24 Go sur votre SSD à plusieurs reprises ne sera pas favorable à sa durée de vie, car la mémoire flash NAND dans le SSD ne peut supporter qu'un nombre limité de cycles d'effacement-programmation avant de commencer à se dégrader.
En fin de compte, je pense que la réponse à la complexité de l'hibernation sur Ubuntu peut se résumer comme suit:
-
Le processus technique réel de l'hibernation et de la reprise est très compliqué et "là se cachent les dragons"
-
Ce n'est pas une fonctionnalité très demandée (par exemple, je pense que beaucoup d'autres personnes, comme moi, préféraient voir, par exemple, Wayland (remplacement de X11) terminé plutôt que d'avoir l'hibernation.
-
Je suppose un peu ici, mais je vais prendre un risque et dire que les pilotes pour les GPU et autres périphériques doivent probablement être spécifiquement écrits avec l'hibernation à l'esprit.