Portál AbcLinuxu, 29. dubna 2024 18:40

Hibernace

9. 2. 2006 | Tibor Piňo
Články - Hibernace  

Jak uspat notebook vám poradí návod, který obsahuje popis nastavení jádra, ACPI a dalších nástrojů nutných k úspěšnému zprovoznění hibernace.

Úvod

Hibernácia v Linuxe je oblasť ešte nie úplne prebádaná, potýkajúca sa s množstvom problémov. Medzi najväčšie úskalia patria grafické karty, ktoré nie vždy najlepšie spolupracujú. Základným kameňom pre nás bude ACPI (Advanced Configuration and Power Interface) a software suspend zo stránky (www.suspend2.net). ACPI bolo vyvinuté firmami ako HP, Intel, Microsoft, Phoenix a Toshiba. V súčasnosti ide de facto o štandard v oblasti riadenia spotreby. V Linuxe má ACPI slušnú podporu, tak prečo to nevyužiť. K software suspend dodám len toľko, že zvyčajne funguje lepšie, ako software suspend zahrnutý priamo vo vanilla jadre. V našom článku si samozrejme ukážame niekoľko trikov a tipov, ako sa horeuvedeným problémom vyhnúť. Tak, a už stačilo suchej teórie, môžeme sa pustiť do práce.

Ingrediencie:

Začíname:

  1. V prvom kroku si rozbalíme zdrojové kódy jadra do adresára /usr/src/linux.
  2. Rozbalíme si stiahnutý suspend patch napr. do /usr/src/patch/suspend.
  3. Následne sa presunieme do adresára /usr/src/linux.
  4. Príkazom /usr/src/patch/suspend/apply aplikujeme patch na jadro.
  5. V prípade, že by sme z akýchkoľvek dôvodov niekedy chceli patch odstrániť, použijeme taký istý postup s príkazom /usr/src/patch/suspend/unapply.

Nastavenie jadra

Po úspešnom "opatchovaní" jadra musíme v ďalšom kroku postupne povoliť v jadre všetky potrebné položky, ako je náš suspend, riadenie spotreby ACPI...

Pre povolenie suspend musíme zadať v jadre nasledujúce:

hibernace-acpi
Power management support -> Suspend2

Pre povolenie riadenia spotreby ACPI musíme zadať v jadre nasledujúce:

hibernace-suspend
Power management support -> ACPI support

Ako môžeme vidieť, je značnou výhodou, že ACPI má preddefinovanú extra podporu pre vybrané značky notebookov.

Tak, a teraz stačí len jadro skompilovať a úspešne z neho nabootovať.

Konfigurácia

V ďalšom kroku sa budeme venovať nainštalovaniu hibernate scriptu, ktorý sa bude starať o uspávanie nášho miláčika a samotným nastaveniam hibernácie. Rozbalíme balík s hibernate scriptom, presunieme sa do adresára, kde sme súbory rozbalili a inštaláciu spustíme príkazom ./install.sh, čím sa nám nainštalujú potrebné veci. Nás bude hlavne zaujímať:

Nastavenie hibernácie

Teraz by sme mali mať všetko pripravené k úspešnej hibernácii a môžeme sa pustiť do jej nastavovania.

Celé to funguje nasledovne. Beží nám démon acpid (musíme ho mať, samozrejme, nainštalovaný), ktorý sa stará o obsuhu udalostí. Napríklad, ak zavrieme notebook, démon acpid obslúži túto udalosť a zavolá napr. náš hibernate script. Nastavenie obsluhy týchto udalostí vykonávame v adresári /etc/acpi/events/ tým spôsobom, že doň vkladáme skripty, v ktorých udávame, pre akú udalosť má démon spúšťať konkrétne programy.

Ak by sme si chceli sami odskúšať, aké ACPI udalosti generuje náš notebook, musíme vypnúť démona acpid a následne príkazom cat /proc/acpi/event môžeme po stlačení príslušnej klávesy alebo kombinácie kláves na obrazovke vidieť, aké udalosti generuje náš notebook a obslúžiť ich tak, ako sme písali vyššie.

U mňa to funguje nasledovne. V adresári /etc/acpi/events mám vytvorený súbor lid, ktorý zavolá script hibernate po zatvorení notebooku. Taktiež si môžeme zvoliť vlastnú kombináciu pre uspávanie notobooku, ktorú zistíme horeuvedeným spôsobom.

Teraz sa budeme venovať nastaveniam samotnej hibernácie. Všetky zmeny budeme vykonávať v súbore /etc/hibernate/hibernate.conf. Štruktúra tohto súboru je veľmi intuitívna a zvládne ju aj začiatočník, ja budem opisovať problémy, s ktorými som sa stretol. V prvom kroku musíme nastaviť spôsob uspávania, a to je napr. suspend to ram alebo suspend to disk. My si zvolíme suspend to ram.

PowerdownMethod 3

Rozdiel medzi suspend to ram a suspend to disk je v tom, že pri suspend to disk sa uloží obsah pamäte na disk a notebooku sa úplne vypne (opätovné spustenie je všeobecne o niečo pomalšie ako pri suspend to ram), zatiaľ čo pri suspend to ram dáta ostávajú v pamäti a notebook spotrebúvava určité množstvo energie.

Často sa mi stávalo, že pri zatvorení notebooku som v ňom nechal zastrčený USB flash disk, takže ho treba "umountnuť", aby som ho po zobudení notebooku mohol opäť korektne pripojiť.

Unmount /media/usbdisk

Pri uspaní je dobré vypnúť sieť a taktiež používam dosť často pcmcia kartu, ktorú takisto odpájam.

DownInterfaces eth0
UpInterfaces auto

EjectCards yes

Mojím najväčším problémom a musím podotknúť, že nielen mojím, bolo rozchodenie grafickej karty po otvorení notebooku. Vždy sa mi notebook prebudil do čiernej obrazovky a problémom bola práve grafická karta. Vyriešil som to programom video_post, ktorý by mal dokázať opäť rozchodiť vašu grafickú kartu. Primárne je určený pre grafické karty od ATI, ale funguje aj na iných typoch (osobne odskúšané). Video_post treba rozbaliť, skompilovať, vložiť niekde do systému (najlepšie tam, kde majú naň dosah systémové premenné) a vložiť nasledujúce riadky do nášho súboru /etc/hibernate/hibernate.conf:

OnResume 30 /root/emu/video_post
OnResume 20 chvt 1
OnResume 10 chvt 7

Samozrejme, že cestu /root/emu/video_post nahradíte vašou cestou ku skompilovanému video_post.

Niekto nemusí mať s prebudením svojej grafickej karty problém, takže video_post vôbec nepotrebuje a do /etc/hibernate/hibernate.conf stačí zadať nasledujúce riadky:

OnResume 20 chvt 1
OnResume 10 chvt 7

Tento článok si nekladie za cieľ byť vyčerpávajúcim návodom. Snažil som sa byť čo najvšeobecnejší a úspech závisí od konkrétneho hardvéru. Určite vám môže byť nápomocná vynikajúca webová stránka www.linux-laptop.net, na ktorej nájdete množstvo príkladov konfigurácii k vášmu notebooku na rôznych distribúciách Linuxu.

Související články

Jaderné noviny
Kompilovanie jadra - I
Kompilovanie jadra - II
Nebojíme se kompilace - I (teorie)
Nebojíme se kompilace - II (praxe)
Nebojíme se kompilace - III (ladíme)

Odkazy a zdroje

www.linux-laptop.net
patch suspend pre jadro
hibernate script
Kernel Bug Tracker: S3 resume: no video - Sony S1XP (nástroj video_post)

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.