Activer l'hibernation sous Debian 12

Tags: #<Tag:0x00007f71417b7ed8>

Bonjour,

Je suis depuis un moment sur Debian 12 avec KDE et j’aimerais que mon laptop entre en hibernation plutôt que la veille quand je rabats l’écran pour pas qu’il ne vide sa batterie tout seul.

J’ai donc agrandi la taille de mon swap pour qu’il devance celle de la RAM, j’ai bien ajouté resume=UUID=<UUID>dans /etc/default/grub à la ligne GRUB_CMDLINE_LINUX_DEFAULT et enfin j’ai bien référencer mon UUID à /etc/initramfs-tools/conf.d/resume.

Après avoir mis à jour le tout et redémarrer, j’ai toujours:

(base) root@F13-Debian-Gabriel:/home/gabriel# systemctl hibernate
Call to Hibernate failed: Sleep verb "hibernate" not supported

Je sèche un peu sur ce que je peux faire d’autre.

Merci d’avance pour votre aide.

Et si tu ne mets rien dans grub?
Sans rien changer à ma conf, j’ai tapé systemctl hibernate et ça a marché.
par contre 9Go de swap pour 8Go de ram ça a bloqué

J’ai ressayé avec la configuration initiale, mais toujours rien. En lisant ton message, j’ai encore un peu agrandi mon swap, il est maintenant de 17,5 Go pour 16 Go de RAM. Mais toujours le même message d’erreur. Dois-je l’agrandir encore d’avantage ? Le message d’erreur me laisse plutôt penser que le noyau n’a pas été compilé de façon à supporter l’hibernation ou que la configuration pour est incomplète. En tout cas, il ne précise rien à propos de la taille du swap.

merci pour ta réponse en tout cas.

Quand tu dis que tu as mis à jour le tout, tu parles de update-grub ?

Sinon, que contient le fichier /etc/systemd/sleep.conf ?

Quand je parle de tout mettre à jour, je parle des commandes update-grub && update-initramfs -u
Voici le fichier sleep.conf:

[Sleep]
#AllowSuspend=yes
#AllowHibernation=yes
#AllowSuspendThenHibernate=yes
#AllowHybridSleep=yes
#SuspendMode=
#SuspendState=mem standby freeze
#HibernateMode=platform shutdown
#HibernateState=disk
#HybridSleepMode=suspend platform shutdown
#HybridSleepState=disk
#HibernateDelaySec=
#SuspendEstimationSec=60min

Tout est commenté.

chez moi pareil le fichier /etc/systemd/sleep.conf est vide
mais le fichier propose
man 5 systemd-sleep.conf

j’ai essayé sur plusieurs ordis : pas de problème juste avec la commande systemctl hibernate

je peux te conseiller de

  • que donne systemctl status hibernate.target ?
    chz moi :
    hibernate.target - System Hibernation
    Loaded: loaded (/lib/systemd/system/hibernate.target; static)
    Active: inactive (dead)
    Docs: man:systemd.special(7)

  • vérifier si les fonctionnalités du cpu le permette ( je n’y connais pas grand chose ) :
    L’hibernation est supportée si l’option de configuration du noyau CONFIG_HIBERNATIONest fixée. Cependant, cette option peut seulement être fixée si le support for l’architecture du CPU inclue le code de bas -niveau for le redémmarage du système. ( Hibernation is supported if the CONFIG_HIBERNATION kernel configuration option is set. However, this option can only be set if support for the given CPU architecture includes the low-level code for system resume. )
    D’après System Sleep States — The Linux Kernel documentation

-* que donne sudo find /[a-gi-ln-z]* -type f -name "*ko" |egrep " hibernate.ko|cpu.ko|swsusp.ko|swsusp_85"
d’après config_hibernation - kernelconfig.io

-* comme je n’y connais pas grand chose dessus, je peux te conseiller d’installer les programmes système et les firmware de cette page :

-* solution supplémentaire sans certitude : préparer un nouveau noyau pour voir les optioons existantes

sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev
mkdir -p LINUX6.1
cd LINUX6.1
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.tar.xz
tar -xvf linux-6.1.tar.xz
cd linux-6.1
make menuconfig

aller sur la ligne power managment
et regarder si l’option hibernation est autorisée
PS : je ne sais pas si elle est autorisée à l a compilation même si l’ordi ne l’autorise pas

Pas besoin des deux, c’est l’un ou l’autre. La ligne de commande du noyau est prioritaire sur la configuration de l’initramfs.

Le swap est-il activé ?

cat /proc/swaps

Le secure boot UEFI est-il activé ? C’est actuellement incompatible avec l’hibernation (en attendant l’intégration avec le TPM qui permettra de valider le swap, si j’ai bien compris).

mokutil --sb-state
1 J'aime

héhé :slight_smile:

gabriel@F13-Debian-Gabriel ~> sudo swapon --show
NAME           TYPE       SIZE USED PRIO
/dev/nvme0n1p2 partition 17,5G   0B   -2

Oui, si je ne m’en étais pas aperçu après tout ce temps, je passerais pour qui ;-).

J’ai désactivé le secure boot du bios et cela fonctionne désormais.
Au final, c’était assez bête, j’aurais dû y penser pour des choses telles que l’hibernation.

Merci beaucoup.

2 J'aime

Lorsqu’on agrandit le swap, ce qui implique de le reformater, il peut arriver que son UUID change et ne corresponde plus à celui enregistré dans les différents fichiers de configuration.

Pas forcément. L’incompatibilité entre le secure boot et l’hibernation n’a rien d’évident a priori, même si c’est logique a posteriori.

Bonjour, ton sleep.conf doit ressembler a ceci :
[Sleep]
AllowSuspend=yes
AllowHibernation=yes
AllowSuspendThenHibernate=yes
AllowHybridSleep=yes
SuspendMode=suspend
SuspendState=mem
HibernateMode=platform
HibernateState=disk
HybridSleepMode=suspend
HybridSleepState=disk

Ça a été le cas, cela génère un blocage au démarrage du système, donc je m’en suis tout de suite aperçu. Il a fallu mettre à jour l’UUID dans fstab et réactiver le swap ensuite.

J’aimerais l’avis de tous sur cette question car mon sleep.conf est vide

$ cat /etc/systemd/sleep.conf  |grep -v "^#"

[Sleep]

mais l’hibernation marche avec la commande systemd hibernate

Met ça dedans

[Sleep]

AllowSuspend=yes
AllowHibernation=yes
AllowSuspendThenHibernate=yes
AllowHybridSleep=yes
SuspendMode=suspend
SuspendState=mem
HibernateMode=platform
HibernateState=disk
HybridSleepMode=suspend
HybridSleepState=disk

Mais si ça marche sans ne touche à rien

A mon avis il n’est pas vide, mais toutes ses lignes sont commentées, comme le mien, ce qui implique d’appliquer les valeurs par défaut des paramètres, je suppose:

[Sleep]
#AllowSuspend=yes
#AllowHibernation=yes
#AllowSuspendThenHibernate=yes
#AllowHybridSleep=yes
#SuspendMode=
#SuspendState=mem standby freeze
#HibernateMode=platform shutdown
#HibernateState=disk
#HybridSleepMode=suspend platform shutdown
#HybridSleepState=disk
#HibernateDelaySec=
#SuspendEstimationSec=60min
1 J'aime

Bonjour, apparemment l’hibernation est de base désactivé dans Debian et même absente sur Ubuntu. En modifiant grub, ,/etc/initramfs-tools/conf.d/resume et /etc/systemd/sleep.confmon Debian se met en hibernation …

Mon avis est que @yeghia ne maîtrise pas son sujet.

Pas du tout. L’hibernation fonctionne de base sur mes machines Debian sans modifier la configuration. Il faut seulement que le swap ait une taille suffisante, or le partitionnement assisté de l’installateur Debian crée par défaut un swap de 1 Go maximum souvent insuffisant pour les machines et systèmes actuels qui ont plus de mémoire. Un effort est en cours pour supprimer ou relever cette limite aberrante dans la prochaine version.

C’est son problème. Quand on utilise un fichier de swap, qui complique l’hibernation, au lieu d’une partition, il ne faut pas s’étonner.

J’ai juste partagé mon expérience, et chez moi ça fonctionne qu’après ces manipulation.
C’est pas grave je vais visionner stargate atlantis …