Um das Arch Linux System in den Hibernate-Zustand versetzen zu können benötigt das System ein paar kleine Änderungen. Der RAM-Inhalt wird dabei in den Swap-Speicher geschrieben.
Punkt 1: Resume Swap Partition
Zuerst bestimmen wir die Swap Partition, die wir für das Aufwachen des Systems benötigen.
Wichtig: Die Swap Partition sollte die Größe des Arbeitsspeichers haben.
1 2 3 |
# blkid | grep -i swap /dev/sda2: LABEL="swap1" UUID="11f42b7c-2cb1-48cb-a630-f11352e539b4" TYPE="swap" PARTUUID="cefc7c92-02" /dev/sdb2: LABEL="swap2" UUID="f00fb402-8406-46c2-82fd-e84955fdb013" TYPE="swap" PARTUUID="00069df6-02" |
Nun fügen wir die Swap Partition unserem GRUB Bootloader hinzu.
1 |
GRUB_CMDLINE_LINUX_DEFAULT="resume=LABEL=swap1" |
Punkt 2: HOOK hinzufügen und Initrd neu erstellen
Jetzt fügen wir resume an die korrekte stelle hinzu, noch vor filesystems.
1 |
HOOKS="base udev autodetect block mdadm_udev keyboard keymap resume filesystems fsck" |
Die Initrd kann nun neu erstellt werden.
1 |
# mkinitcpio -p linux |
Punkt 3: Hibernate und Suspend für Benutzer erlauben
Damit auch Benutzer das System in den Hibernate und Suspend Zustand versetzen können, muss dies bei laufendem Polkit Dienst erst freigegeben werden.
Sehr praktisch wenn XBMC Standalone als Benutzer läuft.
Diese Fehlermeldung erscheint bei Standard Polkit Einstellungen.
1 2 3 4 5 |
% systemctl hibernate -i ==== AUTHENTICATING FOR org.freedesktop.login1.hibernate === Authentication is required for hibernating the system. Authenticating as: testuser |
Wir legen also eine neue Polkit Regel an /etc/polkit-1/rules.d/10-enable-suspend.rules
.
1 2 3 4 5 6 7 8 |
polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.login1.suspend" || action.id == "org.freedesktop.login1.suspend-multiple-sessions" || action.id == "org.freedesktop.login1.hibernate" || action.id == "org.freedesktop.login1.hibernate-multiple-sessions") { return polkit.Result.YES; } }); |
Nach einem Neustart von Polkit dürfen nun auch Benutzer das System in Hibernate oder Suspend versetzen.
1 |
# systemctl restart polkit.service |
Dieses Tutorial sollte bei anderen Systemd Betriebssystemen wie Fedora ebenfalls so umsetzbar sein.
0