Bereitschaft
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel konkretisiert einen Teil der Übersicht „Schlafender Rechner“[1].
Im Modus Bereitschaft (von dem es etliche Varianten gibt) ist der Zustand eines laufenden Systems eingefroren, und die CPU des Rechners arbeitet nicht. Möglicherweise sind auch Peripheriegeräte ausgeschaltet, aber der Arbeitsspeicher wird mit Energie versorgt und somit bleibt das vorläufige Arbeitsergebnis erhalten. Nach einem erneuten Einschalten des Rechners wird der vorherige Zustand 1:1 wiederhergestellt inklusive allen geöffneten Fenstern und laufenden Programmen.
Andere Begriffe sind Schlaf (im Sinne von Schlummern, nicht Tiefschlaf), Suspend (deutsch: Unterbrechung) oder Suspend-to-RAM (in etwa: „den Betrieb vorübergehend unterbrechen, und den Zustand im Arbeitsspeicher erhalten“). Auch die Bezeichnung Standby wird in diesem Zusammenhang verwendet und oft auch falsch verwendet; Standby ist ursprünglich eine von vier für ACPI definierten technisch unterscheidbaren Schlafzustanden (S1, S2, S3, S4), inzwischen eine Familie von Realisierungen des Modus Bereitschaft mit höchst unterschiedlichen Eigenschaften.
Im Gegensatz zum Modus Ruhezustand (englisch: Suspend-to-Disk) wird im Modus Bereitschaft Energie benötigt.
Installation¶
Es ist in der Regel nichts zu installieren. Die Funktionalitäten zum „System schlafen legen“ und „System aufwecken“ gehören zum Linux Kernel und sind in Ubuntu Kerneln auch aktiviert. Man kann es über eine zum Kernel gehörende Low-Level-Schnittstelle bedienen oder über eine High-Level Schnittstelle des Init-Systems systemd. Auch in jeder Desktop-Umgebung gibt es eine standardmäßig installierte mindestens teilweise Unterstützung zur Bedienung.
Die vielen verfügbaren erweiterten Bedienoberflächen können in diesem Artikel nicht alle behandelt werden, siehe GUI und hier für Hinweise.
Varianten der Bereitschaft¶
Gemäß der Übersicht[1] bietet der Linux Kernel – abhängig von den Möglichkeiten der vorliegenden Hardware – bis zu drei verschiedene Arten von Bereitschaft an. Man kann diese im Terminal[2] abfragen:
grep '' /sys/power/{state,mem_sleep}
Beispielausgabe:
/sys/power/state:freeze mem disk /sys/power/mem_sleep:s2idle [deep]
Tabelle 1: Mögliche Varianten für Bereitschaft | ||
Wort in | Möglicher Schlafzustand | |
state | mem_sleep | |
freeze | Entweder: S0-idle → Einfrieren Oder: S0ix → Modernes Standby | |
s2idle | ||
standby | S1 → Klassisches Standby | |
shallow | ||
mem | der in /sys/power/mem_sleep ausgewählte (d.h. in Klammern „[ ]“ stehende) Zustand | |
deep | S3 → Suspend-to-RAM | |
disk | S4, nach der in /sys/power/disk ausgewählten Methode. Das ist keine Bereitschaft im Sinne dieses Artikels, sondern die Alternative Suspend-to-Disk. |
Einfrieren¶
Dieser auch Suspend-to-Idle genannte Zustand ist einer von zwei möglichen Ergebnissen (der andere ist „Modernes Standby“), wenn man in der Schnittstelle des Kernels die Parameter freeze
oder s2idle
anwendet.
⚓︎ Die einzige Möglichkeit, diese Schlafvariante statt modernem Standby zu bekommen, besteht im Kauf von Hardware, die die neue Technik modernes Standby nicht beherrscht:
CPUs vor 2017 beherrschen modernes Standby nicht und der Linux Kernel bietet dann seine interne Variante des Einfrierens an.
Intel Core vor Generation 12 beherrschen S3, bei Generation 12 und später beherrschen es einige, andere nicht. Der Zustand S3 hat zunächst technisch nichts mit dem Einfrieren zu tun, aber da das moderne Standby (= S0ix) von den Herstellern als Ersatz für S3 gesehen wird, ist ein Fehlen von S3 ein starkes Indiz für die Beherrschung von S0ix, welches dann vom Kernel vor dem Einfrieren bevorzugt wird.
AMD Ryzen vor 6000 beherrschen modernes Standby nicht und ermöglichen damit Einfrieren.
Die Firmware muss Einfrieren aber auch unterstützen, indem sie dem Kernel S0ix nicht anbietet.
Dies ist ein sehr leichter Schlaf. Im Grunde wurde nur die CPU angehalten und wartet darauf, wieder geweckt zu werden um weiter zu arbeiten. CPUs, Arbeitsspeicher und Peripheriegeräte verbrauchen weiterhin Energie, lediglich die CPU etwas weniger als im Arbeitszustand. Einschlafen und Aufwachen sind schneller als bei allen anderen Varianten.
Modernes Standby¶
Dieser auch Runtime-Idle genannte Zustand ist einer von zwei möglichen Ergebnissen (der andere ist „Einfrieren“), wenn man in der Schnittstelle des Kernels die Parameter freeze
oder s2idle
anwendet.
Dies ist ziemlich tiefer Schlaf. Möglicherweise wird vergleichbar viel wie beim Suspend-to-RAM oder sogar mehr Energie eingespart. CPUs und Peripheriegeräte sind abgeschaltet oder in tiefen Schlafzuständen. Zustandswechsel erfolgen aber rascher als bei Suspend-to-RAM.
Bei moderner Hardware kann dieses eine vernünftige Alternative zu S3 sein, weil anscheinend manche Hersteller sich bei der Implementierung von S0ix mehr Mühe geben.
⚓︎ Die einzige Möglichkeit, diese Schlafvariante statt simplem Einfrieren zu bekommen, besteht im Kauf von Hardware, die diese moderne Technik beherrscht:
Man benötigt eine nicht zu alte CPU.
Vor 2017 gefertigte CPUs beherrschen es sicher nicht.
Aussichtsreich sind CPUs von Intel ab Core Generation 8 (ab Mitte 2017) und CPUs von AMD ab Ryzen Generation 2 (ab 2018).
Man benötigt eine Firmware mit einem ACPI-Bios ab Version 6.2.
Klassisches Standby¶
Diese Variante ist sehr selten in der Hardware realisiert und steht daher meistens nicht zur Verfügung. Wenn sie verfügbar ist, erreicht man den Zustand S1, indem man in der Schnittstelle des Kernels die Parameter standby
oder shallow
anwendet. Die Energieeinsparung ist besser als beim Einfrieren, aber schlechter als beim modernen Standby oder Suspend-to-RAM.
Suspend-to-RAM¶
Den Zustand S3 erreicht man durch Anwendung von deep
in der Schnittstelle des Kernels. Dies ist die früher bevorzugte Variante, bei der der Kernel aber Unterstützung durch die Firmware benötigt. Bei moderner Hardware ist die Implementierung von Suspend-to-RAM in der Firmware des Rechners oft fehlerhaft, wodurch in der Praxis manchmal zu Hängern beim Übergang in den Schlafzustand kommen kann oder zum Flackern des Bildschirms beim Aufwachen.
Die Energieeinsparung ist besser als bei den vorher genannten Methoden und wird nur noch vom Ruhezustand übertroffen. Die Zustandswechsel dauern zuweilen einige Sekunden, erfolgen aber in der Regel praxistauglich rasch.
Bei moderner Hardware mit Unterstützung des modernen Standbys kann dieses eine vernünftige Alternative sein.
Die Hersteller tendieren dazu, in der Firmware Suspend-to-RAM nicht mehr zu unterstützen zu Gunsten von modernem Standby. Intel unterstützt seit Generation 11 den Zustand S3 nicht mehr offiziell und seit Generation 12 auch in einigen CPUs (Reihen P und U) tatsächlich nicht mehr. AMD unterstützt S3 ab Ryzen 6000 offiziell nicht mehr. Wenn Suspend-to-RAM und modernes Standby beide vom Hersteller unterstützt werden, wird (Stand: 2024) in der Regel modernes Standby favorisiert und Suspend-to-RAM manchmal als "legacy Standby" bezeichnet.
Alternativen zur Bereitschaft¶
Suspend-to-Disk¶
Dies ist ein weiterer Schlafzustand, der aber nicht als Bereitschaft gilt, sondern im Artikel Ruhezustand behandelt wird. Die Energieeinsparung, aber auch die Wartezeiten beim Zustandswechsel, sind maximal.
Ausschalten¶
Das kann durchaus eine des Bedenkens würdige Alternative zur Nutzung eines Schlafzustandes sein. Zwar muss man natürlich bei dieser Strategie seine Arbeit vorher selbst sichern, was aber gerade bei wichtigen und umfangreichen Arbeitsergebnissen ohnehin ratsam ist. Die Energieeinsparung ist maximal und die Wartezeiten sind geringer als bei Suspend-to-Disk.
Auswahlkriterien¶
Dem Anwender bleibt die Qual der Wahl der für die eigenen Zwecke am besten geeigneten Variante und auf diese Frage gibt es keine allgemein gültige Antwort.
Tabelle 2: Vergleich der Varianten | |
Kriterium | Reihenfolge |
(lies „>“ als „besser als“ und „|“ als „oder“) | |
Energieeinsparung | S5 | S4 > S0ix > S3 > S1 > S0-idle |
schnellste Reaktion beim Einschlafen | S0-idle > S0ix | S1 | S3 > S4 |
schnellste Reaktion beim Aufwachen | S0-idle > S0ix > S1 > S3 > S5 > S4 (Booten ist schneller als Aufwachen aus S4!) |
beste Datensicherheit | S5 > S4 > S0-idle | S0ix | S1 | S3 |
Die individuelle Gewichtung und Formulierung weiterer Kriterien sei als Übungsaufgabe dem Leser überlassen.
Wenn man nicht weiß, ob der eigene Rechner S0ix oder S0-idle realisiert, kann man mit dem Skript Schlaflabor den Energieverbrauch in Bereitschaft messen. Danach weiß man zwar noch immer nicht, was realisiert ist, hat aber gute Anhaltspunkte, ob man selber lieber S0-ix/S0-idle oder S3 verwenden sollte.
Benutzung¶
Zum Einschlafen, also Wechsel aus dem Arbeitszustand in die Bereitschaft, kann man alternativ die folgend beschriebenen Schnittstellen benutzen.
Low-Level-Schnittstelle¶
Man benutzt diese Schnittstelle vor allem zum Testen. Eine ordnungsgemäße Funktion der gewünschten Vorgänge auf dieser Ebene ist Voraussetzung zur Nutzung der High-Level-Schnittstelle und Bedienung über die GUI.
Die Schnittstelle des Kernels bedient man im Terminal[2] und benötigt dafür erweiterte Rechte[3]. Es gibt zwei Methoden zum Übergang in den Schlafzustand:
Bei der ersten Methode schreibt man das Kennwort für den gewünschten Zustand in die Datei /sys/power/state, siehe Tabelle 3.
Bei der zweiten Methode
wählt man ggf. zuerst den gewünschten Zustand durch Schreiben in die Datei /sys/power/mem_sleep aus, siehe Tabelle 4
und stößt dann das Einschlafen durch Schreiben von
mem
in die Datei /sys/power/state an.
Tabelle 3: Einschlafen auf Befehl, Methode 1 | ||
Zustand | Bedingung | Befehl |
Einfrieren | CPU vor 2017 | echo freeze | sudo tee /sys/power/state |
Modernes Standby | moderne Hardware | |
Klassisches Standby | echo standby | sudo tee /sys/power/state |
Tabelle 4: Einschlafen auf Befehl, Methode 2 | ||
Zustand | Bedingung | erster Befehl: Variante auswählen |
Einfrieren | CPU vor 2017 | echo s2idle | sudo tee /sys/power/mem_sleep |
Modernes Standby | moderne Hardware | |
Klassisches Standby | echo shallow | sudo tee /sys/power/mem_sleep | |
Suspend-to-RAM | echo deep | sudo tee /sys/power/mem_sleep | |
Ruhezustand | Auswahl der Methode siehe Artikel Ruhezustand | |
zweiter Befehl: Übergang auslösen | ||
Bereitschaft | gemäß erstem Befehl | echo mem | sudo tee /sys/power/state |
Ruhezustand | echo disk | sudo tee /sys/power/state |
Man kann mit dieser Schnittstelle auch den Rechner Herunterfahren oder neu Booten.
High-Level-Schnittstelle¶
Die Funktion dieser Schnittstelle ist Voraussetzung für eine Bedienung per GUI.
Diese Schnittstelle für die Kommandozeile[2] benutzt die Komponente systemd-sleep mit dem Dienstprogramm systemctl für Zustandswechsel.
Der Befehl
systemctl suspend
lässt den Rechner einschlafen. Was suspend
genau bedeutet, steht in den Konfigurationsdateien von systemd-sleep in Form von Schlüsselworten für die vorstehend beschriebene Schnittstelle des Kernels.
Alternativ kann man auch anstatt suspend
auch mit hybrid-sleep
oder suspend-then-hibernate
eine Kombination von Bereitschaft mit dem Ruhezustand ansteuern. Das setzt voraus, dass man den Ruhezustand funktionsfähig eingerichtet hat.
GUI¶
Der Übergang vom Arbeitszustand in die Bereitschaft kann als Reaktion auf mehrere Ereignisse erfolgen:
Der Benutzer betätigt manuell ein Bedienelement:
Hardware Ein-/Austaster
Spezialtaste in manchen Tastaturen, bei Laptops auch Kombination mit der Taste Fn
Schaltfläche in einem Bediendialog
Der Benutzer klappt den Laptop zu. Auch dabei wird in der Hardware ein Schalter ("lid close switch") betätigt.
Der Benutzer macht für einen einstellbaren Zeitraum keinen Bedieneingriff.
Im Batteriebetrieb unterschreitet der Ladezustand des Akku eine einstellbare Schwelle.
In der GUI sind diese Vorgänge teilweise einstellbar und parametrierbar. Man findet z.B. bei Gnome manche Einstellungen unter Energie und man suche in den Einstellungen nach Stichworten wie beispielsweise Energieeinsparung, Bereitschaft, Einschaltknopf.
Nicht alles, was möglich ist, ist aber über die GUI erreichbar. Manche Einstellung muss man direkt im Konfigurationssystem GSettings (welches die Datenbank dconf 🇬🇧 benutzt) vornehmen. Dies kann man bei auf Gtk aufbauenden Desktops mit Hilfe des grafischen Werkzeugs dconf-editor (der aber erst installiert werden muss und auf unterer Ebene arbeitet) erledigen oder auf der Kommandozeile[2] mit dem Befehl gsettings
.
Hardware Ein-/Austaster¶
Was bei Betätigung des Hardwaretasters geschehen soll, fragt man so aus GSettings ab:
gsettings list-recursively | grep power-button
Beispielausgabe:
org.gnome.settings-daemon.plugins.power power-button-action 'interactive'
⚓︎
Die Befehle describe
und range
verraten, was der Schlüssel (hier beispielhaft: power-button-action
) tun soll und welche Werte zulässig sind:
gsettings describe org.gnome.settings-daemon.plugins.power power-button-action gsettings range org.gnome.settings-daemon.plugins.power power-button-action
und set
ändert den Wert des Schlüssels:
gsettings set org.gnome.settings-daemon.plugins.power power-button-action suspend
Bei Betätigung des Bedienelements geschieht nun das, was auch systemctl suspend
über die High-Level-Schnittstelle tun würde.
Lid-close¶
Die für das Zuklappen des Laptops zuständigen Schlüssel findet man so:
gsettings list-recursively | grep lid-close
Beispielausgabe:
org.gnome.settings-daemon.plugins.power lid-close-ac-action 'suspend' org.gnome.settings-daemon.plugins.power lid-close-battery-action 'suspend' org.gnome.settings-daemon.plugins.power lid-close-suspend-with-external-monitor false
Man hat hier also mehrere Schlüssel und kann für die Situationen Netzbetrieb, Akkubetrieb und angeschlossenem externem Monitor unterschiedliches Verhalten programmieren, analog wie oben.
Allerdings werden bei Gnome diese Schlüssel ignoriert und man setzt sie am besten auf nothing
. Das Verhalten beim Schließen des Laptops ist in einer Konfigurationsdatei für den Login-Manager systemd-logind zu konfigurieren.
Timeout¶
Der Befehl
gsettings list-recursively | grep idle
zeigt die Schlüssel zur Parametrierung des Bildschirmschoners bzw. Abdunkelung des Displays. Das ist keine Bereitschaft, aber die Wartezeit bis zu einem automatischen Übergang in Bereitschaft sollte größer als der Wert für idle-delay
sein, oder man sollte Bildschirmschoner und Abdunkelung/Abschaltung des Displays deaktivieren.
Die Einstellmöglichkeiten für den nach Wartezeit automatischen Übergang in Bereitschaft zeigt der Befehl:
gsettings list-recursively | grep inactive
Beispielausgabe:
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 3600 org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing' org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 900 org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'suspend'
Auch hier kann man für Netz- und Akkubetrieb unterschiedliche Zeiten für die andauernde Untätigkeit in Sekunden und Maßnahmen festlegen.
Akku leer¶
Es gibt drei Schwellen, die jedoch nicht von der Desktopumgebung, sondern vom Energiemanager UPower verwaltet werden. Einige Desktopumgebungen haben ein Plugin zur Kommunikation mit dem Energiemanager. Bei Gnome werden vom Energiemanager empfangene Nachrichten vom Benachrichtigungsdienst und in den Einstellungen für Energie angezeigt, man kann sich zusätzlich auch den aktuellen Ladezustand im Panel anzeigen lassen:
gsettings list-recursively | grep battery-percentage
Die drei Schwellen sind in der Konfigurationsdatei /etc/UPower/UPower.conf des Energiemanagers einstellbar.
Unterhalb der höchsten Schwelle schaltet die Desktopumgebung automatisch in einen Energiesparmodus, der rein auf Softwarebasis funktioniert. Dieses Verhalten kann man mit dem Schlüssel
power-saver-profile-on-low-battery
ausschalten.Unterhalb der niedrigsten Schwelle ergreift der Energiemanager eine Notmaßnahme, um Datenverlust und Schädigung des Akku durch Tiefentladung zu vermeiden. Die Art der Notmaßnahme kann man in der GUI nicht einstellen, aber in der Konfigurationsdatei des Energiemanagers – die Standardeinstellung ist „erste erfolgreiche Aktion aus
hybrid-sleep
oderhibernate
oderpower-off
“, also eine Kombination von Bereitschaft mit dem Ruhezustand. Da letzterer bei Ubuntu standardmäßig gesperrt ist, muss man entweder beim Energienotstand ein abgefragtes Passwort eingeben oder vorher den Ruhezustand gängiger machen.
Einrichtung¶
Der Artikel Desktop-Dateien/Beispiele/Einschlafen beschreibt eine Desktop-Datei, mit der man selbst die in diesem Abschnitt vorgestellten (und weitere) Befehle an systemd in die GUI integrieren kann.
Wer auf Mausklick-Orgien verzichten will, kann sich einfach für seine bevorzugte Variante der Bereitschaft bzw. dem entsprechenden Befehl eine Tastenkombination definieren. Z.B. bei Gnome:
System-Menü (oben rechts) → Einstellungen (z.B. Getriebe oder Zahnrad) → Tastatur → Tastenkombinationen
Alternativ findet man auf https://extensions.gnome.org 🇬🇧 mit dem Suchbegriff "Suspend" einige Erweiterungen. Erweiterungen funktionieren oft nur mit bestimmten Versionen der Gnome-Shell. → GNOME Shell/Extensions (Abschnitt „extensions-gnome-org“)
Schließlich gibt es noch das Paket qshutdown, welches allerdings nicht Gtk, sondern Qt benutzt und vorwiegend für Kubuntu eine Alternative darstellt.
Alle genannten Bedienoberflächen sind reine Bedienoberflächen und machen unter der Haube nichts außer systemd zu beauftragen. Wenn es mit den oben genannten Befehlen nicht funktioniert, wird das durch eine GUI nicht besser.
Bedienung¶
System schlafen legen¶
Nach Betätigung des ausgesuchten Bedienelements oder automatisch bei fast entladenem Akku sollte der Rechner nun in Bereitschaft gehen. Wenn man eine Kombination aus Bereitschaft mit dem Ruhezustand verwendet, wird man möglicherweise nach einem Passwort gefragt, das kann auch geschehen, wenn mehrere Benutzer angemeldet sind oder noch weitere Sitzungen existieren.
Ein erfolgreicher Eintritt in die Bereitschaft wird in der Regel mit einem geheimnisvoll langsamen Blinken einer LED signalisiert und kann – abhängig von der konkret benutzten Variante und der konkreten Hardware – einige Sekunden dauern.
Der gesetzlich für die Bereitschaft von elektronischen Geräten im privatem Gebrauch ab 2014 geltende zulässige Energieverbrauch von maximal 0,5 W wird nicht immer realisiert.
Schlafendes System benutzen¶
Das ist technisch möglich, aber man sollte es nicht tun.
Details siehe Ruhezustand (Abschnitt „Schlafendes-System-benutzen“); der Abschnitt gilt ohne Einschränkung auch für Bereitschaft.
System aufwecken¶
Zum Wecken des System schaltet man den Rechner einfach ein, je nach Konfiguration durch Betätigung der Einschalttaste, Aufklappen des Bildschirms, automatisch durch den Wecker in der Firmware, etc.
Eventuell muss man durch Passworteingabe den Sperrbildschirm des Bildschirmschoners überwinden, wenn man das so eingestellt hat. Man kann weiterarbeiten, als hätte es keinen Schlaf gegeben.
Links¶
Schlaflabor – Skript zur Messung des Energieverbrauchs in Bereitschaft
Extern
System Sleep States 🇬🇧 in der Kernel Dokumentation
UEFI Forum: Specifications 🇬🇧 – Die vom UEFI Forum verwaltete ACPI Spezifikation kann von dieser Seite bezogen werden.