Ubuntu/hibernace
Tato stránka je součástí projektu: | |
Příslušnost: všeobecná |
Jak zprovoznit hibernaci u Ubuntu:
V Ubuntu 12.04 a dalších byla defaultně odebraná možnost hibernace (u strojů, které nejsou oficiálně podporována) a to z toho důvodu, že při špatném nastavení to může působit problémy nezkušeným uživatelům.
Jak tuto možnost obnovit?
Swap
editovatZa prvé je nutno mít dostatečně velký swapovací prostor na disku (o něco větší než je velikost operační paměti)
Hibernace z konzole
editovatZkusíme hibernovat příkazem z konzole:
sudo pm-hibernate
Po chvíli by se měl systém hibernovat. Po opětovném spuštění by se měl vrátit do předcházejícího stavu.
Pokud toto funguje, můžeme pokračovat dál:
Defaultní nastavení
editovatMůže se lišit podle verze Ubuntu:
14.04
editovatOsvědčilo se mi (xfce):
Vytvoříme soubor:
/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Do souboru napíšeme:
[Re-enable hibernate by default for login1] Identity=unix-user:* Action=org.freedesktop.login1.hibernate ResultActive=yes [Re-enable hibernate for multiple users by default in logind] Identity=unix-user:* Action=org.freedesktop.login1.hibernate-multiple-sessions ResultActive=yes
Spustíme:
sudo update-grub
Ve Whisker menu se nám pak vedle možnosti Režim spánku objeví i možnost Hibernace.
18.04 Xubuntu
editovat- notebook: Lenovo ThinkPad X280
sudo systemctl hibernate
Počítač se vypne, ale po opětovném spuštění se předchozí relace neobnoví.
Takže zkusím:
sudo apt install uswsusp
Následující dodatečné balíky budou instalovány: libx86-1 Následující NOVÉ balíky budou nainstalovány: libx86-1 uswsusp
Nepomohlo to, je to stále stejné.
Zkouším jít do Nastavení – Relace a spouštění – Obecné – Automaticky uložit relaci při odhlášení + ptát se při odhlášení; Relace: fvwm: okamžitě
sudo pm-hibernate pm-hibernate: příkaz nenalezen
sudo apt install pm-hibernate E: Nelze najít balík pm-hibernate
Takže zkusím:
grep swap /etc/fstab # swap was on /dev/nvme0n1p5 during installation -4744-a459-4cd6ebafd151 none swap sw 0 0 sudo cd /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/nvme0n1p5" update-grub
Voilà – zafungovalo! Teď to ještě přidat do menu:
- https://askubuntu.com/questions/1177075/xfce4-power-manager-suspend-to-hibernate-option
- https://docs.xfce.org/xfce/xfce4-power-manager/faq
sudo su apt-get install pm-utils xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/logind-handle-lid-switch -n -t bool -s true
Zkusím:
/var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
[Disable hibernate by default in upower] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes [Disable hibernate by default in logind] Identity=unix-user:* Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hib\ ernate-ignore-inhibit ResultActive=yes
Voilà – funguje!
Problémy
editovatOvšem občas se vyskytnou různé problémy = např. při vypínání systému:
Failed deactivating swap Fixing recursive fault but reboot is needed!
Došel jsem k závěru, že problém může být se swapovací partition, tak jsem ji přeformátoval, ale tím problémy jen přibyly, např. při bootování to zůstane viset na:
Gave up waiting for suspend-resume device resume: Could not stat the resume device file /dev/disk/by-uuid/a38e8d74-eeae-4744-a459-4cd6ebafd151 Begin: Running /scripts/local-premount
Protože přeformátováním partition se změní její UUID. U normální ext4fs apod. partition zjistím její UUID pomocí dumpe2fs
. U swap partition musím použít:
swaplabel
např.:
sudo swaplabel /dev/nvme0n1p5 LABEL: nvme0n1p5_swap UUID: 19c84e7d-7065-40fd-94ff-4e1c7d87c32c
Dohledám, že scripts/local-premount
se vyskytují na dvou místech:
/etc/initramfs-tools/scripts/
/usr/share/initramfs-tools/scripts
A najdu příslušný soubor, na kterém to zůstane viset:
/usr/share/initramfs-tools/scripts/local-premount/resume
Jenže přímo zde se UUID nevyskytuje, nejspíš je v nějaké proměnné. Vygrepuji, že to UUID swapu je v souboru:
/etc/uswsusp.conf
# /etc/uswsusp.conf(5) -- Configuration file for s2disk/s2both resume device = /dev/disk/by-uuid/a38e8d74-eeae-4744-a459-4cd6ebafd151 compress = y early writeout = y image size = 3733221867 RSA key file = /etc/uswsusp.key shutdown method = platform
Začnu tím, že to v tomto souboru přepíšu. Přebootuji a opět:
Begin: Running /scripts/local-premount ... Resume: Could not stat the resume device file 'a38e8d74-eeae-4744-a459-4cd6ebafd151' Please type in the full path name or try again
Tak kde to ještě může být?
# grep -r a38e8d74 * | less
initramfs-tools/conf.d/resume:RESUME=UUID=a38e8d74-eeae-4744-a459-4cd6ebafd151
Aha! Tak tady ten /usr/share/initramfs-tools/scripts/local-premount/resume
přečte to UUID. Takže měním.
Ale zpátky k souboru /etc/uswsusp.conf
– je možno jej editovat ručně? Co když se ještě někde změnila imagesize apod?
Takže googlím:
sudo dpkg-reconfigure uswsusp
Odsouhlasím přednastavené parametry:
- Komprimace obrazu algoritmem LZF vytvoří menší obraz, což znamená, že můžete použít menší odkládací oblast. Obecně se také dá říci, že zápis a následné čtení obrazu budou rychlejší, protože jim stačí zapsat resp. přečíst méně dat. Ano
- Synchronizace odkládacího zařízení může začít hned na začátku zápisu obrazu na toto zařízení. Bylo pozorováno, že na některých počítačích to může urychlit uspávání a také eliminovat efekt „rychlý indikátor postupu a následné dlouhé čekání na fsync“. Ano
- Zadejte prosím maximální velikost obrazu (v bajtech).
Tato hranice není pevná -- uswsusp se sice bude ze všech sil snažit limit dodržet, ale pokud to nebude možné, uspí systém i s větším obrazem.
Zadáte-li hodnotu 0, bude výsledný obraz systému co nejmenší. Ponecháte-li prázdné, použije se zabudovaná hodnota 500MB. Výchozí hodnota představuje 45% operační paměti. Není to maximální hodnota, protože dodatečná volná paměť urychlí uspání a obnovení.
Preferovaná maximální velikost obrazu: 3733221867 - Zadejte prosím úroveň logování, kterou má jádro použít pro sledování průběhu nástrojů s2disk/s2both. U běžného jádra se zprávy s vyšší úrovní než 7 obvykle nezobrazují. Logovací úroveň softwarového uspávání:
- Zadejte prosím úroveň logování, kterou má jádro použít pro zaznamenání ladicích hlášení v případě, že obnovení ze spánku selže. Maximální úroveň logování:
- Je-li tento parametr nastaven na „restart“, program s2disk počítač nevypne, ale restartuje, což se může hodit pro testování. Při nastavení na „platforma“ se použije optimalizace pro daný hardware (pokud je to možné). Způsob vypnutí:
- restart
- platforma
- vypnutí
- Pro zvýšení bezpečnosti je možné obraz, který se zapíše na disk, zašifrovat. Při obnovení (a pokud nepoužíváte RSA klíč, tak i při uspání) budete dotázáni na přístupovou frázi. Při použití šifrování bude uspávání a probouzení trvat znatelně déle. Šifrovat obraz?
- Ano
- Ne
update-initramfs: deferring update (trigger activated) Zpracovávají se spouštěče pro balík initramfs-tools (0.130ubuntu3.13) … update-initramfs: Generating /boot/initrd.img-4.15.0-151-generic
Porovnám s minulou verzí:
diff uswsusp.conf.002 uswsusp.conf
> compute checksum = y
Takže teď už by to snad konečně mohlo fungovat.
Související stránky
editovat- X11/problém/hibernace – řešení podobného problému v roce 2017, notebook HP EliteBook 8530w
- Xubuntu/Bionic/Problémy/Zatuhnutí – krátký čas po zprovoznění hibernace (2021-08) začal notebook zatuhávat. Možná souvislost??
Externí odkazy
editovat- StackExchange: ask ubuntu: How to enable hibernation?
- ubuntuhandbook.org (2014-04-08): How to Enable Hibernation in Ubuntu 14.04