Gentoo Logo

Power Management Anleitung

Inhalt:

1.  Einführung

In den vergangenen Jahren hat sich sowohl Kapazität als auch Lebenszeit von Laptopbatterien deutlich verbessert. Auf der anderen Seite verbrauchen moderne Prozessoren viel mehr Energie als ihre Vorfahren und jede neue Laptopgeneration bringt neue, energiehungrige Komponenten mit sich. Aus diesem Grund ist Power Management wichtiger denn je. Man muss nicht unbedingt eine neue Batterie kaufen, um die Laufzeit eines Laptops zu verlängern. Bereits durch eine intelligente Einrichtung des Power Managements kann man viel erreichen.

Kurzübersicht

Es sei darauf hingewiesen, dass diese Anleitung die Einrichtung von Power Management für Laptops beschreibt. Zwar können manche Teile davon auf Server übertragen werden, nicht jedoch alle und manche können dort sogar Schaden anrichten. Bitte versuchen Sie nicht, anhand dieser Anleitung einen Server einzurichten.

Da diese Anleitung etwas länger geworden ist, gibt es zunächst eine Kurzübersicht:

Das Kapitel >Voraussetzungen behandelt einige Voraussetzungen, die erfüllt sein müssen, bevor Sie sich in den nächsten Kapiteln an die Konfiguration einzelner Geräte machen. Hier sind BIOS Einstellungen und die Kernelkonfiguration zu überprüfen sowie einige Vereinfachungen im System vorzunehmen. Die folgenden drei Kapitel konzentrieren sich auf die drei Komponenten, die normalerweise am meisten Energie verbrauchen: Prozessor, Bildschirm und Festplatte. Alle können unabhängig voneinander konfiguriert werden. CPU Power Management zeigt, wie man die Prozessorgeschwindigkeit dynamisch so einstellt, dass ein Maximum an Energie eingespart wird, ohne allzu viel Leistung zu verlieren. Mit verschiedenen Tricks sorgt man beim Fesplatten Power Management dafür, dass die Festplatte möglichst lange Zeit im Schlafzustand bleibt - und dämpft als angenehmer Nebeneffekt die Geräuschentwicklung. Mit einigen Hinweisen zu Grafikkarten, WLAN und USB wird der Abschnitt über einzelne Geräte in Power Management für andere Geräte abgeschlossen. Ein weiteres Kapitel ist den (noch recht experimentellen) Schlafzuständen gewidmet, bevor zuletzt in Probleme und Lösungen typische Fallstricke und Stolpersteine behandelt werden.

Power Budget für jede Komponente


Abbildung 1.1: Power Budget für jede Komponente

Fig. 1: Welche Komponente verbraucht wie viel Energie?

Fast alle Geräte kennen verschiedene Betriebszustände - schlafend, untätig, aktiv um ein paar zu nennen. In jedem Zustand wird unterschiedlich viel Energie verbraucht. Absolut gesehen verbrauchen LCD Bildschirm, Prozessor, Chipsatz und Festplatte am meisten. Ein paar Einstellungen zum Power Management kann man meistens bereits im BIOS vornehmen, doch mit einer vernünftigen, sich an verschiedene Situationen anpassenden Einrichtung des Betriebssystems erreicht man noch viel mehr.

2.  Voraussetzungen

Einige Voraussetzungen wollen erfüllt sein, bevor es an die Einrichtung der einzelnen Komponenten geht. Nach der Kontrolle der BIOS Einstellungen geht es an die Konfiguration des Kernels, wo ACPI, Schlafzustände und dynamische Frequenzänderung des Prozessors aktiviert werden. Da Energiesparen meist mit weniger Leistung oder schlechteren Reaktionszeiten einhergeht, sollte das Power Management nur im Batteriemodus aktiviert werden. Hier erweist sich ein neues Runlevel battery nützlich.

BIOS Einrichtung

Als erstes überprüfen Sie die Power Management Einstellungen im BIOS. Das BIOS erreicht man durch Neustarten des Laptops und anschließendes Drücken der Taste Entfernen, F1 oder anderen Spezialtasten je nach Modell. Am besten kombiniert man BIOS Einstellungen mit den Regeln, die später im Betriebssystem erstellt werden. Zunächst ist es aber sinnvoller, im BIOS die meisten Einstellungen zu deaktivieren. So verhindern Sie, dass Ihnen das BIOS im Folgenden in die Quere kommt. Vergessen Sie nicht, die BIOS Einstellungen zum Schluss zu korrigieren.

Setzen von USE Flags

Vergewissern Sie sich, dass das acpi USE Flag in /etc/make.conf. gesetzt ist. Weitere USE Flags, die für Ihr System von Interesse sein können, sind apm, lm_sensors, nforce2, nvidia, pmu. Details zu den USE Flags finden Sie in /usr/portage/profiles/use*.desc. Falls Sie vergessen haben, eines dieser Flags zu aktivieren, können Sie mit Hilfe der --newuse Option von emerge betroffene Pakete neu kompilieren, siehe man emerge.

Einrichtung des Kernels

Die ACPI (Advanced Configuration and Power Interface) Unterstützung im Kernel ist immer noch in der Entwicklung. Daher sollte man durch die Verwendung eines aktuellen Kernels sicherstellen, die neuesten Quellen zu haben.

Portage enthält verschiedene Kernel-Quellen. Ich empfehle die Benutzung von gentoo-sources oder tuxonice-sources. Letztere enthalten Patches für TuxOnIce, Details dazu im Kapitel zu Schlafzuständen. Bei der Konfiguration des Kernels muss man mindestens folgende Optionen aktivieren:

Befehlsauflistung 2.1: Minimales Setup für Power Management (Kernel 2.6)

Power management and ACPI options --->
  [*] Power Management support
  [ ] Software Suspend

  ACPI( Advanced Configuration and Power Interface ) Support --->
    [ ]   Deprecated /proc/acpi/ files
    [*]   AC Adapter
    [*]   Battery
    <M>   Button
    <M>   Video
    [ ]   Generic Hotkey
    <M>   Fan
    <M>   Processor
    <M>     Thermal Zone
    < >   ASUS/Medion Laptop Extras
    < >   IBM ThinkPad Laptop Extras
    < >   Toshiba Laptop Extras
    (0)   Disable ACPI for systems before Jan 1st this year
    [ ]   Debug Statements
    [*]   Power Management Timer Support
    < >   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)

  CPU Frequency Scaling --->
    [*] CPU Frequency scaling
    [ ]   Enable CPUfreq debugging
    < >   CPU frequency translation statistics
    [ ]     CPU frequency translation statistics details
          Default CPUFreq governor (userspace)
    <*>   'performance' governor
    <*>   'powersave' governor
    <*>   'ondemand' cpufreq policy governor
    <*>   'conservative' cpufreq governor
    <*>   CPU frequency table helpers
    <M> ACPI Processor P-States driver
    <*> CPUFreq driver for your processor

Entscheiden Sie selbst, ob Sie die Schlafzustände Software Suspend und Suspend-to-Disk benutzen wollen (siehe unten). Falls Sie einen ASUS, IBM Thinkpad oder Toshiba Laptop ihr Eigen nennen, aktivieren Sie die entsprechende Option.

Der Kernel muss wissen, wie Frequenzänderungen bei ihrem Prozessor angesteuert werden. Da die verschiedenen CPUs unterschiedliche Schnittstellen besitzen, müssen Sie den richtigen Treiber für ihren Prozessor auswählen. Gehen Sie sorgfältig vor - die Aktivierung von Intel Pentium 4 clock modulation auf einem Pentium M System wird sonderbare Ergebnisse erzielen. Ziehen Sie die Kernel Dokumentation zu Rate, wenn Sie nicht wissen, welcher Treiber der richtige ist.

Kompilieren Sie den Kernel, booten ihn und stellen Sie sicher, dass die notwendigen Module beim Start geladen werden. Als nächstes führen Sie emerge sys-apps/acpid aus, um den acpi Dämon zu installieren. acpid reagiert auf ACPI Ereignisse wie das Schließen des Laptops oder das Wechseln der Stromquelle. Als nächstes starten Sie acpid per /etc/init.d/acpid start. Mit rc-update add acpid default wird acpid fortan automatisch gestartet. Zur Benutzung von acpid kommen wir gleich.

Befehlsauflistung 2.2: Installing acpid

# emerge sys-power/acpid
# /etc/init.d/acpid start
# rc-update add acpid default

Ein Runlevel "battery" erstellen

Power Management soll nur aktiviert werden, wenn der Laptop von Batterie läuft. Um die (De-)Aktivierung der verschiedenen Power Management Regeln komfortabel durchzuführen, erstellen Sie ein neues Runlevel battery, das alle Skripte zum Starten und Stoppen des Power Managements enthält. Später konfigurieren Sie acpid so, dass er je nach Stromquelle in das entsprechende Runlevel wechselt.

Notiz: Wenn Sie kein neues Runlevel erstellen wollen, können Sie diesen Abschnitt überspringen. Allerdings wird dadurch die übrige Einrichtung etwas schwieriger. Im folgenden wird davon ausgegangen, dass es ein Runlevel battery gibt.

Befehlsauflistung 2.3: Ein Runlevel battery erzeugen

# cd /etc/runlevels
# cp -a default battery

Fertig. Ihr neues Runlevel battery ist im Moment mit dem Runlevel default identisch. Die nächste Aufgabe wird sein, battery anzupassen und je nach Stromquelle automatisch die Runlevel zu wechseln.

Auf ACPI Ereignisse reagieren

Typische ACPI Ereignisse sind das Schließen des Laptops, Wechseln der Stromquelle oder Drücken der Ruhezustand Taste. Ein wichtiges Ereignis ist das Wechseln der Stromquelle, das eine Änderung des aktiven Runlevels auslösen soll. Ein kleines Skript kümmert sich darum.

Zunächst brauchen Sie ein Skript, das abhängig von der Stromversorgung in das Runlevel default bzw. battery wechselt. Das Skript benutzt das on_ac_power Programm von sys-power/pm-utils - stellen Sie sicher, dass dieses Paket auf ihrem System installiert ist.

Befehlsauflistung 2.4: Installation von pm-utils

# emerge pm-utils

Sie sind jetzt in der Lage, durch Aufruf von on_ac_power && echo AC available || echo Running on batteries in einer Shell den aktuellen Stromzustand anzuzeigen. Das unten aufgelistete Skript übernimmt den Wechsel des Runlevels. Speichern Sie es als /etc/acpi/actions/pmg_switch_runlevel.sh ab.

Befehlsauflistung 2.5: /etc/acpi/actions/pmg_switch_runlevel.sh

#!/bin/bash

# Anfang der Konfiguration
RUNLEVEL_AC="default"
RUNLEVEL_BATTERY="battery"
# Ende der Konfiguration


if [ ! -d "/etc/runlevels/${RUNLEVEL_AC}" ]
then
        logger "${0}: Runlevel ${RUNLEVEL_AC} does not exist. Aborting."
        exit 1
fi

if [ ! -d "/etc/runlevels/${RUNLEVEL_BATTERY}" ]
then
        logger "${0}: Runlevel ${RUNLEVEL_BATTERY} does not exist. Aborting."
        exit 1
fi

if on_ac_power
then
    if [[ "$(</var/lib/init.d/softlevel)" != "${RUNLEVEL_AC}" ]]
  then
            logger "Switching to ${RUNLEVEL_AC} runlevel"
            /sbin/rc ${RUNLEVEL_AC}
        fi
elif [[ "$(</var/lib/init.d/softlevel)" != "${RUNLEVEL_BATTERY}" ]]
then
        logger "Switching to ${RUNLEVEL_BATTERY} runlevel"
        /sbin/rc ${RUNLEVEL_BATTERY}
fi

Vergessen Sie nicht, das Skript durch Aufruf von chmod +x /etc/acpi/actions/pmg_switch_runlevel.sh ausführbar zu machen. Zuletzt muss noch dafür gesorgt werden, dass dieses Skript aufgerufen wird, sobald sich die Stromversorgung ändert. Das geschieht durch Abfangen der dabei ausgelösten ACPI Ereignisse mit Hilfe von acpid. Zunächst müssen Sie aber wissen, welche Ereignisse beim Wechseln der Stromversorgung ausgelöst werden. Meistens sind das ac_adapter und battery, es könnte auf ihrem Laptop aber auch anders sein.

Befehlsauflistung 2.6: Welche ACPI Ereignisse werden beim Wechseln der Stromzufuhr ausgelöst?

# tail -f /var/log/messages | grep "ACPI event"

Führen Sie obiges Kommando aus und ziehen Sie das Stromkabel ab. Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Befehlsauflistung 2.7: Beispielhafte Ausgabe bei Wechsel der Stromzufuhr

[Tue Sep 20 17:39:06 2005] ACPI event "ac_adapter AC 00000080 00000000"
[Tue Sep 20 17:39:06 2005] ACPI event "battery BAT0 00000080 00000001"

Uns interessiert dabei der Teil in Anführungszeichen nach ACPI event. Er wird von der event Zeile abgedeckt, die Sie weiter unten anlegen werden. Machen Sie sich keine Sorgen, falls ihr System mehrere oder immer dasselbe Ereignis erzeugt. Solange nur irgendein Ereignis generiert wird, funktioniert das Wechseln des Runlevels.

Befehlsauflistung 2.8: /etc/acpi/events/pmg_ac_adapter

# Ersetzen Sie "ac_adapter" durch das Ereignis, das auf ihrem Laptop erzeugt wird
# Beispielsweise trifft ac_adapter.* auf ac_adapter AC 00000080 00000000 zu
event=ac_adapter.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e

Befehlsauflistung 2.9: /etc/acpi/events/pmg_battery

# Ersetzen Sie "battery" durch das Ereignis, das auf ihrem Laptop erzeugt wird
# Beispielsweise trifft battery.* auf battery BAT0 00000080 00000001 zu
event=battery.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e

Abschließend muss acpid neu gestartet werden, um die Änderungen zu erkennen.

Befehlsauflistung 2.10: Abschluss der Einrichtung des automatischen Wechselns des Runlevels

# /etc/init.d/acpid restart

Probieren Sie es aus: Trennen Sie Ihren Laptop vom Stromnetz und beobachten Sie die Meldung "Switching to battery mode" im syslog. Schlagen Sie im Kapitel für Probleme und Lösungen nach, falls das Skript die Energiequelle nicht korrekt erkennen kann.

Ein Problem gilt es noch zu lösen: Beim Booten wird unabhängig von der Stromquelle das Runlevel default gestartet. Das liegt daran, dass beim Booten kein ACPI Ereignis ausgelöst wird. Eine Möglichkeit wäre, einen neuen Eintrag in den Bootloader aufzunehmen, der über den Kernelparameter softlevel=battery das Runlevel battery starten würde. Einfacher ist es aber, beim Booten ein ACPI Ereignis vorzutäuschen. pmg_switch_runlevel.sh entscheidet dann, ob ein Wechsel des Runlevels nötig ist. Öffnen Sie /etc/conf.d/local.start in Ihrem Lieblingseditor und ergänzen Sie folgende Zeilen:

Befehlsauflistung 2.11: local.start bearbeiten, um richtiges Runlevel beim Booten zu starten

# Vortäuschung des ACPI Ereignisses battery/battery
/etc/acpi/actions/pmg_switch_runlevel.sh "battery/battery"

Nach diesen Vorbereitungen können die einzelnen Geräte konfiguriert werden.

3.  CPU Power Management

Mobile Prozessoren können Ihre Taktfrequenz variieren. Einige erlauben sogar eine Anpassung der Spannung. Da ihre CPU die meiste Zeit nicht vollständig ausgelastet ist, muss sie auch nicht auf der höchsten Frequenz laufen und eine Verringerung selbiger wird viel Energie sparen - meist ohne Leistungseinbußen.

Erklärung einiger technischer Begriffe

Im Zusammenhang mit Freqenzänderungen der CPU tauchen Begriffe auf, die Ihnen möglicherweise unbekannt sind. Hier ist eine kleine Übersicht.

Zunächst einmal muss der Kernel in der Lage sein, die Frequenz der CPU anzupassen. Der CPUfreq Prozessortreiber kümmert sich bei ihrer CPU darum. Aus diesem Grund ist es wichtig, im Kernel den richtigen Treiber auszuwählen. Sie sollten das bereits weiter oben erledigt haben. Hat der Kernel nun die Möglichkeit, verschiedene Frequenzen auszuwählen, muss er sich zu einem Zeitpunkt für eine davon entscheiden. Die Auswahl der Frequenz erfolgt gemäß einer Taktik (englisch policy), die wiederum aus einer CPUfreq Taktik und einem Regler (englisch governor) besteht. Eine CPUfreq Taktik ist lediglich eine minimale und eine maximale Taktfrequenz, zwischen denen die gewählte Frequenz liegen muss. Der Regler entscheidet dann, welche der in diesem Bereich verfügbaren Frequenzen verwendet wird. Beispielsweise entscheidet sich der powersave Regler immer für die kleinste mögliche Frequenz und der performance Regler für die größtmögliche. Der userspace Regler trifft keine eigenmächtige Entscheidung, sondern übernimmt die Vorgabe des Benutzers (oder eines Programms im userspace). Das heißt praktisch, dass er die Frequenz aus der Datei /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed ausliest.

Bisher hört sich das ganze noch nicht unbedingt nach dynamischer Frequenzänderung an und in der Tat ist es das auch noch nicht. Dynamik erreicht man aber durch unterschiedliche Ansätze. Beispielsweise trifft der ondemand Regler seine Entscheidung in Abhängigkeit von der Auslastung der CPU. Gleiches erledigen verschiedene Programme wie cpudyn, cpufreqd, powernowd. ACPI Ereignisse können dazu benutzt werden, dynamische Frequenzänderungen zu aktivieren oder abzuschalten.

Setzen der Frequenz

Eine Verminderung der Prozessorgeschwindigkeit bringt zwei Vorteile: Zum einen wird weniger Energie verbraucht, zum anderen entwickelt sich weniger Wärme. Demgegenüber steht natürlich ein Verlust an Performanz. Der Trick ist nun, eine Prozessorgeschwindigkeit auszuwählen, die hoch genug ist, um flüssiges Arbeiten zu ermöglichen, gleichzeitig aber so niedrig, dass der Prozessor maximal ausgelastet ist.

Notiz: Das Ändern der Prozessorgeschwindigkeit (engl. frequency scaling, speedstepping) wird nicht von jedem Laptop unterstützt. Das Kapitel Probleme und Lösungen enthält eine Liste der unterstützten Prozessoren.

Es ist an der Zeit, zu testn, ob das Ändern der Prozessorgeschwindigkeit klappt. Dazu installieren wir ein weiteres Tool: sys-power/cpufrequtils.

Befehlsauflistung 3.1: Checking CPU frequency

# emerge cpufrequtils
# cpufreq-info

Hier ist eine beispielhafte Ausgabe:

Befehlsauflistung 3.2: Beispielsausgabe von cpufreq-info

cpufrequtils 0.3: cpufreq-info (C) Dominik Brodowski 2004
Bitte melden Sie Fehler an linux@brodo.de.
analysiere CPU 0:
  Treiber: centrino
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0
  Hardwarebedingte Grenzen der Taktfrequenz: 600 MHz - 1.40 GHz
  mögliche Taktfrequenzen: 600 MHz, 800 MHz, 1000 MHz, 1.20 GHz, 1.40 GHz
  mögliche Regler: conservative, ondemand, powersave, userspace, performance
  momentane Taktik: die Frequenz soll innerhalb 1.40 GHz und 1.40 GHz.
    liegen. Der Regler "performance" kann frei entscheiden,
    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1.40 GHz  (verifiziert durch Nachfrage bei der
  Hardware).

Probieren Sie ein paar Optionen von cpufreq-set aus, um sicherzugehen, dass das Ändern der CPU Frequenz richtig funktioniert. Beispielsweise können Sie durch Aufruf von cpufreq-set -g ondemand den ondemand Regler aktivieren und die Änderung durch cpufreq-info überprüfen. Das Kapitel Probleme und Lösungen hilft bei eventuell auftretenden Schwierigkeiten weiter.

cpufrequtils kann in einem automatischen Modus laufen (wenn Sie den ondemand Regler verwenden), aber Sie können auch zum userspace Regler wechseln, wenn Sie manuell eine bestimmte Geschwindigkeit setzen wollen. Sie können Ihre CPU auch statisch auf die höchste oder niedrigste Frequenz setzen, indem Sie den Regler performance bzw. powersave verwenden.

Befehlsauflistung 3.3: Ändern der CPU-Geschwindigkeit

(Setzen der höchsten verfügbaren Frequenz)
# cpufreq-set -g performance
(Setzen der niedrigsten verfügbaren Frequenz)
# cpufreq-set -g powersave
(Setzen einer spezifischen Frequenz)
# cpufreq-set -g userspace
# cpufreq-set -f 2.00ghz

Weitere CPU-Geschwindigkeit-Tools

Obwohl cpufrequtils das beste Rundum-Programm ist, gibt es noch einige weitere in Portage vorhandene Möglichkeiten. Die folgende Tabelle stellt eine kurze Übersicht über die verfügbaren CPU-Geschwindigkeit-Tools dar. Sie ist grob eingeteilt in die drei Kategorien Kernel für Ansätze, die Kernelunterstützung benötigen, Daemon für Programme, die unsichtbar im Hintergrund arbeiten und GUI für Programme, die eine grafische Oberfläche zur einfachen Konfiguration bieten.

Name Kategorie Entscheidung über Frequenzwechsel Kernel Regler Eigene Regler Kommentare
'ondemand' Regler Kernel CPU Auslastung N.A. N.A. Wählt die größtmögliche Frequenz bei Auslastung der CPU und reduziert die Frequenz andernfalls. Weitere Einstellungen können in /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ vorgenommen werden. Es werden weitere Programme oder Skripte benötigt, wenn ein Wechseln des Reglers oder ähnliches gewünscht wird.
'conservative' governor Kernel CPU load N.A. N.A. Im Gegensatz zum ondemand Regler wird nicht zur größtmöglichen Frequenz gesprungen, wenn die CPU ausgelastet ist, sondern eine stufenweise Frequnzerhöhung vorgenommen. Wählt die größtmögliche Frequenz bei Auslastung der CPU und reduziert die Frequenz andernfalls. Weitere Einstellungen können in /sys/devices/system/cpu/cpu0/cpufreq/conservative/ vorgenommen werden. Es werden weitere Programme oder Skripte benötigt, wenn ein Wechseln des Reglers oder ähnliches gewünscht wird.
cpudyn Daemon CPU Auslastung Performance, powersave Dynamic Unterstütz auch Standby für die Festplatte - normalerweise erreicht man aber durch den laptop mode bessere Ergebnisse.
cpufreqd Daemon Batteriezustand, CPU Auslastung, Temperatur, laufende Programme und mehr Alle verfügbaren Keine Ausgefeilte (damit aber auch komplizierte) Konfigurationsmöglichkeiten. Erweiterbar durch Plugins wie Überwachung von Sensoren (lm_sensors) oder Abstimmung einiger Grafikkarten von NVidia. Cpufreqd kann mit Multiprozessorsystemen (SMP) umgehen und besitzt einen manuellen Modus.
powernowd Daemon CPU Auslastung Keine Passive, sine, aggressive Unterstützt Mehrprozessorsysteme.
ncpufreqd Daemon Temperatur Keine Powersave, performance Wechselt den Regler zwischen performance und powersave je nach Temperatur des Systems. Sehr nützlich für Laptops mit notorischen Temperaturproblemen.
speedfreq Daemon CPU Auslastung Keine Dynamic, powersave, performance, fixed speed Einfache Konfiguration mit einer schönen Client/Server Schnittstelle. Setzt einen Kernel 2.6 voraus. Wird nicht gewartet, enthält Bugs und wurde aus diesem Grund aus Portage entfernt. Wenn Sie speedfreq immer noch einsetzen, wechseln Sie bitte auf cpufreqd.
gtk-cpuspeedy GUI Keine Keine Keine Gnome Applikation, ein grafisches Tool zum manuellen Wechsel der CPU Frequenz. Bietet keine Möglichkeiten zur automatischen Anpassung an.
klaptopdaemon GUI Batteriezustand Alle verfügbaren Keine KDE Applikation, 'ondemand' Regler wird für dynamische Freqenzänderungen benötigt.

Eine automatische Anpassung der Prozessorgeschwindigkeit erscheint auf den ersten Blick einfach. In der Tat ist es allerdings etwas komplizierter - ein schlechter Algorithmus kann dazu führen, dass ständig zwischen zwei Geschwindigkeiten umgeschaltet wird oder die Geschwindigkeit unnötig hoch ist.

Sie haben die Qual der Wahl. Falls Sie sich nicht entscheiden können, probieren Sie zunächst cpufreqd aus.

Befehlsauflistung 3.4: Installation von cpufreqd

# emerge cpufreqd

cpufreqd wird in der Datei /etc/cpufreqd.conf konfiguriert. Die standardmäßig installierte Konfigurationsdatei sieht auf den ersten Blick etwas verwirrend aus. Ich empfehle, sie durch die Konfigurationsdatei von Gentoo Entwickler Henrik Brix Andersen (siehe unten) zu ersetzen. Sie benötigen dafür cpufreqd-2.0.0 oder neuer. Ältere Versionen setzen eine andere Syntax für die Konfigurationsdatei ein.

Befehlsauflistung 3.5: /etc/cpufreqd.conf (cpufreqd-2.0.0 und später)

[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=3
enable_plugins=acpi_ac, acpi_battery
enable_remote=1
remote_group=wheel
[/General]

[Profile]
name=ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
[/Profile]

[Profile]
name=conservative
minfreq=0%
maxfreq=100%
policy=conservative
[/Profile]

[Profile]
name=powersave
minfreq=0%
maxfreq=100%
policy=powersave
[/Profile]

[Profile]
name=performance
minfreq=0%
maxfreq=100%
policy=performance
[/Profile]

[Rule]
name=battery
ac=off
profile=conservative
[/Rule]

[Rule]
name=battery_low
ac=off
battery_interval=0-10
profile=powersave
[/Rule]

[Rule]
name=ac
ac=on
profile=ondemand
[/Rule]

Jetzt können Sie den cpufreqd Daemon starten. Fügen Sie ihn weiterhin zum default und zum battery Runlevel hinzu.

Befehlsauflistung 3.6: Starten von cpufreqd

# rc-update add cpufreqd default battery
# /etc/init.d/cpufreqd start

Manchmal möchte man eine andere Frequenz wählen als der Daemon, beispielsweise wenn der Batteriestand niedrig ist, aber in Kürze wieder Stromversorgung verfügbar sein wird. In diesem Fall kann man den manuellen Modus von cpufreqd per cpufreqd-set manual aktivieren und eine der konfigurierten Taktiken (so wie von cpufreqd-get aufgelistet) wählen. Man verlässt den manuellen Modus durch Aufruf von cpufreqd-set dynamic.

Warnung: Führen Sie nicht mehrere der oben aufgeführten Programme gleichzeitig aus. Das kann dazu führen, dass ständig zwischen zwei Geschwindigkeiten hin- und hergesprungen wird.

Überprüfen der Einstellungen

Zum Schluss sollten Sie überprüfen, dass die neuen Regeln gut funktionieren. Das kann man auf einfache Weise kontrollieren, indem man die Prozessorgeschwindigkeit eine Zeitlang überwacht.

Befehlsauflistung 3.7: Prozessorgeschwindigkeit überwachen

# watch grep \"cpu MHz\" /proc/cpuinfo

Falls /proc/cpuinfo bei Ihnen nicht aktualisiert wird (siehe Probleme und Lösungen), beobachten Sie die CPU-Frequenz mit sys-apps/x86info:

Befehlsauflistung 3.8: Alternative Überwachung der Prozessorgeschwindigkeit

# watch x86info -mhz

Abhängig von ihrer Konfiguration sollte die Geschwindigkeit bei starker Prozessornutzung ansteigen, bei wenig Aktivität sinken oder einfach auf dem gleichen Niveau bleiben. Wenn Sie cpufreqd benutzen und verbosity in cpufreqd.conf auf 5 oder höher gesetzt ist, erhalten Sie weitere Details zu den Vorgängen im syslog.

4.  LCD Power Management

Wie man in Bild 1.1 sieht, verbraucht der LCD Bildschirm typischerweise am meisten Energie. Aus diesem Grund ist es nicht nur wichtig, den Bildschirm bei Nichtgebrauch abzuschalten, sondern auch eine Reduzierung der Hintergrundbeleuchtung kann viel Energie einsparen. Die meisten Laptops bieten diese Möglichkeit ebenfalls an.

Standby Einstellungen

Als ersten sollten Sie die Einstellungen zu Standby/Suspend/Abschalten des Bildschirms überprüfen. Bitte konsultieren Sie dazu gegebenenfalls das Handbuch ihres Windowmanagers. Terminals können mit den Befehlen setterm -blank <anzahl-der-minutenM>, setterm -powersave on und setterm -powerdown <anzahl-der-minutenM> kontrolliert werden. In Xorg ändert man /etc/X11/xorg.conf:

Befehlsauflistung 4.1: LCD-Suspend Einstellungen in X.org

Section "ServerFlags"
  Option  "blank time"  "5"  # Schwärzt den Bildschirm nach 5 Minuten (unecht)
  Option  "standby time"  "10"  # Stellt den Bildschirm nach 10 Minuten aus (DPMS)
  Option  "suspend time"  "20"  # Komplettes Suspend nach 20 Minuten
  Option  "off time"  "30"  # Ausschalten nach einer halben Stunde
  [...]
EndSection

[...]

Section "Monitor"
  Identifier  [...]
  Option  "DPMS"
  [...]
EndSection

Dimmen der Hintergrundbeleuchtung

Wohl noch wichtiger ist es, die Hintergrundbeleuchtung zu dimmen. Falls Sie die Einstellungen mit einem Programm steuern können, schreiben Sie ein einfaches Skript und platzieren es im battery Runlevel. Das folgende Skript sollte auf den meisten IBM Thinkpads und Toshiba Laptops funktionieren. Sie müssen dafür die entsprechende Option im Kernel aktivieren (nur IBM Thinkpads). Bei Toshiba Laptops muss zunächst das Paket sys-power/acpitool installiert werden. Überspringen Sie die Konfiguration von thinkpad_acpi (früher ibm_acpi genannt) wie unten beschrieben in diesem Fall.

Warnung: Die Unterstützung zum Einstellen der Hintergrundbeleuchtung ist in thinkpad_acpi als experimentell markiert. Es wird direkt auf die Hardware zugegriffen und kann ernsthaften Schaden im System anrichten. Bitte informieren Sie sich auf der thinkpad_acpi Internetseite

Um die Hintergrundbeleuchtung verändern zu können, muss das thinkpad_acpi Modul mit dem Parameter experimental geladen werden.

Befehlsauflistung 4.2: Automatisches Laden des thinkpad_acpi Moduls

(Bitte beachten Sie obige Warnungen!)
# echo "options thinkpad_acpi experimental=1" >> /etc/modprobe.d/thinkpad_acpi
# update-modules
# echo thinkpad_acpi >> /etc/modules.autoload.d/kernel-2.6
# modprobe thinkpad_acpi

Obige Kommandos sollten ohne Fehlermeldungen ausgeführt werden und eine Datei /proc/acpi/ibm/brightness erzeugt werden. Ein Init Skript übernimmt die Einstellung der Hintergrundbeleuchtung passend zum Stromzustand.

Befehlsauflistung 4.3: /etc/conf.d/lcd-brightness

# /proc/acpi/ibm/brightness listet mögliche Werte auf
# Bitte lesen Sie /usr/src/linux/Documentation/thinkpad-acpi.txt

# Level der Hintergrundbeleuchtung bei Netzstrom. Standardmäßig 7.
BRIGHTNESS_AC=7

# Level der Hintergrundbeleuchtung im Batteriemodus. Standardmäßig 4.
BRIGHTNESS_BATTERY=4

Befehlsauflistung 4.4: /etc/init.d/lcd-brightness

#!/sbin/runscript

set_brightness() {
    if on_ac_power
    then
        LEVEL=${BRIGHTNESS_AC:-7}
    else
        LEVEL=${BRIGHTNESS_BATTERY:-4}
    fi

    if [ -f /proc/acpi/ibm/brightness ]
    then
        ebegin "Setting LCD brightness"
        echo "level ${LEVEL}" > /proc/acpi/ibm/brightness
        eend $?
    elif [[ -e /usr/bin/acpitool && -n $(acpitool -T | grep "LCD brightness") ]]
        then
        ebegin "Setting LCD brightness"
        acpitool -l $LEVEL >/dev/null || ewarn "Unable to set lcd brightness"
        eend $?
    else
        ewarn "Setting LCD brightness is not supported."
        ewarn "For IBM Thinkpads, check that thinkpad_acpi is loaded into the kernel"
        ewarn "For Toshiba laptops, you've got to install sys-power/acpitool"
    fi
}

start() {
    set_brightness
}

stop () {
    set_brightness
}

Nach dem Abspeichern des Skripts fügen Sie es dem battery Runlevel hinzu.

Befehlsauflistung 4.5: Aktivieren der automatischen Anpassung der Hintergrundbeleuchtung

# chmod +x /etc/init.d/lcd-brightness
# rc-update add lcd-brightness battery
# rc

5.  Festplatten Power Management

Festplatten verbrauchen im Ruhezustand weniger Energie. Aus diesem Grund sollte man Ruhezustände aktivieren, sobald die Festplatte eine bestimmte Zeit lang nicht benutzt wird. Ich zeige Ihnen zwei Möglichkeiten, wie man das bewerkstelligen kann. Zunächst kann man mit Hilfe des sogenannten laptop-mode am meisten Energie sparen, da verschiedene Maßnahmen dafür sorgen, dass Schreibzugriffe nicht oder zumindest später ausgeführt werden. Der Nachteil ist, dass ein Stromausfall oder Kernelabsturz eine höhere Gefahr für Datenverlust darstellt als sonst. Wenn Sie dieses Risiko nicht eingehen wollen, müssen Sie besonders darauf achten, dass keine Prozesse häufig schreibend auf die Festplatte zugreifen. Danach können Sie als zweite Alternative die Stromsparmaßnahmen ihrer Festplatte per hdparm aktivieren.

Mehr idle Zeit - laptop-mode

Aktuelle 2.6-Kernel beinhalten den sogenannten laptop-mode. Einmal aktiviert, werden "dirty buffers" (veränderte Speicherstellen) bei Lesezugriffen oder erst nach 10 Minuten (anstelle der sonstigen 30 Sekunden) auf die Festplatte geschrieben. Dadurch wird die Zeit minimiert, während der die Festplatte aktiv sein muss.

Befehlsauflistung 5.1: Automatischer Start von laptop-mode

# emerge laptop-mode-tools

laptop-mode-tools wird in /etc/laptop-mode/laptop-mode.conf konfiguriert. Passen Sie die Datei nach Ihren Wünschen an, sie ist sehr ausführlich dokumentiert. Durch Aufruf von rc-update add laptop_mode battery wird der laptop-mode automatisch im Batteriezustand aktiviert.

Neuere Versionen (ab 1.11) der laptop-mode-tools kommen mit einem neuen Programm lm-profiler. Damit können Sie die Auslastung von Festplatte und Netzwerk überwachen lassen und Empfehlungen erhalten, gewisse Dienste zu deaktiveren. Die Dienste können entweder durch die in laptop-mode-tools eingebaute Runlevelunterstützung deaktiviert werden (was von Gentoos /sbin/rc rückgängig gemacht würde) oder durch Manipulation Ihrer default/battery Runlevel (empfohlen).

Befehlsauflistung 5.2: Beispielsausgabe von lm-profiler

# lm-profiler
Profiling session started.
Time remaining: 600 seconds
[4296896.602000] amarokapp
Time remaining: 599 seconds
[4296897.714000] sort
[4296897.970000] mv
Time remaining: 598 seconds
Time remaining: 597 seconds
[4296900.482000] reiserfs/0

Nachdem es 10 Minuten lang Ihr System analysiert hat, wird lm-profiler eine Liste von Diensten ausgeben, die in diesem Zeitraum Festplattenzugriffe verursacht haben könnten.

Befehlsauflistung 5.3: lm-profiler schlägt vor, Dienste zu deaktiveren

Program:     "atd"
Reason:      standard recommendation (program may not be running)
Init script: /etc/init.d/atd (GUESSED)

Do you want to disable this service in battery mode? [y/N]: n

Um atd wie in obigem Beispiel zu deaktivieren, führen Sie rc-update del atd battery aus. Passen Sie auf, dass Sie keine Dienste deaktivieren, die das System benötigt - lm-profiler wird normalerweise den einen oder anderen Fehlalarm generieren. Deaktivieren Sie keine Dienste, über deren Aufgabe Sie sich im Unklaren sind.

Schreibzugriffe verringern

Wenn Sie laptop-mode nicht benutzen wollen, müssen Sie besonders darauf achten, dass Dienste mit häufigen Festplattenzugriffen deaktiviert werden - der syslogd ist ein typischer Kandidat. Normalerweise werden Sie ihn nicht komplett abschalten wollen. Sie können ihn aber so einrichten, dass "unnötige" Ereignisse nicht protokolliert werden und damit keine Festplattenaktivität auslösen. Cups schreibt periodisch auf die Festplatte, überlegen Sie sich, cups auszuschalten und nur bei Bedarf zu starten.

Befehlsauflistung 5.4: cups im Batteriezustand deaktivieren

# rc-update del cupsd battery

Sie können auch den lm-profiler der laptop-mode-tools (siehe oben) benutzen, um Diensten mit häufigen Festplattenzugriffen auf die Schliche zu kommen. Nachdem Sie sie alle abgeschaltet haben, können Sie mit der Einrichtung von hdparm fortfahren.

hdparm

Die zweite Alternative ist der Einsatz von hdparm. Überschlagen Sie diesen Teil, falls Sie laptop-mode benutzen. Andernfalls bearbeiten Sie /etc/conf.d/hdparm und fügen die folgenden Zeilen zu Ihren Geräteeinträgen hinzu. Dieses Beispiel nimmt an, dass Ihre Festplatte hda genannt ist:

Befehlsauflistung 5.5: /etc/conf.d/hdparm zur Aktivierung von Ruhezuständen der Fesplatte verwenden

hda_args="-q -S12"

Dies wird Power Management für Ihre Festplatte aktivieren. Falls Sie das Power Management wieder deaktivieren möchten, können Sie /etc/conf.d/hdparm bearbeiten und die Werte zu -q -S0 ändern oder einfach hdparm -q -S0 /dev/hda ausführen.

Die einzelnen Optionen werden in man hdparm erklärt. Obwohl Sie hdparm auch manuell ausführen können, wenn Sie gerade die Batterie benutzen, indem Sie /etc/init.d/hdparm start ausführen, ist es viel einfacher das Starten und Beenden zu automatisieren. Um dies zu tun, fügen Sie hdparm zum Runlevel battery hinzu, so dass es das Power Mangement automatisch aktiviert.

Befehlsauflistung 5.6: Festplatten Power Management automatisieren

# rc-update add hdparm battery

Wichtig: Seien Sie vorsichtig mit den Schlafzuständen der Festplatte. Die Benutzung von zu kleinen Intervallen kann sich schädlich auf die Lebensdauer der Festplatte auswirken und sogar zum Garantieverlust führen.

Sonstige Tricks

Sie können sogar so weit gehen und den Auslagerungsspeicher im Batteriebetrieb abschalten. Das kann aber nur dann funktionieren, wenn genügend Arbeitsspeicher vorhanden ist, so dass der Auslagerungsspeicher kaum genutzt wird. Andernfalls stehen Sie vor einem großen Problem.

Selbst wenn Sie auf den laptop-mode verzichten möchten, können Sie die Zahl der Festplattenzugriffe verringern. Einige Verzeichnisse kann man als tmpfs mounten - dieses spezielle Dateisystem speichert Daten nicht auf der Festplatte, sonderm im Arbeitsspeicher. Beim unmounten gehen die Daten verloren. Das /tmp Verzeichnis bietet sich beispielsweise dafür an - Persistenz von Daten über einen Neustart hinaus ist dort sowieso nicht garantiert. Wichtig ist, dass Sie über ausreichend viel Arbeitsspeicher verfügen und kein Programm (beispielsweise ein Downloadmanager oder Komprimierungsprogramm) außergewöhnlich viel Platz in /tmp benötigt. Um /tmp von der Festplatte in den Arbeitsspeicher zu verschieben, benötigen Sie tmpfs Unterstützung im Kernel und fügen dann folgende Zeile in /etc/fstab ein:

Befehlsauflistung 5.7: Ändern von /etc/fstab um /tmp in den Arbeitsspeicher zu verschieben

none  /tmp  tmpfs  size=32m  0 0

Warnung: Wählen Sie den size (Größe des Verzeichnisses) Parameter mit besonderer Vorsicht. Falls Sie unsicher sind, überspringen Sie diesen Tipp, es kann bei falscher Konfiguration leicht zu Leistungseinbußen kommen. Falls Sie /var/log auf diese Weise mounten möchten, sorgen Sie dafür, dass die Logdateien vor dem unmounten auf die Festplatte geschrieben werden. Logdateien sind wichtig. Versuchen Sie nicht, /var/tmp in den Arbeitsspeicher zu verlagern. Portage benutzt es, um Programme zu kompilieren...

6.  Power Management für andere Geräte

Grafikkarten

Wenn Sie eine Grafikkarte ihr Eigen nennen, die PowerPlay (dynamische Taktänderungen für den Grafikprozessor GPU) unterstützt, können Sie dieses Merkmal in X.org aktivieren. Öffnen Sie /etc/X11/xorg.conf und fügen Sie die DynamicClocks Option im Device Abschnitt hinzu (bzw. aktivieren Sie die Option). Bitte beachten Sie, dass DynamicClocks auf einigen Systemen zu Abstürzen führt.

Befehlsauflistung 6.1: Aktivieren der ATI PowerPlay Unterstützung in X.org

Section "Device"
  [...]
  Option      "DynamicClocks" "on"
EndSection

Wireless Power Management

Auch WLAN-Karten verbrauchen einiges an Energie. Analog zu den Festplatten, kann man deren Power Management Eigenschaften aktivieren.

Notiz: Das Skript geht davon aus, dass ihre WLAN-Karte wlan0 ist. Setzen Sie dort den Namen ihres WLAN-Interfaces ein.

Fügen Sie die folgende Option zu /etc/conf.d/net hinzu, um automatisch das Power Management für Ihre WLAN-Karte zu aktiveren:

Befehlsauflistung 6.2: Automatisiertes WLAN Power Management

iwconfig_wlan0="power on"

Schauen Sie sich man iwconfig für Details und weitere Optionen an, u.a. Einstellungen zur Dauer zwischen Aufwachen und Timeout. Falls der Treiber Ihrer WLAN-Karte und Ihr Access Point ein Ändern der "beacon time" zulässt, ist das ein guter Ausgangspunkt, um noch mehr Energie einzusparen.

USB Power Management

Mit USB Geräten gibt es aus Sicht des Energiesparens zwei Probleme. Zum einen verbrauchen Geräte wie USB Mäuse, Digitalkameras oder USB Sticks Energie, wenn sie an den Laptop angeschlossen sind. Auch wenn man das nicht vermeiden kann, sollten Sie sie bei Nichtgebrauch dennoch entfernen. Zum anderen greift der USB Host Controller periodisch auf den Bus zu und verhindert dadurch, das der Prozessor in den C3/4 Schlafzustand schalten kann. Im Kernel gibt es eine experimentelle Option zur Aktivierung des Schlafzustands von USB Geräten durch Treiberaufrufe oder über die power/state Dateien in /sys.

Befehlsauflistung 6.3: Aktivierung der USB Schlafzustand-Unterstützung im Kernel

Device Drivers
  USB support
    [*]   Support for Host-side USB
      [*]   USB suspend/resume (EXPERIMENTAL)

7.  Schlafzustände: Sleep, Standby und Suspend to Disk

ACPI legt verschiedene Schlafzustände fest. Die wichtigen sind

  • S1 oder Standby
  • S3 oder Suspend to RAM oder Sleep
  • S4 oder Suspend to Disk oder Hibernate

Sie werden dann eingesetzt, wenn das System nicht benutzt wird, aber ein Herunterfahren wegen der langen Bootzeit unerwünscht ist.

Sleep (S3)

Aus gutem Grund ist die Unterstützung der verschiedenen Schlafzustände als experimentell markiert. APM Schlafzustände scheinen stabiler zu sein, leider kann man ACPI und APM aber nicht gleichzeitig einsetzen.

Befehlsauflistung 7.1: Kernelkonfiguration für die verschiedenen suspend-Typen

  Power Management Options --->
    [*]  Power Management support
    [*]  Suspend to RAM and standby

Sobald ihr Kernel wie oben abgebildet eingerichtet ist, können Sie das hibernate-script zum Aktivieren der verschiedenen Schlafzustände benutzen. Installieren wir es zuerst.

Befehlsauflistung 7.2: Installation von hibernate-script

# emerge hibernate-script

In /etc/hibernate müssen einige Einstellungen vorgenommen werden. Das hibernate-script Paket bringt einige Konfigurationsdateien für jeden Schlafzustand mit. Optionen, welche für alle Schlafmethoden gemeinsam sind, sind in common.conf untergebracht; stellen Sie sicher, dass diese Datei für Ihr System richtig eingerichtet ist.

Zur Konfiguration von Sleep bearbeiten Sie sysfs-ram.conf im Verzeichnis /etc/hibernate. UseSysfsPowerState mem ist bereits ausgewählt, aber falls Sie noch andere weitere Änderungen an diesem bestimmten Schlafzustand (oder irgendeinen anderen) vornehmen müssen, fügen Sie diese zu /etc/hibernate/hibernate.conf hinzu. Die Kommentare und Namen der Optionen sind Ihnen dabei behilflich. Falls Sie nfs oder samba shares über das Netzwerk benutzen, stellen Sie sicher die zugehörigen Init Skripte herunterzufahren, um Zeitüberschreitungen zu vermeiden.

Notiz: Für weitere Informationen über die Einrichtung von Schlafzuständen, lesen Sie bitte man hibernate.conf.

Fertig? Jetzt ist die letzte Chance, ein Backup der Daten anzulegen, die Sie nach Ausführung des nächsten Kommandos noch verwenden wollen. Beachten Sie, dass Sie zum Aufwecken des Laptops meist eine spezielle Taste wie Fn drücken müssen.

Befehlsauflistung 7.3: Sleep aufrufen

# hibernate-ram

Wenn Sie das hier lesen, scheint Sleep zu funktionieren. Sie können Standby (S1) auf ähnliche Weise einrichten, indem Sie sysfs-ram.conf editieren und "UseSysfsPowerState mem" zu "UseSysfsPowerState standby" ändern. S3 and S4 sind allerdings die interessanteren Schlafzustände, da Sie größere Energieeinsparungen erzielen.

Hibernate (S4)

Dieser Abschnitt beschreibt die Einrichtung des hibernate-Modus, bei dem ein Schnappschuss des Systems auf Festplatte gesichert wird und das System anschließend abgeschaltet wird. Beim Aufwecken wird dieser Schnappschuss wieder eingelesen und Sie können Ihre Arbeit an genau der Stelle fortsetzen, an der Sie zuvor hibernate aufgerufen haben.

Warnung: Tauschen Sie keine Hardware, die im Betrieb nicht an- und absteckbar ist, aus, wenn sie unterbrochen ist. Versuchen Sie nicht einen Schnappschuss mit einem anderen Kernel, als den, mit dem er erstellt wurde, zu laden. Schalten Sie jegliche NFS- oder Samba-Server/Clients aus bevor Sie den hibernate-Modus einschalten.

Es gibt zwei verschiedene Implementierungen von S4. Zuerst gab es swsusp und neuerdings tuxonice (früher suspend2) mit einer verbesserten Schnittstelle (inklusive fbsplash Unterstützung). Ein Vergleich der Features ist auf der tuxonice Homepage verfügbar. Es gab auch eine Zeitlang Suspend-to-Disk (pmdisk), eine Abspaltung von swsusp, die allerdings wieder mit swsusp verschmolzen wurde.

TuxOnIce ist noch nicht in den Hauptzweig des Kernels aufgenommen worden. Aus diesem Grund müssen Sie entweder ihre Kernelquellen mit den auf tuxonice.net bereitgestellten Änderungen patchen oder sys-kernel/tuxonice-sources benutzen.

Die Kernelkonfiguration für swsusp wie auch TuxOnIce sieht folgendermaßen aus:

Befehlsauflistung 7.4: Kernelkonfiguration für die verschiedenen hibernate Typen

Power Management support --->
  (hibernate mit swsusp)
  [*] Hibernation (aka 'suspend to disk')
      (Ersetzen Sie /dev/SWAP durch ihre swap Partition)
      (/dev/SWAP)      Default resume partition

  (hibernate mit TuxOnIce)
  Enhanced Hibernation (TuxOnIce)
    --- Image Storage (you need at least one allocator)
    [*]    File Allocator
    [*]    Swap Allocator
    ---   General Options
    [*]    Compression support
    [ ]     Allow Keep Image Mode
    [*]     Replace swsusp by default

Die Konfiguration von swsusp ist relativ einfach. Wenn Sie den Pfad zur Auslagerungsdatei nicht im Kernel abgespeichert haben, können Sie sie als Kernelparameter mit der resume=/dev/SWAP Direktive übergeben. Falls durch einen defekten Schnappschuss kein Booten möglich ist, übergeben Sie den noresume Kernelparameter. Das hibernate-cleanup Init-Skript setzt swsusp Schnappschüsse während des Boot-Prozesses außer Kraft.

Befehlsauflistung 7.5: swsusp-Schnappschüsse während des Bootens außer Kraft setzen

# rc-update add hibernate-cleanup boot

Benutzen Sie das hibernate-Skript, um hibernate mit swsusp aufzurufen. Setzen Sie UseSysfsPowerState disk in /etc/hibernate/sysfs-disk.

Warnung: Legen Sie vorher ein Backup ihrer Daten an. Rufen Sie sync vor der Ausführung von hibernate aus, um zwischengespeicherte Daten auf die Festplatte zu schreiben. Probieren Sie es zunächst außerhalb von X aus, dann bei laufendem X-Server, aber ausgeloggt.

Falls es, verursacht durch uhci oder ähnlichem, zu Kernelpaniken kommt, können Sie die USB Unterstützung als Modul kompilieren und vor Aktivierung des Schlafzustands aus dem Kernel entfernen. Es gibt Konfigurationsoptionen hierfür in common.conf.

Befehlsauflistung 7.6: Hibernate mit swsusp

# nano -w /etc/hibernate/common.conf
(Legen Sie bitte vorher ein Backup ihrer Daten an)
# hibernate

Der nächste Abschnitt diskutiert die Einrichtung von TuxOnIce inklusive fbsplash Unterstützung für einen netten grafischen Fortschrittsbalken während des hibernate Vorgangs.

Der erste Teil der Konfiguration ähnelt der von swsusp. Falls Sie den Ort Ihrer Swap-Partition nicht im Kernel gespeichert haben, können Sie ihn durch den resume=swap:/dev/SWAP Parameter übergeben. Wenn durch einen defekten Schnappschuss kein Booten möglich ist, hängen Sie den Parameter noresume an. Zusätzlich setzt das hibernate-cleanup Initskript TuxOnIce-Schnappschüsse während des Boot Prozesses außer Kraft.

Befehlsauflistung 7.7: TuxOnIce-Schnappschüsse während des Boot-Prozesses außer Kraft setzen

# rc-update add hibernate-cleanup boot

Nun editieren Sie /etc/hibernate/tuxonice.conf und aktivieren die TuxOnIce-Optionen, die Sie benötigen. Aktivieren Sie die fbsplash-Optionen in common.conf noch nicht.

Befehlsauflistung 7.8: Hibernate mit TuxOnIce

# nano -w /etc/hibernate/tuxonice.conf
(Legen Sie bitte vorher ein Backup ihrer Daten an)
# hibernate

Bitte konfigurieren Sie fbplash jetzt, falls Sie das nicht schon erledigt haben. Die Unterstützung für fbsplash während des hibernate Vorgangs wird vom Paket sys-apps/tuxonice-userui bereitgestellt. Es muss mit aktiviertem fbsplash USE Flag installiert werden.

Befehlsauflistung 7.9: Installation von tuxonice-userui

# echo "sys-apps/tuxonice-userui fbsplash" >> /etc/portage/package.use
# emerge tuxonice-userui

Das Ebuild weist Sie an, einen symbolischen Link auf das Thema ihrer Wahl zu erstellen. Um beispielsweise das livecd-2005.1 Thema zu verwenden, lautet der Befehl:

Befehlsauflistung 7.10: Benutzung des livecd-2005.1 Themas während des hibernate Vorgangs

# ln -sfn /etc/splash/livecd-2005.1 /etc/splash/tuxonice

Wenn Sie keinen schwarzen Bildschirm im ersten Abschnitt des Wiederaufnahmeprozesses (englisch resume process) haben wollen, müssen Sie das Werkzeug tuxoniceui_fbsplash zu Ihrem initrd Abbild hinzufügen. Angenommen Sie haben diesen mit splash_geninitramfs erstellt und in /boot/fbsplash-emergence-1024x768 gespeichert, hier eine kleine Anleitung, um das Werkzeug hinzuzufügen.

Befehlsauflistung 7.11: tuxoniceui_fbsplash zu einem initrd Abbild hinzufügen

# mount /boot
# mkdir ~/initrd.d
# cp /boot/fbsplash-emergence-1024x768 ~/initrd.d/
# cd ~/initrd.d
# gunzip -c fbsplash-emergence-1024x768 | cpio -idm --quiet -H newc
# rm fbsplash-emergence-1024x768
# cp /usr/sbin/tuxoniceui_fbsplash sbin/
# find . | cpio --quiet --dereference -o -H newc | gzip -9 > /boot/fbsplash-tuxonice-emergence-1024x768

Danach passen Sie grub.conf (oder lilo.conf) an, so dass Ihr TuxOnIce-Kernel /boot/fbsplash-tuxonice-emergence-1024x768 als initrd Abbild benutzt. Mit untenstehendem Aufruf können Sie einen Testlauf ohne eigentliches hibernate starten.

Befehlsauflistung 7.12: Testlauf für fbsplash hibernate

# tuxoniceui_fbsplash -t

Danach öffnen Sie /etc/hibernate/common.conf erneut und aktivieren die fbsplash Optionen. Rufen Sie hibernate auf und Sie erhalten eine nette grafische Fortschrittsanzeige.

8.  Probleme und Lösungen

F: Ich versuche die CPU Frequenz zu ändern, aber /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor existiert nicht.

A: Stellen Sie sicher, dass ihr Prozessor das Ändern der Frequenz unterstützt und das Sie den richtigen Treiber für ihren Prozessor ausgewählt haben. Hier ist eine Liste der Prozessoren, die von cpufreq unterstützt werden (Kernel 2.6.7): ARM Integrator, ARM-SA1100, ARM-SA1110, AMD Elan - SC400, SC410, AMD mobile K6-2+, AMD mobile K6-3+, AMD mobile Duron, AMD mobile Athlon, AMD Opteron, AMD Athlon 64, Cyrix Media GXm, Intel mobile PIII und Intel mobile PIII-M bei bestimmten Chipsätzen, Intel Pentium 4, Intel Xeon, Intel Pentium M (Centrino), National Semiconductors Geode GX, Transmeta Crusoe, VIA Cyrix 3 / C3, UltraSPARC-III, SuperH SH-3, SH-4, mehrere "PowerBook" und "iBook2" sowie verschiedene Prozessoren in ACPI 2.0-kompatiblen Systemen (nur wenn "ACPI Processor Performance States" über die ACPI/BIOS Schnittstelle verfügbar sind).

F: Mein Laptop unterstützt Frequenzänderungen des Prozessors, aber /sys/devices/system/cpu/cpu0/cpufreq/ ist leer.

A: Schauen Sie nach ACPI Fehlermeldungen per dmesg | grep ACPI. Eventuell ist das Problem mit einem BIOS Update in den Griff zu bekommen, insbesondere wenn eine falsche DSDT angezeigt wird. Falls kein BIOS Update zur Verfügung steht, kann man DSDT Fehler auch selber beheben - das wird an anderer Stelle beschrieben.

F: Mein Laptop unterstützt Frequenzänderungen des Prozessors, aber /proc/cpuinfo meldet keine Änderungen.

A: Wahrscheinlich haben Sie die Unterstützung für Mehrprozessorsysteme (englisch "symmetric multiprocessing support"; CONFIG_SMP) im Kernel aktiviert. Deaktivieren Sie es und es sollte funktionieren. Einige ältere Kernel hatten diesbezüglich einen Fehler. In diesem Fall führen Sie emerge x86info aus, konfigurieren Sie ihren Kernel wie angegeben und überprüfen und überprüfen Sie die aktuelle Prozessorgeschwindigkeit mit x86info -mhz.

F: Ich kann die Prozessorgeschwindigkeit ändern, erreiche in einem anderen Betriebssystem aber tiefere Werte.

A: Sie können das Ändern der Prozessorgeschwindigkeit mit ACPI Drosselung (throttling) kombinieren, um eine geringere Minimalfrequenz zu erhalten. Allerdings spart man dadurch kaum mehr Energie. Drosselung ist am ehesten sinnvoll, um die Temperatur niedrig zu halten. Den aktuellen Status erhält man mit cat /proc/acpi/processor/CPU/throttling. Änderungen können Sie durch echo -n "0:x" > /proc/acpi/processor/CPU/limit vornehmen, wobei x einer der in /proc/acpi/processor/CPU/throttling aufgelisteten Zustände ist.

F: Beim Konfigurieren des Kernels tauchen die Regler für "kernel", "powersave" und "userspace" auf, aber der Regler für "ondemand" fehlt. Was soll ich tun?

A: Der "ondemand"-Regler wird nun in den neueren Kernelquellen eingebunden. Versuchen Sie diese zu aktualisieren.

F: Die Batteriezeit ist geringer als vorher.

A: Überprüfen Sie die BIOS Einstellungen. Vielleicht haben Sie vergessen, einige Einstellungen wieder zu aktivieren.

F: Meine Batterie ist voll geladen, KDE geht allerdings von 0% aus und fährt das System herunter.

A: Stellen Sie sicher, dass Unterstützung für die Batterie in den Kernel kompiliert ist. Falls Sie es als Modul kompiliert haben, laden Sie das Modul, bevor Sie KDE starten.

F: Im Systemprotokoll erhalte ich Meldungen wie "logger: ACPI group battery / action battery is not defined".

A: Diese Meldung wird vom /etc/acpi/default.sh script erzeugt, welches mit acpid ausgeliefert wird. Sie können die Meldung gefahrlos ignorieren. Möchten Sie sie loswerden, kommentieren Sie die entsprechende Zeile in /etc/acpi/default.sh wie folgt:

Befehlsauflistung 8.1: Warnung über unbekannte acpi Events abschalten

    *)      # logger "ACPI action $action is not defined"

F: Ich habe einen Dell Inspiron 51XX und erhalte keine ACPI Ereignisse.

A: Das scheint ein Bug im Kernel zu sein. Weitere Informationen gibt es hier.

F: Ich habe die DynamicClocks Option in xorg.conf aktiviert und jetzt stürzt X.org dauernd ab / der Bildschirm bleibt schwarz / mein Laptop fährt nicht mehr richtig herunter.

A: DynamicClocks funktioniert nicht auf allen Systemen zuverlässig. Schalten Sie die Option ab.

F: Ich möchte TuxOnIce verwenden, aber es beschwert sich über eine zu kleine swap-Partition. Ein Vergrößern dieser ist nicht möglich.

A: Wenn Sie genug freien Speicherplatz auf ihrem System haben, können Sie anstelle von swapwriter filewriter verwenden. Das hibernate-script unterstützt diese Option. Weitere Informationen gibt es in /usr/src/linux/Documentation/power/tuxonice.txt.

F: Ich habe eine neue Batterie gekauft - sie hält aber nur ein paar Minuten! Was mache ich falsch?

A: Folgen Sie den Anweisungen des Herstellers und laden Sie die Batterie vollständig auf.

F: Obiges hilft nicht. Was soll ich jetzt tun?

A: Einige als "neu" verkaufte Batterien liegen schon mehrere Monate auf Lager und sind nicht mehr zu gebrauchen. Probieren Sie folgendes:

Befehlsauflistung 8.2: Batteriestatus überprüfen

$ grep capacity /proc/acpi/battery/BAT0/info
design capacity:     47520 mWh
last full capacity:  41830 mWh

Wenn die "last full capacity", also die beim letzten vollständigen Laden erreichte Kapazität, sich signifikant von der "design capacity" unterscheidet, ist die Batterie wahrscheinlich kaputt. Machen Sie ihre Garantieansprüche geltend.

F: Mein Problem ist hier nicht aufgelistet. Wo bekomme ich Hilfe?

A: Sie können mich, Dennis Nienhüser, direkt kontaktieren. Die Gentoo Foren sind ebenfalls ein sehr guter Anlaufpunkt. Es gibt dort auch ein deutsches Forum. Wenn Sie IRC vorziehen, probieren Sie es im #gentoo-laptop Kanaly.



Drucken

Seite aktualisiert 2. März 2011

Die Originalversion dieser Übersetzung wird nicht länger gepflegt

Zusammenfassung: Der Schlüssel zur Verlängerung der Batterielaufzeit mobiler Endgeräte (insbesondere Laptops) heißt Power Management. Diese Anleitung hilft bei der Einrichtung.

Dennis Nienhüser
Autor

Chris White
Bearbeiter

Joshua Saddler
Bearbeiter

Stefan Kienzl
Korrektor

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.