ubuntuusers.de

Ruhezustand

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

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

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 geöffnet 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ührt.

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. 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.

Hat man ein Swapfile, ermittelt man außerdem den sogenannten "Offset". Markiert ist im folgenden der Wert, der später benötigt wird[2][3]:

sudo filefrag -v /swapfile | head 

Filesystem type is: ef53
File size of /swapfile is 21474836480 (5242880 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:   62253056..  62253056:      1:            
   1:        1..    6143:   62253057..  62259199:   6143:             unwritten

Ermitteln der Root UUID für Swap-Datei

sudo findmnt -no SOURCE,UUID -T /swapfile 

Ermitteln der UUID für Swap-Partition

ls -l /dev/disk/by-uuid | grep swap 

Installation

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

  • hibernate

  • uswsusp

Paketliste zum Kopieren:

sudo apt-get install hibernate uswsusp 

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

Einrichtung

Damit das System beim Aufwachen aus dem Ruhezustand den letzten Zustand wiederherstellen kann ("resume"), muss es wissen, wo dieser gespeichert ist. Dazu erweitert man mit Root-Rechten[3] die Datei /etc/default/grub[5].

Achtung!

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

Außerdem erstellt man die Datei /etc/initramfs-tools/conf.d/resume und hinterlegt dort dieselben Informationen. Das Vorgehen wird im folgenden gezeigt:

/etc/default/grub

mit Swap-Partition

Hier wird die UUID der Swap-Partition angegeben:

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

mit Swap-Datei

Hier wird die UUID der ermittelten root Partition und der Wert aus dem Offset des swapfile ergänzt:

GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=<DIE UUID DER ROOT-PARTITION> resume_offset=62253056"

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

mit Swap-Partition

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

mit Swap-Datei

RESUME=UUID=<UUID-DER-ROOT-PARTITION> resume_offset=62253056

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.

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 -reiber verwendet werden und das Aufwachen aus dem Hibernate funktionieren.

Diese Revision wurde am 15. Februar 2020 14:32 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: hibernate, System, Shell, Energie