Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

Wenn es um den Ruhezustand bei Computern geht, kann zwischen zwei Arten unterschieden werden: „Suspend to RAM“ und „Suspend to Disk„. Während bei „Suspend to RAM“ (im Folgenden nur „Suspend„) ein Abbild des laufenden Systems in den Arbeitsspeicher geschrieben wird, wird dieses Abbild bei „Suspend to Disk“ (im Folgenden „Hibernate„) auf die Festplatte geschrieben. Der große Vorteil von Hibernate ist: Auch, wenn der Strom ausfällt – zum Beispiel durch einen versehentlich gezogenen Netzstecker oder einen leeren Akku – bleiben die Daten erhalten. Die Festplatte behält die Daten schließlich auch ohne Stromversorgung, während der RAM seinen Inhalt bei Energiemangel verliert.

Hibernate ist also immer dann vorzuziehen, wenn ein Computer längere Zeit in den Schlaf geschickt werden soll und die Energieversorgung möglicherweise nicht stabil bleibt. Der Nachteil hierbei: Beim nächsten Start kann das Systemabbild nicht aus dem extrem schnellen RAM gelesen werden (wie beim einfachen Suspend), sondern muss vom der Festplatte geholt werden. Das dauert je nach Leistung der Festplatte etwas länger. Bei modernen SSDs fällt dieser Nachteil jedoch nicht mehr so sehr ins Gewicht.

Eine Kombination aus Suspend und Hibernate ist übrigens auch möglich – dazu mehr am Ende des Beitrags.

Maximale Image Größe festlegen

Das Systemabbild wird beim Hibernate-Modus entweder auf die Swap-Partition geschrieben oder in ein Swapfile. In dieser Anleitung soll die Swap-Partition genutzt werden. Der Swap-Speicher darf also nicht zu klein sein, damit das Abbild dort abgelegt werden kann. Eine Swap-Partition, die genauso groß ist wie der RAM, ist jedoch völlig ausreichend.

Über die Datei /sys/power/image_size kann die maximale Größe des Systemabbilds festgelegt werden. Standardmäßig ist dort als Größenlimit 2/5 des RAM Speichers voreingestellt. Falls das nicht ausreicht, kann das Limit selbstverständlich nach oben korrigiert werden. In den meisten Fällen ist das aber ausreichend.

Wer das Image gerne möglichst klein hätte, kann in die image_size Datei eine „0“ schreiben: Das Abbild wird dann so klein wie möglich gehalten.

sudo echo 0 > /sys/power/image_size

Neuen Kernel Parameter setzen

Damit Hibernate funktionieren kann, muss dem Kernel beim Start noch eine Einstellung „resume“ mitgegeben werden. Diese enthält den Pfad zur Swap-Partition, wo das Image liegt. Die Zeile „GRUB_CMDLINE_LINUX_DEFAULT=“ […]“ in der /etc/default/grub wird folgendermaßen erweitert: (Pfad zur Swap-Partition anpassen!)

GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda2"

Ich nutze eine LUKS Festplattenverschlüsselung, deshalb sind in meiner Konfiguration schon einige Einstellungen vorhanden. Dazu kommt noch, dass der Pfad zu meiner Swap-Partition wegen LUKS und LVM anders heißt. In meinem Fall sieht die Konfigurationszeile so aus:

GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/sda4:main:allow-discards resume=/dev/mapper/main-swap lang=de locale=de_DE.UTF-8 add_efi_memmap"

Um die neue GRUB Konfiguration zu übernehmen, wird ein

sudo grub-mkconfig -o /boot/grub/grub.cfg

ausgeführt.

Initramfs Hook ergänzen

In die Zeile „HOOKS=[…]“ in der Datei /etc/mkinitcpio.conf muss „resume“ hinzugefügt werden. In meinem Fall sieht das so aus:

HOOKS="base udev autodetect modconf block filesystems keyboard keymap encrypt lvm2 fsck resume"

Danach wird das initrd image neu erzeugt:

sudo mkinitcpio -p linux

Hibernate testen

Das System muss jetzt neu gestartet werden, damit Hibernate ab dem nächsten Start zur Verfügung steht.

Nach dem Neustart könnte ihr Hibernate testen:

systemctl hibernate

Der Rechner sollte sich nach einer kurzen Wartezeit ausschalten und beim nächsten Start den Desktop vollständig wiederherstellen.

Suspend und Hibernate kombinieren

Die beiden Modi Suspend und Hibernate lassen sich kombinieren. Das macht Sinn, wenn man auf den schnellen Suspend-Modus nicht verzichten will und keine Daten verloren gehen sollen, falls die Stromversorgung doch einmal wegbricht. Beim Aufwachen wird standardmäßig Suspend genutzt und das Systemabbild aus dem schnellen RAM wiederhergestellt. Sollte das nicht möglich sein, wird auf Hibernate und das Abbild im Swap zurückgegriffen.

Für die Kombination aus beiden Modi muss nichts weiter eingerichtet werden. Mit einem

systemctl hybrid-sleep

wird der Rechner über den Hybrid-Modus in den Schlaf versetzt. Hierbei werden sowohl Suspend als auch Hibernate aktiv.

Der Ausschaltvorgang dauert hier genauso lange wie beim reinen Hibernate-Modus, schließlich muss ja ein Abbild auf die Festplatte geschrieben werden. Das Aufwachen passiert jedoch extrem schnell, da hierfür normalerweise der Suspend-Modus genutzt werden kann und die Daten aus dem RAM geladen werden. Sollte das aus irgendwelchen Gründen nicht möglich sein, wird auf das langsamere Hibernate zurückgegriffen.

Hibernate für den GNOME Desktop

Ein Button mehr …

Leider unterstützt der GNOME Desktop den Hibernate-Modus nicht out-of-the-box.

Abhilfe schafft hier die Gnome Shell Extension „Hibernate Status Button, die einen zusätzlichen Hibernate-Button in das Gnome Menü integriert.

Sogar der Hybrid-Modus wird von der Erweiterung unterstützt. Dieser wird durch gleichzeitiges Drücken der ALT-Taste beim Klicken aktiviert.

Standards für Hardware-Aktionen festlegen

In der Konfigurationsdatei /etc/systemd/logind.conf können die Aktionen festgelegt werden, die z.B. beim Schließen des Laptop-Deckels oder beim Drücken des Power-Buttons ausgeführt werden sollen. Für den Laptopdeckel ist die Einstellung „HandleLidSwitch“ verantwortlich.

Mögliche Aktionen sind z.B. ignore, poweroff, suspend, hibernate, hybrid-sleep und lock.

Mit einem Neustart des Systemd Login-Daemons werden die Änderungen übernommen:

sudo systemctl restart systemd-logind

Post published on 24. September 2014 | Last updated on 24. September 2014
Tags:           

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

5 thoughts on “Arch Linux: Suspend to disk (Hibernate) aktivieren

  • Super Anleitung! Habe mich durch drei Blog Posts gekämpft. sudo grub-mkconfig -o /boot/grub/grub.cfg hat auf jeder anderen seite gefehlt….

  • Macht das Sinn eine verschlüsselte Maschine in den Suspend to Disk zu fahren?
    Bei Diebstahl würde der Rechner mit unverschlüsselten Laufwerken starten oder?

    Oder wird nach Stromausfall das Passwort neu abgefragt?

    • Solange deine SWAP-Partition ebenfalls verschlüsselt ist, ist dein Rechner bei einem Suspend to Disk sicher. Beim Aufwachen wird das Passwort erneut abgefragt. Gefährlich ist es, wenn deine SWAP Partition nicht verschlüsselt ist, denn bei Suspend To Disk wird der Inhalt des Arbeitsspeichers (wo der Key für die Festplattenentschlüsselung liegt) auf die Festplatte geschrieben. Man könnte die Festplatte ausbauen, aus der unverschlüsselten SWAP Partition das RAM Image auslesen, daraus den Key auslesen und dann auch den Rest der Festplatte entschlüsseln.

      Nach einem Stromausfall (=> RAM und damit der Key bleibt nicht erhalten) muss der Key neu eingegeben werden.

      LG Thomas

  • Danke für deine Erklärung.
    Swap liegt in der LVM2 mit Root und Home.
    Dann ist der Hybrid Modus eigentlich genial.
    Kein Datenverlust bei Stromausfall.
    Versuche hier unserem Heim Server das Stromsparen beizubringen. Suspend to RAM geht.
    Verbraucht dann nur 3.5-4 Watt.
    Mal sehen ob ich das Auto Suspend Script von Ubuntu an die Opensuse anpassen kann.
    https://wiki.ubuntuusers.de/Skripte/AutoSuspend

  • Danke!
    Habe danach so lang gesucht. Alle Artikeln auf Englisch waren nicht so hilfreich. Endlich habe ich Hibernation in Gnome!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.