Hibernuj z plikiem wymiany za pomocą uswusp
Chociaż możliwe jest przełączenie pliku w stan hibernacji i podobno działa on z hibernacją systemd poprzez ustawienie parametrów jądra. Nie mogłem jednak go wznowić, więc zamiast tego przełączyłem się na użycie uswsusp (zawieszenie oprogramowania przestrzeni użytkownika) . Oto kroki, których użyłem na Ubuntu 17.04 / 17.10.
Utwórz plik wymiany
Polecenia utworzenia sformatowanego pliku wymiany 4GiB, zamontowanego i dodanego do /etc/fstab
:
sudo fallocate -l 4g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
Sprawdź partycję wymiany pliku
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
Zainstaluj oprogramowanie Userspace Software Suspend (uswsusp)
sudo apt install uswsusp
Skonfiguruj uswsusp
Aby utworzyć /etc/uswsusp.conf
i odtworzyć initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
Yes
„ Kontynuować bez ważnej przestrzeni wymiany? „ (Kreator nie ustawił jeszcze pliku wymiany).
- Wybierz partycję , na której znajduje się plik wymiany, odsyłając do szczegółów z
findmnt
góry. ( Uwaga: nie sam plik wymiany )
Uwaga: Wszelkie ręcznie wprowadzone zmiany /etc/uswsusp.conf
będą wymagały initramfs
późniejszego odtworzenia za pomocą tego polecenia:
sudo update-initramfs -u
Przetestuj hibernację uswusp
sudo s2disk
Po snapshot
hibernacji powinny pojawić się komunikaty na ekranie i wznowić.
Użyj s2disk z hibernacją systemd
Domyślnie systemd użyje własnych poleceń hibernacji, więc zamień je na polecenia uswusp, zastępując systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
W otwartym edytorze tekstu umieść następujący tekst (wymagany jest pusty ExecStart). Następnie zapisz i wyjdź:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
Spowoduje to utworzenie /etc/systemd/system/systemd-hibernate.service.d/override.conf
pliku ze szczegółami zastąpienia.
Testuj hibernację systemową:
systemctl hibernate
Uwaga: Aby sprawdzić, czy systemd override.conf
został utworzony, załadowany i nie zawiera błędów, uruchom:
systemctl status systemd-hibernate.service
Referencje:
ExceStart=run-parts -a post /lib/systemd/system-sleep
byćExceStartPost=run-parts -a post /lib/systemd/system-sleep