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
enable
Możliwośćsystemctl
dowiązania od/etc/systemd/system/
celu/lib/systemd/system/
. Nigdy nie powinieneś kopiować bezpośrednio do/etc/systemd/system/
sudo s2disk
tylko logujeSaving snapshot
, niż wyłącza wyświetlacz, zawiesza się na ~ 5 minut, a następnie wyłącza komputer. Jednak po włączeniu uruchamia się normalnie, jakby nie było hibernacji.sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
powinien zostać zmieniony nasudo findmnt -no SOURCE,UUID -T /swapfile
Oto, co zrobiłem, aby działało z Ubuntu 18.04.
Upewnij się, że
/swapfile
masz przynajmniej rozmiar pamięci RAMZanotuj identyfikator UUID partycji zawierającej
/swapfile
:Ponownie skonfiguruj pakiet
uswsusp
, aby poprawnie używać pliku wymiany:Edytuj usługę hibernacji SystemD za pomocą
sudo systemctl edit systemd-hibernate.service
i wypełnij ją następującą treścią:Zwróć uwagę na przesunięcie wznowienia swojego
/swapfile
:Skonfiguruj Gruba, aby wznowił pracę z pliku wymiany, edytując
/etc/default/grub
i modyfikując następujący wiersz:Aktualizacja Grub:
Utwórz następujące elementy
/etc/initramfs-tools/conf.d/resume
:Zaktualizuj initramfs:
Teraz możesz hibernować
sudo systemctl hibernate
.Można również utworzyć te skrypty:
Możesz więc spać
gotosleep
lub hibernowaćgotohibernation
.Musisz być w stanie wykonać
sudo s2both
,sudo s2ram
isudo systemctl hibernate
bez konieczności podawania hasła do poprzednich skryptów do pracy.Możesz to zrobić na przykład, tworząc
powerdev
grupę, dodając do niej bieżącego użytkownika i konfigurując następującą konfigurację sudoers (edytuj jąsudo visudo -f /etc/sudoers.d/powerdev
):Wykorzystana dokumentacja:
źródło
Szybko przeczytałem samouczek i, jeśli dobrze zrozumiałem, wystarczy podać
resume
opcje wiersza polecenia systemu Linux. Z Grub2 jest naprawdę prosty, a twoje zmiany zawsze zostaną zachowane. Musisz edytować/etc/default/grub
plik, w szczególności ten wiersz:Następnie biegnij,
sudo update-grub
aby zmiany zostały wprowadzone.Zmiana
GRUB_CMDLINE_LINUX
nie wpłynie na inne instalacje Linuksa (ponieważ/etc/grub.d/30_os-prober
nie używa tej zmiennej).O twoim problemie: czy partycja pliku wymiany jest zaszyfrowana? Jeśli tak, hibernacja nie będzie działać. Jeśli nie, wynik
filefrag -v /swapfile
może być pomocny.źródło
/etc/default/grub
musisz biecupdate-grub
.