Linux Mint Ruhezustand / Hibernation aktivieren

Veröffentlicht von

Hier eine Anleitung, wenn man bei Linux Mint oder bei Ubuntu Probleme mit dem Ruhezustand (Hibernation) hat.

  • Dieser Artikel ist nicht von mir – Quelle

Linux Mint 19 Tara (Ubuntu 18.04 Bionic), Linux Mint 19.1 Tessa (Ubuntu 18.04 Bionic), Linux Mint 19.2 Tina (Ubuntu 18.04 Bionic), Linux Mint 19.3 Tricia (Ubuntu 18.04 Bionic), Linux Mint 20 Ulyana (Ubuntu 20.04 Focal), Linux Mint 20.1 Ulyssa (Ubuntu 20.04 Focal), Linux Mint 20.2 Uma (Ubuntu 20.04 Focal), Linux Mint 20.3 Una (Ubuntu 20.04 Focal), Linux Mint 21 Vanessa (Ubuntu 22.04 Jammy), Linux Mint 21.1 Vera (Ubuntu 22.04 Jammy), Linux Mint 21.2 Victoria (Ubuntu 22.04 Jammy), Linux Mint 21.3 Virginia (Ubuntu 22.04 Jammy), Linux Mint 22 Wilma (Ubuntu 24.04 Noble)


Wenn man bei der Installation die Grösse der Swap Partition etwas grösser als die Grösse seines im Rechner verbauten Haupspeichers angelegt hat, (RAM +10%) kann man evtl. sein System in den Ruhezustand versetzen. Das bedeutet der gesammt Ist-Zustand des Rechners, wird auf die Festplatte geschrieben und der Rechner wird ausgeschaltet. (Hibernation). Es wird kein Strom mehr verbraucht, der Rechner ist Aus.

Anders als beim Breitschafts Modus (Standby) bei dem der Prozessor herunter getaktet wird, und der Speicher und andere Komponenten noch mit Strom versorgt werden.

Der Vorteil ist ein schnelleres Starten des Rechners und man findet sein System so wieder vor, wie man es verlassen hat.
Diese Anleitung ist nicht mit verschlüsselten Systemen getestet. (Warum sollte man auch ein OSS / system verschlüssen.)

Wenn nach Rückkehr aus Ruhezustand / Bereitschaft nur ein schwarzer Bildschirm mit Maus Cursor erscheint, kann es möglich sein, durch die blinde Eingabe des System Passwortes, wieder auf den Desktop zu kommen.

Ebenso kann auch ein Voll-Level Update des Systems helfen. Siehe Up to date

Auch ein Kernel update bringt häufig ein funktionierendes Bereitschaft und Ruhezustand. Siehe Kleine Tipps.
Sollte es weitere Probleme mit Bereitschaft / Ruhezustand geben, hilft oft ein BIOS / Firmware update des Rechners.


Unter Linux Mint ab 19.x (Tara, Tessa / Ubuntu 18.04) und folgende ist der Ruhezustand nicht immer aktiviert, da es leider Rechner gibt, bei denen es nicht funktioniert bzw. keine Swap Partition angelegt wurde.

Es muss eine eigene Swap Partition vorhanden sein. Mit der ab Linux Mint 19 (Tara) und folgende, automatisch angelegten Swapfile funktioniert es nicht und diese muss nach Erstellung einer Swap Partition aus der /etc/fstab entfernt werden.

Wie man eine Partition einfach in die fstab einbindet, findet sich unter Laufwerks-Mount.

Um zu Testen ob sich die eigene Hardware in den Ruhezustand versetzen lässt, gibt man im Terminal ein

Unter Mint ab 18.x (Systemd)

systemctl hibernate


und startet nach dem automatischen abschalten des Rechners wieder neu. Wenn alles nach dem aufwachen funktioniert, kann man die Funktion in das System integrieren.

Dazu öffnet man den Ordner /etc/polkit-1/localauthority/ als Sytemverwalter / Admin und öffnet den Unterordner 50-local.d/
und legt eine Datei mit folgendem Namen an, falls sie noch nicht vorhanden ist.

com.ubuntu.enable-hibernate.pklaCode-Sprache: CSS (css)


Dort fügt man folgenden Code ein und speichert die Datei.

[Re-enable hibernate by default]<br>Identity=unix-user:*<br>Action=org.freedesktop.upower.hibernate<br>ResultActive=yes<br><br>[Re-enable hibernate by default in logind]<br>Identity=unix-user:*<br>Action=org.freedesktop.login1.hibernate<br>ResultActive=yesCode-Sprache: HTML, XML (xml)


Nach anschliessendem Reboot, sollte Ruhezustand (Hibernation) im Beenden Dialog auftauchen.


Sollte das System ab Linux Mint 19.x (Tara, Tessa / Ubuntu 18.04) und folgende nicht aufwachen (kein resume aus hibernate) und stattdessen wird neu gebootet, muss die Swap Partitions UUID in die Grub Startdatei /etc/default/grub gesetzt werden.

Um die UUID der Swap Partition zu ermitteln.

sudo blkid | grep swap


Diese UUID sollte auch in der /etc/fstab stehen.

cat /etc/fstab | grep swap


Die so gefundene UUID wird in die Datei /etc/default/grub gesetzt, indem die angegebene vorhandene Zeile erweitert wird.

das sollte z.B. so aussehen. Die UUID natürlich durch die eigene ersetzen ;-)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Code-Sprache: JavaScript (javascript)

Anschliessend muss Grub noch neu geschrieben werden.

sudo update-grub


Ebenso sollte ab Linux Mint 19.x (Tara, Tessa / Ubuntu 18.04) und folgende, falls vorhanden, die nicht mehr benötigte resume datei entfernt werden. (Dies könnte auch den Start des Systems beschleunigen)

sudo rm /etc/initramfs-tools/conf.d/resume


Zu guter letzt noch ein

sudo update-initramfs -u -k all


Die Resume Partition wird dabei angezeigt, wenn die Eintragung in grub richtig gesetzt wurde.


Ab Linux Mint 22 (Ubuntu 22.04) sind weitere Schritte notwendig.

zuerst wird im Ordner /etc/tmpfiles.d/ eine neue leere Textdatei mit folgendem Namen und Inhalt angelegt.

hibernation_resume.confCode-Sprache: CSS (css)
# Path Mode UID GID Age Argument<br>w <a href="https://www.ehlertronic.de/typo3//sys/power/resume">/sys/power/resume</a> - - - - MAJ:MINCode-Sprache: HTML, XML (xml)


MAJ:MIN wird durch die mit

lsblk 


Rechts neben der Partitons Nummer stehenden Werte der Swap Partition ersetzt. z.B. 8:4

Zum Schluss muss noch das Paket polkitd-pkla

sudo apt-get install polkitd-pklaCode-Sprache: JavaScript (javascript)


installiert werden.

und nach einem Reboot sollte der Ruhezustand wieder funktionieren. Ich habe es nun ein paar mal erlebt, dass es erst nach dem zweiten Versuch, und danach dauerhaft funktioniert.

Um Programm Aktionen bei Ruhezustand  (Hibernate) / Bereitschaft (Standby / Sleep) und Rückkehr (Resume) ab Linux Mint 18 (Sarah) / Ubuntu 16.04 mit systemd zu realisieren, findet in den Kleinen-Tipps ein Beispiel .service Script.

Linux Mint Ruhezustand / Bereitschaft deaktivieren

Leider gibt es Hardware Konstellationen, bei denen Ruhezustand (Hibernate) oder Bereitschaft (Suspend) nicht richtig funktioniert.
Um diese Funktionen nun aus dem Beenden / Shutdown Menü zu entfernen, öffnet man wie oben beschrieben den Order

/etc/polkit-1/localauthority/50-local.d/ und bearbeitet die Datei com.ubuntu.enable-hibernate.pkla

Für Ruhezustand (Hibernation)
ändert man die Eintragung zu

[Re-enable hibernate by default]<br>Identity=unix-user:*<br>Action=org.freedesktop.upower.hibernate<br>ResultActive=no<br><br>[Re-enable hibernate by default in logind]<br>Identity=unix-user:*<br>Action=org.freedesktop.login1.hibernate<br>ResultActive=noCode-Sprache: HTML, XML (xml)


und für Bereitschaft (Suspend / Standby)
in einer neuen Datei, die angelegt werden muss,

com.ubuntu.enable-suspend.pklaCode-Sprache: CSS (css)


folgendes einfügen

[Re-enable suspend by default]<br>Identity=unix-user:*<br>Action=org.freedesktop.upower.suspend<br>ResultActive=no<br>ResultInactive=no<br>ResultAny=no<br><br>[Re-enable suspend by default in logind]<br>Identity=unix-user:*<br>Action=org.freedesktop.login1.suspend<br>ResultActive=no<br><br>[Disable suspend for all sessions (logind)]<br>Identity=unix-user:*<br>Action=org.freedesktop.login1.suspend-multiple-sessions<br>ResultActive=noCode-Sprache: HTML, XML (xml)


mit ResultActive=yes oder no kann man die Funktionen ein oder ausschalten.

Nach neuem Start des Rechners sollten die Funktionen nicht mehr im Beenden Menü auftauchen.

Aktionen bei Bereitschaft / Ruhezustand / aufwachen

Einen System Sleep / Resume Hook für Standby und Hibernate ist in den
kleinen Tipps beschrieben.

Sleep-Hybrid / Suspend-Hibernate-Hybrid

Unter Linux Mint ab 18.x (ubuntu 16.04) und folgende mit Systemd, ist Sleep/Suspend-Hybrid to Hibernate möglich.

Wenn das System in Bereitschaft (Sleep/Standby) geschickt wird, wird es mit der folgenden Konfiguration nach einstellbarer Zeit in Ruhezustand (Hibernate) versetzt und der Rechner dann ganz ausgeschaltet.
Das Script kann auch so konfiguriert werden, dass die Umstellung auf Hibernate nicht im AC/Netz Betrieb, sondern nur per Akku/Batterie erfolgt.

Bereitschaft und Ruhezustand müssen einwandfrei funktionieren.

Um Sleep-Hybrid zu realisieren muss eine Systemd Service Unit angepasst und eine neu erstellt werden.

Zuerst wird eine neue Service Unit mit Namen es-suspend-to-hibernate.service im Ordner /lib/systemd/system/ angelegt.

sudo -H xed /lib/systemd/system/es-suspend-to-hibernate.service


in den nun mit Administrator Rechten geöffneten System-Editor (unter Mint Xed) wird folgendes kopiert und gespeichert.

[Unit]<br>#ES-Seep-hibernate<br>#(c) 2017 E-Soft<br>#http://www.ehlertronic.de<br><br>Description=ES-Delayed hibernation trigger<br>Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279<br>Documentation=https://wiki.archlinux.org/index.php/Power_management<br>Before=suspend.target<br>Conflicts=hibernate.target hybrid-suspend.target<br>StopWhenUnneeded=true<br><br>[Service]<br>Type=oneshot<br>RemainAfterExit=yes<br>Environment="WAKEALARM=/sys/class/rtc/rtc0/wakealarm"<br>Environment="WAKETEMP=/tmp/waketmp.tmp"<br><br>#zeit bis hibernate aus suspend<br>Environment="SLEEPLENGTH=+2hour"<br><br>#Check ob Batt Betrieb. "BATTCHECK=1" hibernate nur bei Batterie (Akku) Betrieb<br>Environment="BATTCHECK=0"<br><br>#hibernate zeit zum testen<br>#Environment="SLEEPLENGTH=+1minute"<br><br>#check Batt und set RTC Timer<br>ExecStart=/bin/sh -c 'on_ac_power; BATTUSE=$?; echo "BATTCHECK="$BATTCHECK; echo "BATTUSE="$BATTUSE;\<br> if [ $BATTUSE -ne 0 ] || [ $BATTCHECK -eq 0 ]; then\<br>   echo -n "alarm set for "; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM;\<br>   date +%%s -d$SLEEPLENGTH | tee $WAKETEMP;\<br>   echo "SLEEPLENGTH="$SLEEPLENGTH;\<br> fi;'<br>#Nach aufwachen aus RTC awake<br>ExecStop=/bin/sh -c ' alarm=$(cat $WAKETEMP); now=$(date +%%s); calarm=$(($alarm+30));\<br> if [ "$now" -ge "$alarm" ] && [ "$calarm" -ge "$now" ]; then\<br>  echo "hibernate triggered";\<br>   sleep 5;\<br>    systemctl hibernate;\<br> else\<br>   echo "normal wakeup, not hibernating";\<br> fi;\<br> echo 0 > $WAKEALARM;\<br> echo 0 > $WAKETEMP;'<br><br>[Install]<br>WantedBy=sleep.targetCode-Sprache: HTML, XML (xml)

Die zweite Anpassung betrifft die vorhandene Service-Unit suspend.target. Dort wird unter [Unit] Requires=es-suspend-to-hibernate.service eingefügt und abgespeichert.

Requires=es-suspend-to-hibernate.service
sudo -H xed /lib/systemd/system/suspend.target


Dies sollte dann so aussehen

[Unit]<br>Requires=es-suspend-to-hibernate.service<br>Description=Suspend<br>Documentation=man:systemd.special(7)<br>DefaultDependencies=no<br>BindsTo=systemd-suspend.service<br>After=systemd-suspend.serviceCode-Sprache: HTML, XML (xml)


Kurze Erklärung zum Haupt Script es-suspend-to-hibernate.service.

Die Zeit bis zur Umschaltung in Hibernate lässt sich in
Environment=“SLEEPLENGTH=+2hour“ ändern..  z.B. „SLEEPLENGTH=+4hour“ 
zum Testen einfach die # vor #Environment=“SLEEPLENGTH=+1minute“ entfernen, dann wird nach 1 Minute umgeschaltet.

Ob ein Check ob im Batteriebetrieb stattfinden soll, wird mit Environment=“BATTCHECK=0″ oder Environment=“BATTCHECK=1″
gesetzt. Mit Environment=“BATTCHECK=1″ wird im AC/Netz/Strom Betrieb nicht in Hibernation (Ruhezustand geschaltet).

Bitte auf das Vorhandensein der Anführungszeichen am Anfang und am Ende des Parameters achten.

Die neue Service Unit muss nun in Systemd aktiviert werden.

sudo systemctl enable es-suspend-to-hibernate.serviceCode-Sprache: CSS (css)


und die Veränderung der vorhanden Unit muss dem System auch bekannt gemacht werden.
Dies ist auch notwendig wenn in den Scripten irgendetwas angepasst/verändert wurde

sudo systemctl daemon-reload


Zu guter letzt kann man sich den Status der neuen Unit ansehen, und schauen ob irgend etwas falsch läuft.

sudo systemctl status es-suspend-to-hibernate.serviceCode-Sprache: CSS (css)


Wenn alles richtig gemacht wurde, sollte das System nach Ablauf der angegebenen Zeit aufwachen, und in Ruhezustand gehen.

Achtung: Nach einem Update von Systemd könnte die Anpassung von suspend.target überschrieben werden, so das der Rechner nicht mehr in Hibernate geht und aufwacht. (resume aus standby) Somit nach einem Systemd update, kontrollieren ob die Anpassung noch vorhanden ist.

Ruhezustand mit Nano