ACPI: Advanced Configuration and Power Interface
Az ACPI nagyon jó dolog. Eddig nem nagyon foglalkoztam vele a kernel konfigurálások során, most azonban jobban szemügyre vettem. Az ACPI segítségével a gépünket egy gombnyomásra ki tudjuk kapcsolni, le tudjuk kérdezni a notebook akkumulátorának töltöttségi állapotát, a hátralevő üzemidejét, a processzor hőmérsékletét, a processzor órajelét, hibernációba tudjuk kényszeríteni a laptopot, be tudod állítani, hogy a CPU-d kevesebb energiát használjon, stb. Nem csak notebookokhoz használhatjuk, hanem gombnyomásra ki tudjuk vele kapcsolni az asztali gépünket is. Már ha az hardveresen képes erre.
Az ACPI része a 2.4.20-as kernelnek (azt hiszem, hogy a 2.4.18-tól jelent meg) de sajnos nem nagyon működik minden géppel. Sebaj, mert a Sourceforge-n megtaláljuk az eredeti projectet, és az nekem szépen működik a 2.4.20-szal.
A legfrissebb kernelpatchet szedjük le innen:
http://sourceforge.net/projects/acpi
Patcheljük meg vele a kernelt. Fordítsuk bele a kernelbe fixen az ACPI funkciókat. Az APM-et *ne* használjuk, mert nem kompatibilisek egymással! Ha ez kész, bootoljunk a friss kernellel. Az ACPI funkciók elérhetőek lesznek a /proc/acpi alatt.
Az ACPI daemon telepítése szükséges mondjuk a sleep gomb működtetéséhez. Telepítsük fel:
apt-get install acpid
Mire is tudjuk használni? Nézzünk egy konkrét példát:Számítógép kikapcsolása egy gombnyomásra:
Ki akarom kapcsolni a gépemet a sleep gombbal. Az acpid figyeli a sleep gomb által generált eseményt, és a hozzá rendelt scriptet lefuttatja. Hogy is működik? Nézzünk be a /etc/acpi/events könyvtárba. Itt találunk egy "esemény" filet, amelyben a figyelendő esemény, és az eseményhez rendelt végrehajtandó script nevét találjuk:
[...]
event=button[ /]sleep
action=/etc/acpi/powerbtn.sh
[...]
a /etc/acpi/powerbtn.sh script tartalma:
#!/bin/sh
# /etc/acpi/poweroff.sh
# Initiates a shutdown when the power putton has been
# pressed.
/sbin/init 0
csak így egyszerűen. A folyamat pedig a következő. Megnyomom a sleep gombot, az acpi daemon "elkapja" az eseményt, megnézi, hogy mi van hozzátársítva, és végrehajtja a scriptet, ami jelen esetben leállítja a számítógépet.
Akkumulátor töltöttség figyelése notebookon:
Kényelmetlen lenne állandóan a
cat /proc/acpi/battery/BAT1/state
parancsot kiadva nézegetni az akku állapotát, ezért keresni kezdtem hozzá valamilyen "lekérdezőkét". Találtam is kettő plugint a gkrellm-hez (apt-get install gkrellm), de sajnos egyik sem működött hibátlanul (egyik speciálisan a Dell laptopokhoz készült, a másik meg a gkrellm2-höz). Ja és a legutolsó ACPI patchben megváltozott az elnevezési séma is ;-) Sebaj, az egyiket átírtam, és az eredményt megnézheted:
táplálás hálózatról használat akkuról akku töltése akku fullon
Működik a processzor hőmérséklet kijelzés is. Az általam hackelt plugin forráskódját le tudod szedni innen: gkrellmACPI-1.0.tar.gz
Tervbe van még véve a hibernálási funkció megvalósítása is. Az ACPI nagyon jó dolog lesz ha elkészül. Egyelőre experimental, de nagyon jól működik.