Software Suspend 2

Software Suspend, který je obsažen v jádře, nefunguje vždy dobře. Jako alternativa se nabízí Software Suspend 2, který je ale vyvíjen mimo jádro a je nutné ho dodat patchem.

Aplikace patche a konfigurace jádra

Patch je ke stažení na domovské stránce projektu - http://www.suspend2.net/ - v názvu souboru je udána jak verze suspend, tak i verze jádra, pro které je tento patch určen. Jádro opatchujete snadno: přesunete se do adresáře, ve kterém máte rozbalené zdrojové kódy jádra a zavoláte skript apply - příklad:

Máme rozbalené zdrojové kódy jádra v /usr/src/linux-2.6.16/ a patch suspend2-2.2.5-for-2.6.16.9.tar.bz2 stažený do adresáře /usr/src/. Aplikujeme ho takto:

# cd /usr/src/
# tar jxf suspend2-2.2.5-for-2.6.16.9.tar.bz2
# cd linux-2.6.16/
# ../suspend2-2.2.5-for-2.6.16.9/apply

Skript vypíše seznam souborů, které změnil, a v konfiguraci jádra se objeví nové volby.

Pro novější verze jader se patch distribuuje jako jeden soubor. Máme-li jádro v adresáři /usr/src/linux-2.6.19 a patch rozbalený v /usr/src, aplikujeme ho takto:

# cd /usr/src/linux-2.6.19
# patch -p1 < ../suspend2-2.2.9.3-for-2.6.19.2.patch

V „Power management options (ACPI, APM)“ je nutné vypnout Software Suspend a zapnout Suspend2 - povolení obou způsobů uspávání pravděpodobně způsobí, že se jádro nepřeloží. V „Suspend2“ je potřeba povolit aspoň jedno zařízení pro zápis obrazu paměti - na výběr je zápis do souboru („Filewriter“) a do swapovacího oddílu („Swapwriter“). Volba „Default resume device name“ umožňuje nastavit zařízení, na kterém se bude automaticky hledat obraz paměti, pokud nebude při startu nic zadáno předáním parametru jádru.

Možnost „Keep image mode“ se hodí, pokud provozujete počítač, který má souborové systémy připojené pouze pro čtení (například počítač v internetové kavárně). Použitím této volby je možné počítač vypnout jakýmkoliv způsobem a vždy se probudí do stejného stavu - značně se tím zkrátí doba bootu. Na druhou stranu změníte-li jakkoliv data na disku, při příštím bootu se změny pravděpodobně ztratí a souborový systém se rozpadne. Pro použití na domácím počítači je tato volba pravděpodobně zbytečná. Více informací na http://www.suspend2.net/HOWTO.html#toc7.5.

Pokud máte málo volného místa, je možné ukládaný obraz komprimovat - je potřeba mít v jádře povolený LZF Compression Algorithm (jde o volbu CONFIG_CRYPTO_LZF, která se v jádře objeví až po aplikování patche).

Poté už je možné jádro přeložit a nainstalovat; posledním krokem je předání parametru, kam se má ukládat obraz při uspávání a odkud se má načítat při probouzení nastavením v lilo.conf (LILO) nebo menu.lst (GRUB).

Parametr se jmenuje resume2 a například ukládání do swapovacího oddílu /dev/hda5 se nastavuje takto: resume2=swap:/dev/hda5.

Nastavení ukládání do souboru je trochu složitější, narozdíl od předchozího způsobu je potřeba předem připravit odkládací soubor, podrobnější návod najdete na http://www.suspend2.net/HOWTO-2.html#ss2.5.

Pokud chcete jádru říct, aby se nepokoušelo probouzet, ale startovalo obvyklým způsobem (např. jste počítač neuspali, ale vypli), použijte parametr noresume2. Je vhodné mít obě volby připravené v nabídce například pro případ selhání napájení - jádro by sice mělo rozpoznat, že uložený obraz není platný, ale je lepší nemuset se na to spoléhat. Obě nastavení mohou vypadat například takto (výpis z menu.lst):

title Debian-2.6.16-dk2-k7
kernel (hd0,1)/vmlinuz-2.6.16-dk2-k7 root=/dev/hda2 acpi=on resume2=swap:/dev/hda5 
title Debian-2.6.16-dk2-k7_noresume
kernel (hd0,1)/vmlinuz-2.6.16-dk2-k7 root=/dev/hda2 acpi=on resume2=swap:/dev/hda5 noresume2

Initrd

Data na žádném připojeném oddílu se mezi uspáním a probuzením nesmí změnit - pokud se to stane, můžete podle dokumentace „políbit svá data na rozloučenou“. To se může stát, pokud probouzíte počítač z initrd poté, co jsou připojeny oddíly pevných disků. Abyste tomu předešli, můžete buď použít jádro bez initrd, nebo zařídit, aby k probuzení došlo dříve, než se souborové systémy připojí, například podle tohoto návodu: http://www.suspend2.net/HOWTO-7.html#ss7.4.

Hibernate

Je několik možností, jak počítač uspat; autor swsusp2 doporučuje použít skript hibernate, který je dostupný na stejné stránce jako patch, popřípadě ho nainstalovat tak, jak vaše distribuce obvykle instaluje software (hibernate je například dostupný jako balíček v Debianu a najdete jej i v Portage v Gentoo).

Počítač uspíte spuštěním hibernate jako root.

Blacklisted Modules

Některá zařízení se neumí správně uspat, popřípadě to neumí jejich ovladač. V takovém případě uspání buď selže a počítač se neuspí, nebo se vypne a při spuštění se tváří, jako byste ho vypnuli vytažením ze zásuvky.

Připojená externí zařízení představují další riziko - pokud zařízení odpojíte, když je počítač v uspaném stavu, je to, jako kdyby dané zařízení za běhu z ničeho nic zmizelo.

Řešením těchto rizik je seznam modulů na „černé listině“ - během procesu uspávání počítače se tyto moduly odstraňují z jádra a když se to nepodaří, uspávání se přeruší.

  • nVIDIA: Ve starších verzích nVIDIA ovladačů (grafických karet) byla chyba, která zabránila úspěšnému uspání/probuzení. Tato chyba je již delší dobu odstraněna, nicméně pokud používate agpgart, obrazovka po probuzení zčerná a neobnoví se. Pokud modul agpgart nemáte, probuzení funguje i s nastartovaným X serverem. Pokud se vám uspávání se spuštěným X Serverem nedaří, zkuste ho vypnout (tím umožníte uspávacímu skriptu odstranit modul z jádra).
  • psmouse: Toto je příklad zařízení, které můžete odpojit během vypnutého stavu počítače. Proto je modul korektně odstraněn a při probuzení zase zaveden.
  • ohci_hcd, ehci_hcd, uhci_hcd: Snad nejčastějším USB zařízením je klíčenka - flashdisk. Nahrajete na ni nějaká data, uspíte počítač, klíčenku vyndáte, přenesete jinam a … data nikde. Při uspávání se totiž nevyprazdňují vyrovnávací paměti disků, pokud to není nutné. V praxi to znamená, že vaše data jsou uložena v operační paměti (a po uspání na pevném disku), ale na klíčence ještě ne.

Proto jsou moduly reprezentující USB zařízení na černé listině. Dokud nejsou všechna data na flashdisku skutečně zapsána, není možné moduly odstranit, počítač se neuspí a situace popsaná výše vám nehrozí.

 
doc/swsusp2.txt · Poslední úprava: 2007/07/05 12:45 (external edit)
 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki