ubuntuusers.de

Energiesparmodi mit ACPI

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Root-Rechte erlangen

  2. Editor - einen Editor öffnen

./power.png In diesem Artikel werden Energiesparmodi behandelt, die zum Advanced Configuration and Power Management Interface (siehe ACPI und ACPI) gehören. Die Energiesparmodi werden oft als "Schlafmodi" bezeichnet. Energiesparmodi gab es auch beim älteren Industriestandard Advanced Power Management (APM). Dieser wurde mittlerweile vollständig durch ACPI abgelöst.

Nur bei sehr alten Rechnern kann im BIOS noch zwischen ACPI und APM gewählt werden. An dieser Stelle kann nicht auf BIOS-Einzelheiten eingegangen werden. Als Faustregel gilt, dass die Standard-BIOS-Einstellungen auf aktueller Hardware i.d.R. korrekt gesetzt sind, weil ACPI das ältere APM vollständig verdrängt hat. Die Bedienungsanleitung des Mainboards liefert ggf. weitere hilfreiche Informationen.

ACPI-SUSPEND-Modi allgemein

In diesem Artikel werden insbesondere die ACPI-Schlafmodi:

  • Suspend To RAM (STR) oder "Stand By Suspend"

  • Suspend To Disk (STD) oder "Hibernate"

behandelt.

Begriffsklärung: STR, STD, ...

Suspend To RAM wird manchmal auch als Suspend To Memory (STM) bezeichnet. In den unterschiedlichen Desktopumgebungen, sogar in unterschiedlichen Versionen derselben Desktop-Umgebung, werden unterschiedliche Begriffe für STR und STD verwendet. Dazu nachfolgend eine Übersicht aller verwendeten Begriffe, die zeigen sollte, dass ein und derselbe Begriff zwei unterschiedliche Energieschlafmodi bezeichnet. Daher muss man genau hinschauen und im Zweifelsfall die folgende Faustregel anwenden:

  • der "ruhigere" der beiden Energieschlafmodi ist STD - das Gerät wird komplett ausgeschaltet

  • der "flüchtigere" der beiden ist STR

Was damit genau gemeint ist, wird klar, wenn man die Tabelle weiter unten anschaut. Falls mehrere Bezeichnungen eines und desselben ACPI-Schlafmodus in unterschiedlichen Versionen derselben (Desktop-)Umgebung verwendet werden, so sind diese so angeordnet, dass links die "aktuellere" bzw. die "aktuellste" Bezeichnung ist. Weiter rechts findet man ggf. die Bezeichnung(en) aus früheren Versionen dieser Desktop-Umgebung.

Die folgende Tabelle fasst die aktuellen Bezeichnungen in der jeweiligen Desktopumgebung und die wichtigsten Eigenschaften der beiden Schlafmodi STR und STD zusammen. Zum Vergleich sind auch die aus der Windows-Welt geläufigen sowie weiteren Bezeichnungen enthalten:

Energiesparmodi
Technische Bezeichnung S3 = Suspend-To-RAM (STR) S4 = Suspend-To-Disk (STD)
GNOME (Ubuntu) Bereitschaft ( 🇬🇧 =suspend) Ruhezustand ( Hibernate)
KDE (Kubuntu) Ruhezustand (im Speicher) Ruhezustand (auf Festplatte) / Tiefschlaf
XFCE (Xubuntu) Standby / Ruhezustand Ruhezustand / Tiefschlaf
MATE (Ubuntu MATE) Bereitschaft ( 🇬🇧 =suspend) Ruhezustand ( Hibernate)
Shell Skripte und Konfigurationsdateien STANDBY HIBERNATE, HIBERNATION
Windows Standbymodus Ruhezustand
Weitere Begriffe Bereitschaftsmodus, Schlafmodus, Suspend-To-Memory (STM) Hibernation
Vorteile Computer erwacht schneller niedrigerer bzw. kein Stromverbrauch2, kein Datenverlust bei Stromunterbrechung
Nachteile höherer Stromverbrauch1, Datenverlust bei Stromunterbrechung Computer erwacht langsamer
Grund Computer bleibt eingeschaltet, Daten sind noch im Arbeitsspeicher Computer wird ausgeschaltet, Daten werden vorher aus dem Arbeitsspeicher auf die Festplatte gesichert

1 Notebooks sind generell sparsam in Standby, aber auch bei optimierten Desktop-Rechnern kann der Verbrauch unter 10 W liegen.
2 Ein ATX-Netzteil verbraucht immer etwas (Praxisbeispiel: 1,5 W), solange der Netzteilschalter auf der Rückseite eines Desktoprechners eingeschaltet ist.

ACPI-SUSPEND-Modi: S0 S1 S2 S3 S4 S5

Laut ACPI-Standard existieren 6 Energiesparmodi.

Modus Beschreibung
S0 Das System ist zu 100% einsatzbereit.
S1 "Power On Suspend" – Der „hungrigste“ Energiesparmodus. Die CPU ist angehalten. Die CPU und RAM stehen unter Spannung. Diesen Energiesparmodus unterstützen nahezu alle Maschinen.
S2 "Stand By" – Die CPU ist ausgeschaltet. Der Arbeitsspeicher steht unter Spannung. Dieser Energiesparmodus wird selten verwendet.
S3 "Stand By Suspend" (Suspend To RAM, STR) – Der Arbeitsspeicher ist nahezu die einzige Komponente, die mit Spannung versorgt wird. Der aktuelle Zustand des Systems wird im Arbeitsspeicher aufrecht erhalten. Der RAM-Inhalt bleibt erhalten, solange das System unter Spannung (Laptop: Akku oder Netz; Desktop: Netz) steht. Das System kann aus STR sehr schnell (im Sekundenbereich) wieder aufgeweckt werden. Nach dem Wiederaufwecken wird der gespeicherte Zustand des Betriebssystems, aller Applikationen und geöffneter Dokumente wiederhergestellt, sodass die Arbeit an exakt derselben Stelle nahezu unmittelbar fortgesetzt werden kann.
Dieser Energiesparmodus wird vor allem bei Laptops häufig verwendet.
S4 "Hibernate" (Suspend To Disk, STD) – der „Aktuelle Gesamtzustand des Systems“ bleibt erhalten. Der gesamte Inhalt des Arbeitsspeichers wird auf nicht flüchtigen Speichermedien (i.d.R. auf einer Festplatte) gespeichert. Das System kann aus STD i.d.R. schneller wieder aufgeweckt werden, als das System zum vollständigen Neustart benötigt. Dieser Vorteil wird (noch) deutlicher, wenn laufende Applikationen vor dem Übergang zu STD nicht beendet werden. Ähnlich zu S3 wird nach dem Wiederaufwecken des Rechners der gespeicherte Zustand des Betriebssystems, aller Applikationen und geöffneter Dokumente wiederhergestellt, sodass die Arbeit an exakt derselben Stelle fortgesetzt werden kann. Der Unterschied zu S3 besteht darin, dass dies eben NICHT "nahezu unmittelbar" sondern mit einer etwas größeren Verzögerung erreicht wird. Diesem Nachteil steht der Vorteil gegenüber, dass ein Spannungsverlust (zum Beispiel wenn der Laptop-Akku leer läuft oder wenn das Gerät vom Netz getrennt wird) kein Problem darstellt.
Unter Linux wird standardmäßig das "Suspend To Disk-Image" auf die SWAP-Partition geschrieben. Allerdings kann man auch eine separate Partition hierfür verwenden. Nachteilig dabei ist der Umstand, dass diese Partition dann nur für STD verwendet werden kann. Verwendet man, so wie vorgesehen, die SWAP-Partition für STD, so wird kein Plattenplatz "verschwendet".
Auf Systemen mit (sehr) viel RAM und abhängig von der STD-Konfiguration (COMPRESS_IMAGE=Y|N o.ä. bei uswsusp) kann das Wiederaufwecken aus STD (fast) länger dauern, als das System komplett zu booten. Dies ist u.a. abhängig von Diensten, die beim Booten gestartet werden. Aus diesem Grund wird STD vorwiegend auf Systemen mit wenig RAM oder langsamen CPUs, sowie häufiger auf Desktop-PCs als auf Notebooks verwendet.
S5 "Soft Off" – manche Komponenten bleiben unter Spannung, sodass der Rechner zum Beispiel über Tastatur, USB-Geräte oder per "Wake-up-on-LAN" wieder aufgeweckt werden kann.

Sonderfall: SUSPEND to BOTH

Eine Sonderform der Energiesparmodi (unter Linux) besteht aus der Kombination von STR (S3) und STD (S4). Dieser Misch-Energiesparmodus wird Suspend To Both (STB) oder auch SUSPEND-HYBRID genannt. Dabei wird der Inhalt des Arbeitsspeichers zuerst gemäß S4 auf die SUSPEND-Partition geschrieben. Das System betritt daraufhin den Energiesparmodus S3, und der Arbeitsspeicher wird weiterhin mit Spannung versorgt. Nach dem Wiederaufwecken aus S3 ist das System sofort wieder einsatzbereit, das STD-Image wird verworfen. Läuft der Akku leer, oder wird das System vom Netz getrennt, so ist der Inhalt des Arbeitsspeichers verloren. Allerdings wird das System nach dem Neustart erkennen, dass es aus S4 wiederaufgeweckt wurde. Daraufhin wird der Systemzustand aus dem STD-Image wiederhergestellt.

Achtung!

Dieser Misch-Energiesparmodus ist noch experimentell und wird aus diesem Grund noch nicht standardmäßig in Menüs angeboten. Testen kann man STB nach einigen vorbereitenden Maßnahmen (Backup, viel Zeit, ...) durch manuelles Aufrufen entsprechender Skripte. Unter Umständen müssen vorher u.a. Sicherungskopien angelegt und Skripte angepasst werden. Fragen hierzu bitte ggf. im Forum posten.

Weitere Details hierzu findet man ggf. in den Artikeln uswsusp und Archiv/pm-utils.

S3 im BIOS aktivieren

S4 funktioniert (nahezu) unabhängig von den BIOS-Einstellungen. Bei S3 kann es vorkommen, dass durch fehlerhafte BIOS-Einstellungen S3 nicht möglich ist. Aufgrund der BIOS-Vielfalt kann nur die Faustregel genannt werden, dass die Aktivierung einer BIOS-Option mit folgenden Zeichenketten S3 ermöglichen wird:

  • S3

  • STR

  • Suspend to RAM

  • Suspend to RAM (S3) "enabled"

S3 wird nicht funktionieren, wenn eine BIOS-Option aktiviert ist, bei der eine der folgenden Zeichenketten vorkommt:

  • S1

  • POS

  • Power On Suspend

  • Suspend to RAM (S3) "disabled"

ACPI-Kernelparameter

Bezüglich der Einstellung von Kernelparametern sei auf den ausführlichen Artikel Bootoptionen verwiesen.

ACPI-Deaktivierung

Auf manchen Systemen ist der Kernelparameter acpi=off gesetzt. Mit dieser Einstellung ist es jedoch sehr schwierig bzw. unmöglich, ACPI-Energiesparmodi zu nutzen. Welche ACPI-Kernelparameter konfiguriert sind bzw. alle Kernelparameter, die beim letzten Bootvorgang gesetzt wurden, kann man mit folgenden Befehlen in Erfahrung bringen:

  • Aktuelle Kernelparameter anzeigen:

    cat /proc/cmdline 
  • Einstellungen für GRUB 2 anzeigen:

    grep -i acpi /etc/default/grub 

Falls tatsächlich acpi=off gesetzt ist, kann man die Energiesparmodi evtl. aktivieren, in dem man diese Bootoption einfach entfernt. Denn evtl. funktioniert das Booten mit dem aktuellen Kernel inzwischen mit ACPI und ggf. nicht ganz so radikalen Bootoptionen.

BIOS-Funktionen nutzen

Bei einiger Hardware lässt sich der Wechsel von Energiesparmodi nicht immer fehlerfrei vom Linux-Kernel direkt steuern, der Wechsel funktioniert aber problemlos bei Verwendung der entsprechenden BIOS-Funktionen (sofern die Hardware noch über ein BIOS verfügt). Die Verwendung der BIOS-Funktionen kann mit folgenden Kernelparametern bzw. Bootoptionen aktiviert werden:

  • acpi_sleep=nonvs - Einige Einstellungen nicht vom Kernel speichern und wiederherstellen lassen.

  • acpi_sleep=s3_bios,s3_mode - Explizit BIOS-Funktionen für S3 nutzen. Mit der zweiten Option hinter dem Komma wird auch der Video-Modus über das BIOS initialisiert (nicht immer erforderlich).

SUSPEND-Tools (ACPI) unter Ubuntu

An dieser Stelle nur ein kurzer Überblick. Weitere Details sind den genannten Artikeln zu entnehmen.

  • die Archiv/pm-utils sind der "neue" Standard für das Power-Management unter Linux. Das Paket pm-utils beinhaltet (hauptsächlich) Skripte, die die eigentlichen SUSPEND- und RESUME-Vorgänge ausführen. Dabei können diese Skripte direkt oder indirekt aufgerufen werden. Die Skripte greifen ggf. auf uswsusp (siehe nächster Punkt) zurück, sofern uswsusp installiert ist und nicht explizit auf Kernelfunktionen zurückgegriffen werden soll.

  • uswsusp steht für User-SoftWare-Suspend und ist eine Suspend-Implementierung für UserSpace-Applikationen des Linux-Kernels ab Version 2.6.17 (funktioniert also ohne Root-Rechte). Auf manchen Systemen kann der Einsatz von uswsusp zum Erfolg führen, wenn Energiesparmodi über Kernelfunktionen nicht funktionieren.

  • Das Paket acpi-support installiert u.a. die Datei /etc/default/acpi-support sowie den Ordner /etc/acpi/ samt Inhalt. Die Datei /etc/default/acpi-support hat (zumindest seit Ubuntu 8.04 und beim Betreten von Energiesparmodi aus den Menüs heraus) keine Auswirkung, da stattdessen standardmäßig Skripte von pm-utils aufgerufen werden. Eine Ausnahme liegt vor, wenn man die bei Ubuntu 12.04 noch vorhandenen Skripte /etc/acpi/sleep.sh oder /etc/acpi/hibernate.sh manuell aufruft (in neueren Ubuntu-Versionen sind diese nicht mehr enthalten).

Ruhezustand aktivieren

STD (Hibernate) ist per Voreinstellung ab Ubuntu 11.10 nicht mehr aktiv. Das Computer-Modell muss inzwischen von Canonical zertifiziert 🇬🇧 oder validiert (siehe UbuntuFriendly) sein. Ist er das nicht, wird der Ruhezustand nicht unterstützt. Hintergründe dazu sind unter Disable hibernate option by default und auch Power zu finden.

Ubuntu 11.10 - 13.04 und Kubuntu ... - 14.04

Um diese Sperre zu umgehen, muss man mit Root-Rechten [1] die Datei /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla anlegen, mit einen Editor (wieder mit Root-Rechten) öffnen [2] und den nachfolgenden Inhalt einfügen:

# This file is intended to overwrite default entries from
# /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

[Re-enable hibernate]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Danach startet man den Rechner neu. Nach dem Neustart sollte der Ruhezustand auswählbar sein – was nicht heißt, dass er auch funktionieren muss. In Kubuntu sollte im Kickoff-Menü unter "Verlassen" der Tiefschlaf-Button vorhanden sein. Bei dieser Methode wird standardmäßig die Swap-Partition als Speicher für das RAM-Abbild benutzt. Wenn dort nicht genug Platz ist, bricht der Vorgang ab und der Rechner wacht sofort wieder auf. Wenn man den Ruhezustand nutzen will, benötigt man für die Swap-Partition 5% mehr als der Arbeitsspeicher groß ist.

Ab Ubuntu 13.10 und Kubuntu 14.10

Ab 13.10 wurde der indicator-session von upower auf logind umgestellt, deshalb muss man in /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla folgendes eintragen:

# This file is intended to overwrite default entries from
# /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

[Re-enable hibernate in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes

Damit die Option erscheint, muss man unter Umständen noch folgendes im Terminal eingeben:

killall indicator-session-service 

Ab Ubuntu und Kubuntu 16.04

Am Vorgehen ändert sich nichts. Es mussten lediglich weitere Aktionen in der vorletzten Zeile bei Action ergänzt werden, dieselbe Datei soll nun so aussehen:

# This file is intended to overwrite default entries from
# /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

[Re-enable hibernate in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

Einrichtung von SUSPEND & RESUME

  • Woher weiß der Kernel, wohin der Inhalt des RAMs bei STD geschrieben werden sollte?

  • Woher weiß der Kernel, woher der Inhalt gelesen werden sollte, der beim RESUME in den RAM geschrieben werden sollte?

  • Wie richte ich SUSPEND & RESUME ein?

  • Was tun, wenn SUSPEND und/oder RESUME nicht mehr funktionieren?

Die Antworten auf diese Fragen, bis auf die erste, findet man unter Archiv/pm-utils. Für den Fall, dass SUSPEND & RESUME über Kernelfunktionen nicht wie gewünscht erfolgen und aus diesem Grund auf Userspace-Programme ausgewichen werden muss, macht man bei uswsusp weiter.

Problembehebung

Damit die ACPI-Energiesparmodi funktionieren, müssen alle Hardwarebauteile und deren Treiber ACPI-konform und ACPI-fähig sein, sonst funktionieren manche oder gar alle Schlafmodi nicht. Denkbare Ursache hierfür sind schlechte Treiber bzw. fehlerhafte BIOS-Implementierungen oder (oft ältere) Hardware, deren Energiesparmodi nur über ein (gepatchtes) BIOS korrekt umgeschaltet werden können (kein entsprechender Patch im Linux-Kernel).

So kann es zum Beispiel passieren, dass S1 auf Anhieb klappt, S3 aber nicht funktionieren will. Infolgedessen läuft immer der Netzteillüfter weiter (weil das Netzteil eingeschaltet bleibt). Je nach BIOS bleibt manchmal sogar der CPU-Lüfter aktiv. Manchmal kommt es stattdessen vor, dass das System zwar in den STR-Modus S3 wechselt, das Wiederaufwachen aber nicht funktioniert (der Bildschirm bliebt dunkel). An dieser Stelle muss man sich entscheiden, was man tun will:

  1. Sofern der Computer noch ein BIOS besitzt, den Linux-Kernel anweisen, BIOS-Funktionen zu nutzen (siehe ACPI-Kernelparameter)

  2. Die Archiv/pm-utils nutzen, um die Energiesparmodi zu aktivieren. Dabei können folgende Maßnahmen helfen:

    • Module vor SUSPEND entladen und beim RESUME neu laden

    • Dienste vor SUSPEND beenden und beim RESUME neu starten

    • Variablen in den entsprechenden Konfigurationsdateien setzen

    • Proprietäre Treiber deaktivieren/deinstallieren

    • Kontrollieren, ob die Ursache eine fehlerhafte BIOS-Implementierung sein kann

  3. Statt Kernelfunktionen Userspace-Programme nutzen, z.B. uswsusp

  4. Alternativen wie z.B. TuxOnIce nutzen community/PowerManagement/Hibernate

Aus Sicherheitsgründen ist S4 nicht verfügbar, wenn Secure Boot aktiv ist. Secure Boot muss daher abgeschaltet werden, damit dieser Modus vom Kernel angeboten wird.

Diese Revision wurde am 5. Februar 2020 19:58 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Energieverwaltung, System, Hardware