ubuntuusers.de

Ruhezustand

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Vom Ruhezustand spricht man, wenn der Zustand eines laufenden Systems "eingefroren" und das Betriebssystem anschließend heruntergefahren wird. Nach einem erneuten Start des Systems wird der vorherige Zustand 1:1 wiederhergestellt - als wäre das System gar nicht beendet worden. Das heißt zum Beispiel, dass alle geöffneten Fenster und Programme wieder offen sind.

Andere Begriffe sind hibernate (deutsch: "Winterschlaf") oder suspend-to-disk (in etwa: "den Betrieb vorübergehend unterbrechen, indem der Zustand auf die Festplatte geschrieben wird").

Im Gegensatz zum "Bereitschaftsmodus" (englisch: sleep) wird im Ruhezustand keine Energie benötigt.

Grundsätzlich kann der Rechner auch via systemd über den Befehl sudo systemctl hibernate[2][3] in den Ruhezustand versetzt werden. Dies funktioniert aber in vielen Fällen nicht, so dass das folgende Vorgehen notwendig ist bzw. zum Erfolg führen kann.

Vorbereitung

Da beim Ruhezustand der Zustand des Arbeitsspeichers in den Swap-Bereich[4] geschrieben wird, muss ein solcher existieren und ausreichend groß sein. Am einfachsten ist die Erreichung des Ruhezustandes mit einer Swap-Partition, es geht aber auch mit einer Swap-Datei (swapfile). Man muss also zunächst herausfinden, wie der Swap-Bereich eingerichtet ist. Details findet man unter Swap (Abschnitt „Swap-ueberwachen“). Existiert kein Swap-Bereich, muss man einen anlegen.

Ermitteln der UUID für Swap-Partition

Zuerst muss für die swap-Partition die UUID ermittelt werden, z.B. im Terminal über den Befehl:

lsblk -o NAME,UUID,FSTYPE,SIZE,LABEL,MOUNTPOINT 

Die aktive swap-Partition ist die, die in der Ausgabe in der Spalte "MOUNTPOINT" mit "[swap]" gekennzeichnet ist. Ein Swap-Bereich im RAM wie z.B. zram0 etc. kann hier nicht verwendet werden.

Ermitteln der UUID für swapfile

Es muss von der swapfile die UUID ermittelt werden, z.B. im Terminal über den Befehl:

findmnt -no SOURCE,UUID -T /swapfile 

/dev/sdc1 28f75806-2cb1-4fe6-a6cb-bb39568138d9

Die UUID ist hier also die Zeichenkette "28f7...38d9".

Nun ermittelt man noch den sogenannten "Offset" des Swapfile. Markiert ist im Folgenden der Wert, der später benötigt wird[2][3]:

sudo swap-offset /swapfile 

resume offset =  21474836480

Installation

Für das Ausführen des Ruhezustands werden folgende Pakete benötigt[1]:

  • hibernate

  • uswsusp

Befehl zum Installieren der Pakete:

sudo apt-get install hibernate uswsusp 

Oder mit apturl installieren, Link: apt://hibernate,uswsusp

Achtung!

Wer zRam installiert hat, sollte jetzt noch uswsusp neu Konfigurieren ausführen, und dabei das richtige Volume auswählen. Sonst versucht uswsusp die RAM-Disk für den Ruhezustand zu verwenden, was dann logischerweise in die Hose gehen muss.

Einrichtung

Damit das System beim Aufwachen aus dem Ruhezustand den letzten Zustand wiederherstellen kann ("resume"), muss es wissen, wo dieser gespeichert ist. Dazu editiert man mit einem Editor mit Root-Rechten[3] die Dateien /etc/default/grub[5] und /etc/initramfs-tools/conf.d/resume.

Achtung!

Änderungen an den Konfigurationsdateien von GRUB können das System beschädigen. bei unsachgemäßen Einstellungen startet es ggf. nicht mehr richtig.

/etc/default/grub

mit Swap-Partition

Hier wird die UUID der Swap-Partition angegeben:

GRUB_CMDLINE_LINUX_DEFAULT="<bestehende Parameter> resume=UUID=<DIE UUID DER SWAP-PARTITION>"

Die evtl. schon bestehenden Parameter von GRUB_CMDLINE_LINUX_DEFAULT sollte man nicht löschen, sondern im Zweifelsfall mittels davor gesetztem # in einer Kommentarzeile parken.

mit swapfile

Hier wird die ermittelte Größe und der Wert aus dem Offset des swapfile ergänzt, sowie die ermittelte UUID:

GRUB_CMDLINE_LINUX_DEFAULT="<bestehende Parameter> resume=UUID=<DIE UUID DES swapfile> resume_offset=21474836480"

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

Wenn noch nicht vorhanden, muss man diese Datei mit Root-Rechten neu erstellen, und dann folgendes eintragen:

mit Swap-Partition

RESUME=UUID=<DIE UUID DER SWAP-PARTITION>

mit swapfile

RESUME=UUID=<DIE UUID DES swapfile> resume_offset=21474836480

Einlesen der Konfiguration

Jetzt müssen beide Einträge noch eingelesen werden:

sudo update-grub
sudo update-initramfs -u -k all 

Ruhezustand ausführen

Nun führt man den Ruhezustand aus mit

sudo hibernate 

Bei einem Neustart sollte das System zum vorigen Stand zurück kehren.

Alternativ findet man auf extensions.gnome.org 🇬🇧 mit dem Suchbegriff "Hibernate" einige Extensions, womit man z.B. eine Hibernate-Option ins Status-Menü aufnehmen kann.

Problembehebung

Bei einigen neueren Grafikkarten von AMD kann es zu Fehlern beim Aufwachen aus dem Hibernate kommen, da in den meisten Fällen der Radeon-Grafiktreiber als Standard verwendet wird.

Zur Überprüfung, welcher Grafiktreiber verwendet wird, gibt man folgendes in ein Terminal ein

lspci -nnk | grep -A4 "\[03..\]:"  

Sollte die Ausgabe so aussehen

Kernel driver in use: radeon
Kernel modules: radeon, amdgpu

Hier wird der radeon-Treiber verwendet ("Kernel driver in use") aber es kann auch der amdgpu-Treiber (siehe Grafikkarten/AMD) verwendet werden ("Kernel modules").

Um den amdgpu-Treiber zu verwenden ist folgender Eintrag in der GRUB 2/Konfiguration /etc/default/grub mit einem Editor mit Root-Rechten zu bearbeiten.

GRUB_CMDLINE_LINUX="radeon.si_support=0 radeon.cik_support=0 amdgpu.si_support=1 amdgpu.cik_support=1" 

Änderung speichern und Grub neu einlesen mit

sudo update-grub 

Nach einem Neustart sollte der amdgpu -Treiber verwendet werden und das Aufwachen aus dem Hibernate funktionieren.

System schaltet beim Runter fahren nicht ab

Es kann vorkommen, dass das System nicht ganz abschaltet, was dazu führt, dass der Akku sich entlädt bzw. ein Desktop PC die ganze Zeit Strom verbraucht.

Eine mögliche Lösung ist die Datei /etc/hibernate/tuxonice.conf mit einem Editor mit Root-Rechten zu bearbeiten. Aus der Zeile

PowerdownMethod 5

ist dazu die Raute zu entfernen.

System zeigt nur ein schwarzes Bild beim Start

Es kann vorkommen das das System nur einen Schwarzen Bildschirm anzeigt, obwohl alles in Ordnung ist. Die Ursache liegt meist an dem Eintrag quiet splash in der Datei /etc/default/grub. Eine mögliche Lösung ist die Datei mit einem Editor mit Root-Rechten zu bearbeiten. Beispiel

GRUB_CMDLINE_LINUX_DEFAULT="noplymouth resume=UUID=4478b4b2-2d23-475a-adaf-e34112ecff85"

Hierbei wird der Eintrag von quiet splash durch noplymouth ersetzt. Änderung speichern und Grub neu einlesen mit:

sudo update-grub 

System geht nicht in Ruhezustand mit einer Extension

simpler_off_menu.png
gnome-extension: Simpler Off Menu

Es kann vorkommen, dass das System zwar mit dem Befehl sudo hibernate in den Ruhezustand geht, aber dass trotzdem manche der Hibernate-Extensions von extensions.gnome.org 🇬🇧 nicht direkt funktionieren. Falls eine Situation vorliegt, wie z.B. dass das Swapfile zu klein ist (RAM-Größe hier im Bsp: 782912):

swapon -s 

Dateiname				Typ		Größe	Benutzt	Priorität
/swapfile                              	file    	1155228	0	-2
/dev/sda8                              	partition	9435132	0	-3

Beim Versuch, mit der Erweiterung in den Ruhezustand zu gehen, bekommt man mit journalctl -r z.B. folgende Meldung:

-- Logs begin at Fri 2020-04-24 08:39:32 CEST, end at Sun 2020-08-02 16:21:09 CEST. --
Aug 02 16:21:09 USER-ThinkPad-X1-Carbon-3rd systemd[1451]: gnome-launched-systemctl-3887.scope: Succeeded.
Aug 02 16:21:09 USER-ThinkPad-X1-Carbon-3rd gnome-shell[3887]: Failed to hibernate system via logind: Not enough swap space for hibernation
Aug 02 16:21:09 USER-ThinkPad-X1-Carbon-3rd systemd[1451]: Started Application launched by gnome-shell.
...

Eine Lösung ist z.B., das Swapfile zu löschen:

sudo swapoff /swapfile 

Dann muss man mit einem Editor mit Root-Rechten aus der Datei /etc/fstab die Zeile löschen, in der die Auslagerungsdatei eingetragen ist. Anschließend sind noch die folgenden Befehle auszuführen:

sudo rm /swapfile
sudo swapon  

Mit swapon -s wird bestätigt, dass nur noch die ausreichend große Swap-Partition benutzt wird. Nun kann man mit der Extension den Ruhezustand benutzen.

uswsusp neu Konfigurieren

Unter bestimmten Umständen kann es erforderlich sein, die Swap Konfiguration neu einzulesen. Dazu gibt man Folgendes in ein Terminal ein:

sudo dpkg-reconfigure -pmedium uswsusp 

Bei der folgenden Abfrage "Ohne einen gültigen Swap-Bereich fortfahren?" sollte man "nein" wählen.

Die nächste Abfrage, von wo das System aufgeweckt werden soll, wird mit der "/dev/disk/by-uuid" gewählt - auch wenn man eine swapfile hat!

Die letzte Frage, ob der Schnappschuss verschlüsselt werden soll, sollte mit "nein" beantwortet werden. Ansonsten wird beim Aufwecken das Passwort verlangt.

Da dabei nur das initramfs des primären Kernels aktualisiert wird, ist es ratsam, anschließend auch nochmal folgendes auszuführen:

sudo update-initramfs -u -k all 

Diese Revision wurde am 3. Oktober 2021 22:34 von UlfZibis erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Energie, hibernate, Shell, System