S2ram
s2ram - Mějme uspání do paměti funkční samo od sebe
Cílem programu s2ram je učinit uspání do paměti funkční samo od sebe na co nejvíce strojích.
Důležité
Balíček se jmenuje suspend, nebo uswsusp a je nainstalován ve většině distribucí.
Pokud vaše verze s2ram nepodporuje všechny možnosti popsané v tomto článku zkuste získat nejnovější verzi na stránkách http://suspend.sf.net nebop zde.
Možnosti -m a -v byly přidány docela nedávno.
Pozadí
Uspání do paměti již funguje na velkém množství počítačů - to znamená, že se počítač probere zpátky k životu a spustí původní práci, funguje pevný disk, klávesnice, ale abyste obnovili obraz a podsvícení musíte použít některý z těchto "ošklivých hacků". Zde je popsáno několik z nich:
- předat jádru parametr acpi_sleep=s3_bios
- předat jádru parametr acpi_sleep=s3_mode
- předat jádru oba předchozí parametry(acpi_sleep=s3_bios,s3_mode)
- POSTing the video card from userspace after resume using vbetool
- getting the video mode number before suspend and setting the same video mode after resume using vbetool
- uložit stav VBE před uspáním a obnovit jej po probuzení pomocí vbetool
- uložit PCI konfigurační prostor grafické karty před uspáním a obnovit jej po probuzení
Od jádra verze 2.6.16, může být parametr acpi_sleep nastaven během běhu systému (není nutný restart) v souboru /proc/sys/kernel/acpi_video_flags, zapsáním čísla "1" se aktivuje parametr s3_bios, zapsáním čísla "2" se aktivuje parametr s3_mode a zapsáním čísla "3" se aktivují oba parametry. Více informací o těchto věcech se dozvíte po nainstalování balíčku kernel-source (obvykle se rozbaluje do adresáře /usr/src/linux) v souboru Documentation/power/video.txt.
Existují také počítače, které se neprobudí, pokud se používá framebuffer terminál. Například počítače značek Dell a HP často spadají do této kategorie. Můžete zakázat framebuffer terminál, pokud jádru předáte parametr "vga=0". Konfigurační soubor zavaděče GRUB se obvykle nachází v souboru /boot/grub/menu.lst.
Pokud váš počítač funguje jen s vypnutým framebufferem řekněte nám o tom prosím ve vaší zprávě.
Pokud žádná z těchto metod nefunguje je důležité zkontrolovat jestli je počítač úplně mrtvý, nebo jestli se jen neobnovil obraz. Dobrý způsob jak to vyzkoušet je spustit počítač s minimálním systémem (init=/bin/bash) a spustit s2ram -f. Po probuzení, pokud se obraz stále neobnovil vyzkoušejte klávesou "Caps Lock" jestli klávesnice funguje (měli byste vidět jak bliká LED dioda Caps Lock na klávesnici). Pokud dioda blíká, opravdu se zdá, že jde o problém s obnovením obrazu. Pokud nebliká, tak to vypadá na chybu v BIOSu, nebo linuxovém jádře (Linux kernelu).
Proč s2ram
- použití vbetool pro uložení stavu VBE není jednoduché: musíte vytvořit zálohu stavu karty do dočasného souboru před uspáním a zase ho obnovit po probuzení. Toto může samozřejmě udělat nějaký skript, ale mít to v jednom programu je mnohem jednodušší.
- potřebujete vědět jestli váš počítač potřebuje workaround a pokud ano, tak který. s2ram obsahuje databázi počítačů o kterých se ví, že fungují a workaroundy, které tento počítač potřebuje, takže pokud je váš počítač v databázi, tak počítač uspíte prostým spuštěním programu s2ram.
OK, dost řečí, pojďme na to
Kde ho můžu získat?
s2ram je součást projektu suspend, který je hostován na sourceforge. Je však dostupný i v podobě balíčků pro mnoho distribucí.
Jak ho používat?
Nainstalujte patřičný balíček a spusťte příkaz s2ram. Pokud je váš počítač na seznamu podporovaných, tak by se měl počítač uspat. Avšak buďte opatrní, některé rozbité ovladače je nutné před uspáním odebrat a po probuzení zase načíst. Pokud chcete jen vědět, jestli je váš počítač na seznamu a jaký workaround bude použit (pokud nějaký), pak spusťte příkaz s2ram -n.
S2ram je také začleněn v posledních verzích programu powersaved: pokud je nainstalován balíček suspend, pak powersaved před spuštěním otestuje (použitím s2ram -n) je-li počítač schpen se uspat do paměti a podle toho povolí, nebo zakáže "tlačítko uspat".
Můj počítač není na seznamu podporovaných, co můžu udělat?
Prostě zjistěte, který z workaroundů je potřeba (pokud nějaký) a řekněte nám to společně s výstupem příkazu s2ram -i.
Workaround může být aktivován prostřednictvím příkazové řádky příkazu s2ram:
marek@mantisha:~> /usr/sbin/s2ram -h Usage: s2ram [options] -h, --help this text. -V, --version version information -n, --test test if the machine is in the database. -i, --identify prints a string that identifies the machine. --nofbsuspend do not suspend the framebuffer (debugging only!). --force force suspending, even on unknown machines. The following options are only available with --force: --vbe_save save VBE state before suspending and restore after resume. --vbe_post VBE POST the graphics card after resume. --vbe_mode get VBE mode before suspend and set it after resume. --radeontool turn off the backlight on radeons before suspending. --pci_save save the PCI config space for the VGA card. --acpi_sleep <acpi_sleep> set the acpi_sleep parameter before suspend 1=s3_bios, 2=s3_mode, 3=both
Možnosti by měly být povětšinou samovysvětlující. Jen bych poznamenal, že musíte pokaždé použít přepínač -f k tomu, aby s2ram pracoval i na neznámém počítači (tedy na takovém, který není na seznamu podporovaných). Volba -a očekává celočíselný argument od 1 do 3, který specifikuje některou z možností: s3_bios, s3_mode nebo oba.
Nejlepší způsob jak začít prověřovat neznámý stroj je spustit systém s parametrem jádru init=/bin/bash, který spustí minimální prostředí a poté spustit následující příkazy:
# mount /proc # mount /sys # s2ram -f
pokud zafunguje hned první pokus, tak nám pošlete výstup příkazu s2ram -i a nezapomeňte připojit zmínku o tom, že z textového režimu funguje funguje prosté s2ram -f (Pokračujte na #Jak kontaktovat autory programu s2ram?). Pokud to fungovat nebude, nic nevzdávejte a zkoušejte postupně i následující možnosti (vždy jedním z těch příkazů nahraďte s2ram -f z příkladu výše):
- s2ram -f -a 3
- s2ram -f -a 2
- s2ram -f -a 1
- s2ram -f -p -m
- s2ram -f -p -s
- s2ram -f -m
- s2ram -f -s
- s2ram -f -p
- s2ram -f -a 1 -m
- s2ram -f -a 1 -s
Pokud nebude fungovat ani jeden z těchto příkazů, pak zkuste ještě jednou každý z nich, jen přidejte navíc i parametr -v.
Poznámka: míchání parametrů "-a" spolu s možnostmi nástroje vbetool ("-p", "-m", "-s") nedává za běžných okolností smysl. Avšak existuje jedna vyjímka, zdá se totiž, že nové modely 64bitových notebooků IBM ThinkPad často fungují v 64bitovém režimu (x86_64) jen s parametry "-a 1 -m".
Všechno funguje, jen mi po uspání stále svítí podsvícení displaye
Pokud máte v počítači kartu Radeon a podsvícení se během uspání nevypne tak zkuset přidat parametr -r k vaší předchozí funkční kombinaci parametrů. Je známo, že toto funguje u ThinkPadů z řady 30 (T30, X31, R32,... ). Pokud nemáte počítač s kartou Radeon, pak tento přepínač nedává smysl.
Můj počítač je na seznamu podporovaných, ale stejně to nefunguje, co mám dělat?
Na seznamu jsou některé zástupné znaky pro označení typů počítačů (třeba Aspire 36* značí např. i 3692) a je možné, že jejich přesná konfigurace se liší od originální testované sestavy. Postup je stejný jako v případě, že počítač není na seznamu podporovaných zařízení: najděte, kterou konkrétní funkci váš stroj potřebuje a zašlete nám tuto informaci společně s výstupem příkazu s2ram -i, abychom podle toho mohli upravit seznam.
Jak kontaktovat autory programu s2ram?
Pošlete e-mail na poštovní konferenci suspend-devel [1]. Pokud tato z nějakého důvodu nefunguje tak zadejde zprávu o chybě v Novell Bugzille i pokud nepoužíváte openSUSE (jednoduše zadejte zprávu o chybě v nejnovějším produktu openSUSE a jako komponentu zvolte "Mobile Devices").
Důležité: Neumíme číst vaše myšlenky, teke nevíme jaké parametry jste použili takže prosím uveďte:
- které parametry vám s s2ram fungovaly
- jestli vám fungovalo uspání z obou režimu, jak z grafického režimu, tak z textového (ctrl+alt+f1, nebo minimální prostředí, které bylo v tomto článku popsáno)
- pokud jste museli udělat ještě něco, aby vám uspání fungovalo, tak to prosím zmiňte také
- výstup příkazu s2ram -n
Zkouška bez jakéhokoli instalování
Sitsofe Wheeler zjistil, že spousta počítačů může být otestována bez jakéhokoli instalování jen s pomocí LiveDVD openSUSE.
Aktuální balíčky pro různé distribuce
SUSE / openSUSE
Aktuální balíčky můžete najít v Buildservice projektu Stefana Seyfrieda a adresou http://software.opensuse.org/download/home:/seife, nebo přímo ve Factory verzi openSUSE. Balíček se jmenuje suspend. Pro nejnovější balíčky může být také vyžadován balíček libx86, který tam naleznete také.
Debian
Tim Dijkstra se stará o Debianí balíček (nazvaný uswsusp) na adrese http://packages.debian.org/unstable/admin/uswsusp
Gentoo
Balíček jménem suspend je dostupný na adrese portage. Podívejte se do Gentoo Linux Handbooku, pokud nevíte jak instalovat balíčky v Gentoo.
Ostatní
Pokud víte o aktualizovaných balíčcích pro ostatní distribuce prosím upravte tento článek.
Integrace s ostatními projekty (aneb "Jak to rozchodit v grafickém prostředí")
openSUSE 10.2+ / pm-utils
openSUSE 10.2 a pozdější, podobně jako mnoho současných distribucí, používá k uspávání Pm-utils, takže konfigurace popsaná tam může být použita pro získání vlastností s2ram.
Powersave
S2ram je integrováno do poslední verze powersaved, jsou tam drobné konfigurační rozdíly, které umožňují vybrat si jen některé služby pokud váš stroj není na seznamu podporovaných zařízení. Vysvětlení je zde.
SUSE 10.1
SUSE 10.1 používá powersaved, jehož nastavení je popsáno zde a může být použito k nastavení služeb.
Užitečné rady
Toto jsou pouze Tipy a Triky, které jsem objevil během toho, když jsem se snažil uspání do paměti zprovoznit na různých počítačích. Používejte je opatrně ;-)
Grafické karty Intel
Stroje s grafickými kartami Intel obvykle fungují s "s2ram -f -a3", i když se používá rámec vesafb. Pokud "s2ram -f -a3" nefunguje (např. počítače Dell), často funguje "s2ram -f -p -m". Zdá se, že Xorg ovladače pro Intel nemají problém s "-s" (VBE_SAVE), takže "-m" (VBE_MODE) by měl být, pokud možno, použitý vždy. Viz. https://bugzilla.novell.com/show_bug.cgi?id=229603. Obecně, VBE_MODE je upřednostňovaný před VBE_SAVE.
Grafické karty ATI
V poslední době mnoho strojů s grafickými čipsety ATI Radeon nefunguje v žádném rámci (obvykle nejsou schopny dostat se do BIOSu, ani když CapsLock fungoval po snaze o obnovení). Často dobře fungují s "vga=0" a "s2ram -f -p -m" nebo "s2ram -f -p -s".
Grafické karty NVIDIA
Obnovení do grafického X po uspání do RAM často selže používáte-li open-source NVIDIA driver protože doposud není známo jak opětovně spustit karty NVIDIA. Po několika zvláštních krocích by karty NVIDIA měly fungovat s "s2ram -f" s použitím pouze binárních ovladačů. Detailní informace jsou na NVidia suspend HOWTO.
Problémy s APIC
Poslední dobou jsem viděl spoustu strojů, u kterých se APIC muselo vypnout jaderným příkazem "noapic", jinak se buď vůbec neprobudily nebo se po probuzení chovaly zvláštně (nefunkční časování přerušení apod.), takže toto je potřeba ještě dořešit. S novými jádry už by to nemělo být nutné, openSUSE 10.2 už by takovéto úpravy neměla potřebovat.
Počítač se po probuzení okamžitě vypne!
s2ram je prvořadě "nízkoúrovňový" systémový nástroj. Pro použití na "opravdovou práci" byste jej měli začlenit do vaší správy napájení, tedy do acpid skriptů (mohou např. spustit uspání po stlačení tlačítka uspání). Pokud používáte distribuci využívající powersaved, přečtěte si prosím Powersace s2ram.
Toto by mělo být vyřešeno v jádře 2.6.20, takže žádné dodatečné práce by neměly být potřeba.
Nevzdávejte to!
Občas není uvádění uspání do RAM do provozu tak přímé a okamžité jak bychom chtěli. Pokud si chcete přečíst příklad, co všechno museli lidé překonat, přečtěte si následující záznam z Bugzilly. Winfried je můj hrdina :-) Také je důležité vědět, jestli jestli se stroj z uspání do Ram probudí, ale "jenom" nechá vypnutý displej, nebo je úplně tuhý. Podívejte se do článku Debugování ACPI uspání na návod, jak to zjistit.