Ruhezustand
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
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
Befehl zum Installieren der Pakete:
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.