ACPI (Advanced Configuration and Power Interface) wurde entwickelt, um dem Betriebssystem die Einrichtung und Steuerung der einzelnen Hardwarekomponenten zu ermöglichen. ACPI ersetzt PnP und APM. Diese Schnittstelle bietet Informationen zu Akku, Netzteil, Temperatur, Lüfter und Systemereignissen wie dem Schließen des Deckels oder einem niedrigen Akkuladestand.
Das BIOS bietet Tabellen mit Informationen zu den einzelnen Komponenten und
Hardwarezugriffsmethoden. Das Betriebssystem verwendet diese Informationen
für Aufgaben wie das Zuweisen von Interrupts oder das Aktivieren bzw.
Deaktivieren von Komponenten. Da das Betriebssystem die in BIOS
gespeicherten Befehle ausführt, hängt die Funktionalität von der
BIOS-Implementierung ab. Die Tabellen, die ACPI erkennen und laden kann,
werden in /var/log/boot.msg gemeldet. Weitere
Informationen zur Fehlersuche bei ACPI-Problemen finden Sie in Abschnitt 21.3.4, „Fehlersuche“.
Wenn der Kernel beim Booten des Systems ein ACPI-BIOS entdeckt, wird ACPI
automatisch aktiviert und APM deaktiviert. Bei einigen älteren Computern
kann der Bootparameter acpi=force erforderlich sein. Der
Computer muss ACPI 2.0 oder höher unterstützen. Überprüfen Sie anhand der
Bootmeldungen unter /var/log/boot.msg, ob ACPI
aktiviert wurde.
Anschließend muss eine Reihe von Modulen geladen werden. Dies erfolgt
über das Startskript des powersave-Daemons. Wenn eines dieser Module
Probleme verursacht, kann das betreffende Modul unter
/etc/sysconfig/powersave/common vom Lade- bzw.
Entladevorgang ausgeschlossen werden.
Das Systemprotokoll
(/var/log/messages) enthält die Meldungen der Module,
denen Sie entnehmen können, welche Komponenten erkannt wurden.
/proc/acpi enthält nun eine Anzahl von Dateien, die
Informationen über den Systemzustand bieten oder zum Ändern einiger
Zustände verwendet werden können. Manche Funktionen funktionieren noch
nicht, da sie sich noch in der Entwicklungsphase befinden. Die
Unterstützung einiger Funktionen hängt weitgehend von der Implementierung
durch den Hersteller ab.
Alle Dateien (mit Ausnahme von dsdt und
fadt) können mit cat gelesen
werden. Bei einigen Dateien können die Einstellungen mit
echo bearbeitet werden, beispielsweise echo
X > file zur Angabe geeigneter Werte für X.
Verwenden Sie immer den Befehl powersave zum Zugriff auf
diese Informationen und Steueroptionen. Im Folgenden werden die wichtigsten
Dateien beschrieben:
/proc/acpi/infoAllgemeine Informationen zu ACPI.
/proc/acpi/alarmHier können Sie angeben, wann das System aus einem Ruhezustand wieder aktiviert werden soll. Zurzeit wird diese Funktion nicht vollständig unterstützt.
/proc/acpi/sleepBietet Informationen zu möglichen Ruhezuständen.
/proc/acpi/event
Hier werden alle Ereignisse gemeldet und vom Powersave-Daemon
(powersaved) verarbeitet. Wenn kein Daemon auf diese
Datei zugreift, können Ereignisse, wie ein kurzes Antippen des
Netzschalters oder das Schließen des Deckels mit cat
/proc/acpi/event gelesen werden (Beenden mit
-C).
/proc/acpi/dsdt und
/proc/acpi/fadt
Diese Dateien enthalten die ACPI-Tabellen DSDT (Differentiated System
Description Table) und FADT (Fixed ACPI Description Table). Diese können
mit acpidmp, acpidisasm und
dmdecode gelesen werden. Diese Programme und ihre
Dokumentation befinden sich im Paket pmtools. Beispiel: acpidmp
DSDT | acpidisasm.
/proc/acpi/ac_adapter/AC/stateZeigt an, ob das Netzteil angeschlossen ist.
/proc/acpi/battery/BAT*/{alarm,info,state}
Detaillierte Informationen zum Ladezustand des Akkus. Der Ladezustand
wird durch einen Vergleich zwischen last full
capacity (letzte volle Kapazität) aus info
(Info) und remaining capacity (verbleibende
Kapazität) aus state (Zustand) ermittelt. Bequemer
lässt sich der Ladezustand mit einem der speziellen Programm ermitteln,
die in Abschnitt 21.3.3, „ACPI-Werkzeuge“ beschrieben werden. Der
Ladezustand, bei dem ein Akku-Ereignis ausgelöst wird, kann unter
alarm (Alarm) angegeben werden.
/proc/acpi/buttonDieses Verzeichnis enthält Informationen zu verschiedenen ACPI Buttons.
/proc/acpi/fan/FAN/state
Zeigt, ob der Lüfter zurzeit aktiv ist. Sie können den Lüfter manuell
aktivieren bzw. deaktivieren, indem Sie 0 (ein) bzw.
3 (aus) in diese Datei schreiben. Diese Einstellung
wird jedoch sowohl vom ACPI-Code im Kernel als auch von der Hardware
(bzw. BIOS) überschrieben, wenn die Temperatur zu hoch wird.
/proc/acpi/processor/*Für jede CPU im System wird ein gesondertes Unterverzeichnis geführt.
/proc/acpi/processor/*/infoInformationen zu den Energiesparoptionen des Prozessors.
/proc/acpi/processor/*/power
Informationen zum aktuellen Prozessorzustand. Ein Sternchen neben
C2 zeigt an, dass der Prozessor zurzeit nicht genutzt
wird. Dies ist der häufigste Zustand, wie aus dem Wert
usage (Nutzung) ersichtlich ist.
/proc/acpi/processor/*/throttlingHiermit kann die Drosselung (Throttling) der Prozessoruhr festgelegt werden. Normalerweise ist Throttling in acht Stufen möglich. Dies hängt von der Frequenzsteuerung der CPU ab.
/proc/acpi/processor/*/limitWenn Leistung (obsolet) und Throttling automatisch von einem Daemon gesteuert werden, können hier die Obergrenzen angegeben werden. Einige der Grenzwerte werden durch das System bestimmt. Andere können vom Benutzer angepasst werden.
/proc/acpi/thermal_zone/Für jede Thermalzone ist ein eigenes Unterverzeichnis vorhanden. Eine Thermalzone ist ein Bereich mit ähnlichen thermischen Eigenschaften. Ihre Anzahl und Bezeichnungen werden vom Hardwarehersteller festgelegt. Viele der von ACPI gebotenen Möglichkeiten werden jedoch kaum implementiert. Stattdessen wird die Temperatursteuerung üblicherweise dem BIOS überlassen. Das Betriebssystem hat kaum Gelegenheit, einzugreifen, da die Lebensdauer der Hardware in Gefahr ist. Daher haben einige der Dateien nur einen theoretischen Wert.
/proc/acpi/thermal_zone/*/temperatureAktuelle Temperatur der thermalen Zone.
/proc/acpi/thermal_zone/*/state
Dieser Status zeigt an, ob alles ok (in Ordnung) ist
bzw. ob ACPI active (aktive) oder
passive (passive) Kühlung durchführt. Bei
ACPI-unabhängiger Lüftersteuerung ist dieser Zustand immer
ok.
/proc/acpi/thermal_zone/*/cooling_modeWählen Sie die von ACPI gesteuerte Kühlmethode aus. Wählen Sie einen passiven (weniger Leistung, sparsamer) oder aktiven (volle Leistung, Lüftergeräusche) Kühlmodus aus.
/proc/acpi/thermal_zone/*/trip_points
Aktiviert die Ermittlung von Temperaturgrenzen zur Auslösung spezieller
Vorgänge, wie passiver bzw. aktiver Kühlung, Suspend-Modus (beim Zustand
(hot) oder Herunterfahren (beim Zustand
critical). Die möglichen Aktionen sind in
der DSDT definiert (geräteabhängig). Folgende Schwellenwerte werden in
der ACPI-Spezifikation festgelegt: critical
(kritisch), hot (heiß), passive
(passiv), active1 (aktiv1) und
active2 (aktiv2). Auch wenn sie nicht alle
implementiert sind, müssen sie stets in dieser Reihenfolge in die Datei
eingegeben werden. Der Eintrag echo 90:0:70:0:0 >
trip_points setzt die Temperatur für
critical (kritisch) auf 90 und die
Temperatur für passive (passiv) auf
70 Grad Celsius.
/proc/acpi/thermal_zone/*/polling_frequency
Wenn der Wert in temperature bei
Temperaturänderungen nicht automatisch aktualisiert wird, können Sie
hier auf einen anderen Erhebungsmodus umschalten. Der Befehl
echo X >
/proc/acpi/thermal_zone/*/polling_frequency führt
zu einer Abfrage der Temperatur alle X Sekunden. Um
die Erhebung zu deaktivieren, setzen Sie X=0.
Keine dieser Einstellungen, Informationen und Ereignisse muss manuell bearbeitet werden. Dies ist über den Powersave-Daemon (powersaved) und verschiedene Anwendungen, wie powersave, kpowersave und wmpowersave, möglich. Siehe Abschnitt 21.3.3, „ACPI-Werkzeuge“. Da powersaved auch die Funktionen des älteren Daemon acpid umfasst, wird acpid nicht mehr benötigt.
Mit der CPU sind Energieeinsparungen auf drei verschiedene Weisen möglich. Je nach Betriebsmodus des Computers können diese Methoden auch kombiniert werden. Energiesparen bedeutet auch, dass sich das System weniger erhitzt und die Lüfter seltener in Betrieb sind.
Bei AMD und Intel läuft diese Technologie unter dem Namen
PowerNow! bzw.
Speedstep. Doch auch in die Prozessoren
anderer Hersteller ist diese Technologie integriert. Taktfrequenz und
Kernspannung der CPU werden gleichzeitig verringert, was zu mehr als
linearen Energieeinsparungen führt. Eine Halbierung der Frequenz (halbe
Leistung) führt also dazu, dass wesentlich weniger als die Hälfte der
Energie verbraucht wird. Diese Technologie ist von APM bzw. ACPI
unabhängig. Sie erfordert einen Daemon, der die Frequenz und die
aktuellen Leistungsanforderungen anpasst. Diese Einstellungen
können im Verzeichnis
/sys/devices/system/cpu/cpu*/cpufreq/ vorgenommen
werden.
Bei dieser Technologie wird ein bestimmter Prozentsatz der
Taktsignalimpulse für die CPU ausgelassen. Bei einer Drosselung von 25 %
wird jeder vierte Impuls ausgelassen. Bei 87.5 % erreicht nur jeder
achte Impuls den Prozessor. Die Energieeinsparungen sind allerdings ein
wenig geringer als linear. Normalerweise wird die Drosselung nur
verwendet, wenn keine Frequenzskalierung verfügbar ist oder wenn
maximale Energieeinsparungen erzielt werden sollen. Auch diese
Technologie muss von einem speziellen Prozess gesteuert werden. Die
Systemschnittstelle lautet
/proc/acpi/processor/*/throttling.
Das Betriebssystem versetzt den Prozessor immer dann in den Ruhezustand,
wenn keine Arbeiten anstehen. In diesem Fall sendet das Betriebssystem
den Befehl Halt an die CPU. Es gibt drei Zustände:
C1, C2 und C3. Im Zustand mit der höchsten Energieeinsparung, C3, wird
sogar die Synchronisierung des Prozessor-Cache mit dem Hauptspeicher
angehalten. Daher ist dieser Zustand nur möglich, wenn der Inhalt des
Hauptspeichers von keinem anderen Gerät über Busmaster-Aktivitäten
bearbeitet wird. Einige Treiber verhindern die Verwendung von C3. Der
aktuelle Zustand wird unter
/proc/acpi/processor/*/power angezeigt.
Frequenzskalierung und Throttling sind nur relevant, wenn der Prozessor belegt ist. Der sparsamste C-Zustand ist ohnehin, wenn sich der Prozessor im Wartezustand befindet. Wenn die CPU belegt ist, ist die Frequenzskalierung die empfohlene Energiesparmethode. Häufig arbeitet der Prozessor nur im Teillast-Betrieb. In diesem Fall kann er mit einer niedrigeren Frequenz betrieben werden. Normalerweise ist eine dynamische Frequenzskalierung, die von einem Daemon (z. B. powersaved) gesteuert wird, der beste Ansatz. Eine statische Einstellung auf eine niedrige Frequenz ist nur bei Akkubetrieb oder wenn der Computer kühl oder geräuscharm arbeiten soll sinnvoll.
Throttling sollte nur als letzter Ausweg verwendet werden, um die Betriebsdauer des Akkus trotz hoher Systemlast zu verlängern. Einige Systeme arbeiten bei zu hohem Throttling jedoch nicht reibungslos. Außerdem hat die CPU-Drosselung keinen Sinn, wenn die CPU kaum ausgelastet ist.
Unter SUSE Linux werden diese Technologien vom Powersave-Daemon gesteuert. Die Konfiguration wird in Abschnitt 21.5, „Das powersave-Paket“ erläutert.
Zu der Palette der mehr oder weniger umfassenden ACPI-Dienstprogramme
gehören Werkzeuge, die lediglich Informationen anzeigen, wie beispielsweise
Akku-Ladezustand und Temperatur (acpi, klaptopdaemon, wmacpimon, usw.),
Werkzeuge, die den Zugriff auf die Strukturen unter
/proc/acpi ermöglichen oder Überwachungsänderungen
erleichtern (akpi, acpiw, gtkacpiw), sowie Werkzeuge zum Bearbeiten der
ACPI-Tabellen im BIOS (Paket pmtools).
Es gibt zwei verschiedene Arten von Problemen. Einerseits kann der ACPI-Code des Kernels Fehler enthalten, die nicht rechtzeitig erkannt wurden. In diesem Fall wird eine Lösung zum Download bereitgestellt. Häufiger jedoch werden die Probleme vom BIOS verursacht. Manchmal werden Abweichungen von der ACPI-Spezifikation absichtlich in das BIOS integriert, um Fehler in der ACPI-Implementierung in anderen weit verbreiteten Betriebssystemen zu umgehen. Hardwarekomponenten, die ernsthafte Fehler in der ACPI-Implementierung aufweisen, sind in einer Blacklist festgehalten, die verhindert, dass der Linux-Kernel ACPI für die betreffenden Komponenten verwendet.
Der erste Schritt, der bei Problemen unternommen werden sollte, ist die Aktualisierung des BIOS. Wenn der Computer sich überhaupt nicht booten lässt, kann eventuell einer der folgenden Boot-Parameter Abhilfe schaffen:
ACPI nicht zum Konfigurieren der PCI-Geräte verwenden.
Nur eine einfache Ressourcenkonfiguration durchführen. ACPI nicht für andere Zwecke verwenden.
ACPI deaktivieren.
![]() | Probleme beim Booten ohne ACPI |
|---|---|
Einige neuere Computer (insbesondere SMP- und AMD64-Systeme) benötigen ACPI zur korrekten Konfiguration der Hardware. Bei diesen Computern kann die Deaktivierung von ACPI zu Problemen führen. | |
Überwachen Sie nach dem Booten die Bootmeldungen des Systems mit dem
Befehl dmesg | grep -2i acpi (oder alle
Meldungen, da das Problem möglicherweise nicht durch ACPI verursacht
wurde). Wenn bei der Analyse einer ACPI-Tabelle ein Fehler auftritt, kann
die wichtigste Tabelle, DSDT, durch eine verbesserte Version ersetzt
werden. In diesem Fall wird die fehlerhafte DSDT des BIOS ignoriert. Das
Verfahren wird in Abschnitt 21.5.4, „Fehlersuche“ erläutert.
In der Kernelkonfiguration gibt es einen Schalter zur Aktivierung der ACPI-Fehlersuchmeldungen. Ein mit ACPI-Fehlersuche kompilierter und installierter Kernel unterstützt Experten, die nach einem Fehler suchen, mit detaillierten Informationen.
Wenn Sie Probleme mit dem BIOS oder der Hardware feststellen, sollten Sie stets Kontakt mit den betreffenden Herstellern aufweisen. Insbesondere Hersteller, die nicht immer Hilfe für Linux anbieten, sollten mit den Problemen konfrontiert werden. Die Hersteller nehmen das Problem nur dann ernst, wenn sie feststellen, dass eine nennenswerte Zahl ihrer Kunden Linux verwendet.
Weitere Dokumentation und Hilfe zu ACPI:
http://www.cpqlinux.com/acpi-howto.html (detailliertes ACPI HOWTO, enthält DSDT-Patches)
http://www.intel.com/technology/iapc/acpi/faq.htm (ACPI FAQ @Intel)
http://acpi.sourceforge.net/ (das ACPI4Linux-Projekt von Sourceforge)
http://www.poupinou.org/acpi/ (DSDT-Patches von Bruno Ducrot)