Pm-utils
aus openSUSE, der freien Wissensdatenbank
| Version: 10.3+
| Die Informationen auf dieser Seite betreffen openSUSE 10.3 oder neuer. Wenn Sie Informationen zu pm-utils unter openSUSE 10.2 suchen, dann schauen Sie hier. |
| pm-utils | |
|---|---|
| | |
| Entwickler: | Richard Hughes, Bill Nottingham u.a |
| Versionen in Distributionen von openSUSE; aktuelle Versionen für ihre Distribution finden Sie (evtl.) im Build Service: | |
| Lizenz: | GPL |
| Deutschsprachig: | nein |
| Web-Seite: | freedesktop.org/pm-utils |
Inhaltsverzeichnis |
pm-utils - Die Suspend-Infrastruktur der nächsten Generation
pm-utils wird das neue Suspend-Rahmenwerk werden. Es wird für gewöhnlich von HAL verwendet um diverse Hacks auszuführen, die notwendig sind, um Fehler in Treibern und Subsystemen zu umgehen, die noch nichts vom Supendieren wissen.
Obwohl pm-utils ein Rahmenwerk ist, welches in der Zukunft wohl auf allen Linux-Distributionen verbreitet sein wird, enthält es einige SUSE-spezifische Fähigkeiten und Änderungen, die noch nicht in die allgemeine Entwicklung eingeflossen sind bzw. nur nur auf SUSE-Systemen sinnvoll sind. Diese Konfigurationsvariablen sind auch als solche gekennzeichnet.
Basisaufbau (oder "Wie es funktioniert")
Das Konzept ist ziemlich einfach: Das Hauptskript (pm-action, aufgerufen über symbolische Verknüpfungen, entweder als pm-suspend oder pm-hibernate) führt sogenannte "hooks" (Haken) aus. Diese Skripte unter /etc/pm/hooks werden in alphabetischer Reihenfolge mit dem Parameter suspend (Suspend to RAM) oder hibernate (Suspend to Disk) aufgerufen. Sobald alle hooks ausgeführt wurden, wird die Maschine in den Schlaf geschickt. Nach dem Aufwecken werden alle hooks abermals ausgeführt, diesmal allerdings in umgekehrter Reihenfolge, wobei der Parameter resume (Aufwachen aus dem RAM) oder thaw (Aufwachen von der Festplatte) verwendet wird. Die hooks erledigen dabei verschiedene Dinge, beispielsweise bereiten sie den Bootloader vor, stoppen das Bluetooth-Subsystem oder entladen kritische Module..
Sowohl pm-suspend als auch pm-hibernate werden normalerweise von HAL aufgerufen, dessen Aufrufe wiederum von Arbeitsflächenanwendungen wie gnome-power-manager oder KPowersave initiiert werden.
Es besteht außerdem die Möglichkeit, die Maschine in einen Leistungs- und in einen Stromsparmodus zu versetzen, wozu der Befehl pm-powersave mit einem zusätzlichen Parameter von true oder false verwendet wird. Dies arbeitet grundsätzlich ähnlich wie das Suspendierungsrahmenwerk.
Die hooks für die Suspendierung befinden sich unter
- /usr/lib/pm-utils/sleep.d (Von Distribution/Paketen bereitgestellte hooks)
- /etc/pm/sleep.d (Vom Systemadministrator hinzugefügte hooks)
Die hooks für die Energiesparzustände befinden sich unter
- /usr/lib/pm-utils/power.d (Von Distribution/Paketen bereitgestellte hooks)
- /etc/pm/power.d (Vom Systemadministrator hinzugefügte hooks)
Hooks unter /etc/pm/ werden vorrangig vor solchen in /usr/lib/pm-utils/ behandelt, so dass der Systemadministrator die von der Distribution bereitgestellten Standards überschreiben kann.
Konfiguration
Die Hauptkonfigurationsdatei ist /usr/lib/pm-utils/defaults, welche Sie nicht verändern sollten, da ihre Veränderungen sonst nach einer Paketaktualisierung möglicherweise von den Standardeinstellungen überschrieben werden. Legen Sie ihre Konfigurationsdatei stattdessen unter /etc/pm/config.d ab. Sie können einfach eine Textdatei mit dem Inhalt
SUSPEND_MODULES="button uhci_hcd"
mit dem Namen "modules" oder "config" in /etc/pm/config.d ablegen und die Einstellungen in der systemweiten Konfigurationsdatei werden überschrieben.
Variablen in Konfigurationsdateien
SUSPEND_MODULES="button" # Eine Liste von Modulen die vor dem Suspendieren entladen werden sollen.
SUSE-spezifische Variablen
HIBERNATE_METHOD={userspace,kernel} # Wählt die Methode zum Suspendieren auf die Festplatte. Standard ist userspace.
S2RAM_OPTS="" # Optionen die an s2ram übergeben werden. Im Artikel über s2ram erhalten Sie weitere Informationen.
Problemlösungen
Wenn suspend (In den Arbeitsspeicher schlafen legen / Suspend to RAM) oder hibernate (Auf die Festplatte schlafen legen / Suspend to Disk) nicht richtig funktionieren, finden Sie eventuell Hinweise in der Protokolldatei /var/log/pm-suspend.log, bspw. welche hooks ausgeführt wurden und welche Meldungen Sie ausgegeben haben.
Erstellen ihrer eigenen hooks
Wenn Sie für ihre Konfiguration während suspend / hibernate bestimmte Dinge vornehmen wollen, können Sie einfach einen eigenen hook unter /etc/pm/sleep.d oder /etc/pm/power.d erstellen. Die hooks in diesen Ordnern werden während dem Schlafenlegen in alphabetischer Reihenfolge und beim Aufwecken in umgekehrter Richtung ausgeführt. Aus diesem Grund beginnen ihre Namen jeweils mit zwei Ziffern, um ihre Reihenfolge explizit vorzugeben.
Im folgenden Beispiel wird eine schöne, nutzlose Demonstration gegeben, die lediglich ein paar Informationszeilen in ihre Protokolldatei schreibt:
#!/bin/bash
case $1 in
hibernate)
echo "Hey Jungs, wir legen uns auf der Platte schlafen!"
;;
suspend)
echo "Oha, dieses Mal geht es ab in den Arbeitsspeicher. Schick!"
;;
thaw)
echo "Oh, der Schlaf auf der Platte ist vorbei, wir kommen zurück..."
;;
resume)
echo "Hey, das Nickerchen im RAM scheint vorbei zu sein..."
;;
*) echo "Irgendwer ruft mich total falsch auf."
;;
esac
Legen Sie dies in /etc/pm/sleep.d/66dummy ab, führen Sie ein chmod +x /etc/pm/sleep.d/66dummy aus und schon werden ein paar nutzlose Zeilen während dem Schlafenlegen / Aufwachen ausgespuckt.
|
Verschiedene Tipps und Tricks
Suspendierung manuell auslösen
Wenn Sie das Suspendieren zur Fehlersuche manuell auslösen wollen, ohne auf Rahmenwerke wie HAL zurückzugreifen, rufen Sie pm-suspend oder pm-hibernate als root auf.
Achtung: Dies ist nur bei der Fehlersuche sinnvoll und Sie sollten wissen was Sie tun, wenn Sie es verwenden.
Suspend to RAM auf Maschinen benutzen die sich nicht in der s2ram-Datenbank befinden
Wenn Sie eine Suspendierung in den Arbeitsspeicher forcieren wollen, müssen Sie -f in die S2RAM_OPTS-Variable in eine Konfigurationsdatei unter /etc/pm/config.d einfügen. Außerdem müssen Sie auch noch alle anderen Optionen die ihre Maschine benötigt in diese Variable schreiben. Beispielsweise so:
S2RAM_OPTS="-f -a 3"
Es ist eine gute Idee, ihre Maschine zu melden, wie es auf der s2ram-Seite beschrieben wird, so dass Sie diesen Schritt in der Zukunft nicht mehr machen brauchen.
Einen hook deaktivieren
Wenn ein hook ausgeführt wird, den Sie nicht mögen oder nicht zu brauchen meinen oder der sogar schädlich ist, würden wir einen Fehlerbericht dazu begrüßen. Sie können dennoch einfach einen hook deaktivieren, indem Sie einfach eine leere zum hook korrespondierende Datei unter /etc/pm/sleep.d/ erstellen. Wenn Sie nun bspw. den hook /usr/lib/pm-utils/sleep.d/45pcmcia deaktivieren wollen, dann erstellen Sie einfach mit folgendem Befehl eine leere Datei unter /etc/pm/sleep.d/:
touch /etc/pm/sleep.d/45pcmcia
Setzen Sie für diesen Dummy-Hook kein Ausführen-Bit (+x).
Maus neustarten
Auf einigen Laptops hängt nach einem ansonsten erfolgreichen Suspendieren des Rechners die Maus. Eine Möglichkeit, dies zu beheben ist, eine Neuinitialisierung des Maustreibers (hier i8042) durch einen hook in /etc/pm/hooks zu erzwingen (siehe hooks).
#!/bin/sh echo -n "i8042" > /sys/bus/platform/drivers/i8042/unbind echo -n "i8042" > /sys/bus/platform/drivers/i8042/bind
Es scheint nichts zu passieren / Wo ist die Protokolldatei
Wenn nach einem Aufruf über die Miniprogramme für die Arbeitsflächen nichts zu passieren scheint, dann versuchen Sie, pm-suspend oder pm-hibernate manuell von einer Root-Shell in einer Konsole auszuführen. Vielleicht erhalten Sie schon dort Rückmeldungen, die Sie zu einer Problemlösung führen. Zusätzlich schreiben die Suspendierungsskripte Informationen in eine Protokolldatei namens /var/log/pm-suspend.log.

