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.
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
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.
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.
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ší.
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).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í.