[[Vorlage(Getestet, bionic focal)]] {{{#!vorlage Hinweis Die in diesem Artikel verwendeten Methoden sind veraltet. Die benötigten Pakete stehen bei Ubuntu 22.04 LTS und neuer nicht mehr zur Verfügung. Die Funktionalität des Ruhezustands ist im Linux-Kernel selbst eingebaut und wird über [:systemd:] gesteuert, somit benötigt man bei aktuellen Ubuntu-Betriebssystemen auch keine weitere Software zur Nutzung des Ruhezustandes. }}} {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:Swap:] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(3)]] Vom [wikipedia:Ruhezustand:] spricht man, wenn der Zustand eines laufenden Systems "eingefroren" und das Betriebssystem anschließend [:Herunterfahren: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/#Swap-ueberwachen:]. Existiert kein Swap-Bereich, muss man einen [:Swap/#Swap-anlegen:anlegen]. == Ermitteln der UUID für Swap-Partition == Zuerst muss für die swap-Partition die [:UUID/#UUIDs-anzeigen:UUID ermittelt] werden, z.B. im Terminal über den Befehl: {{{#!vorlage 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: {{{#!vorlage 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]: {{{#!vorlage Befehl sudo swap-offset /swapfile}}} {{{resume offset = [mark]21474836480[/mark]}}} Das Programm '''swap-offset''' ist im Paket '''uswsusp''' enthalten, welches für diesen Test installiert sein muss. = Installation = Für das Ausführen des Ruhezustands werden folgende Pakete benötigt[1], welche nur bis Ubuntu 20.04 verfügbar sind: {{{#!vorlage Paketinstallation hibernate uswsusp }}} {{{#!vorlage Warnung Wer [:zRam:] installiert hat, sollte jetzt noch [:Ruhezustand/#uswsusp-neu-Konfigurieren: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'''. {{{#!vorlage Warnung Änderungen an den Konfigurationsdateien von [:GRUB_2/Konfiguration: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=" resume=UUID=" }}} 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=" resume=UUID= resume_offset=[mark]21474836480[/mark]" }}} == /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= }}} === mit swapfile === {{{ RESUME=UUID= resume_offset=[mark]21474836480[/mark] }}} = Einlesen der Konfiguration = Jetzt müssen beide Einträge noch eingelesen werden: {{{#!vorlage Befehl sudo update-grub sudo update-initramfs -u -k all }}} = Ruhezustand ausführen = Nun führt man den Ruhezustand aus mit {{{#!vorlage Befehl sudo hibernate }}} Bei einem Neustart sollte das System zum vorigen Stand zurück kehren. Alternativ findet man auf [https://extensions.gnome.org/ extensions.gnome.org] {en} 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 {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo update-grub }}} == System geht nicht in Ruhezustand mit einer Extension == {{{#!vorlage Tabelle [[Bild(simpler_off_menu.png)]] +++ gnome-extension: Simpler Off Menu }}} ### [[Vorlage(Bildunterschrift, simpler_off_menu.png, 250, "gnome-extension: Simpler Off Menu", right)]] Es kann vorkommen, dass das System zwar mit dem Befehl `sudo hibernate` in den Ruhezustand geht, aber dass trotzdem manche der Hibernate-Extensions von [https://extensions.gnome.org/ extensions.gnome.org] {en} nicht direkt funktionieren. Falls eine Situation vorliegt, wie z.B. dass das Swapfile zu klein ist (RAM-Größe hier im Bsp: 782912): {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo update-initramfs -u -k all }}} #tag: System, Shell, Energie, hibernate