18.04 hibernacja z UEFI i włączonym bezpiecznym uruchomieniem


14

„sudo systemctl start hibernate.target” działał poprawnie z 16.04 na Acer B117 przy użyciu starszego rozruchu; Aktualizacja do 18.04 zmusiła mnie do korzystania z UEFI i (wymaganie Acer) włączony bezpieczny rozruch. Zawieszenie nadal działa, ale potrzebuję hibernacji.

Partycja wymiany jest aktywna i równa się wielkości pamięci RAM + 2 GB;

GRUB_CMDLINE_LINUX_DEFAULT = "cichy resume resume = UUID = myswapuuid"

Journalctl -xe ujawnił brak dostępu / sys / power / disk

cat / sys / power / disk: [wyłączony]

cat / sys / power / state: freeze mem

Jakieś sugestie?

Odpowiedzi:


12

Mam ten sam problem i niestety nie jest to możliwe z oficjalnym jądrem Ubuntu od wersji 4.13 z powodu łatki blokującej jądro (efi-lockdown). Uzasadnienie jest:

Obecnie nie ma możliwości zweryfikowania obrazu wznowienia po powrocie ze stanu hibernacji. Może to naruszyć model zaufania podpisanych modułów, więc dopóki nie będziemy mogli pracować z podpisanymi obrazami hibernacji, wyłączamy go, gdy jądro jest zablokowane.

Powiązane zatwierdzenie Bionic, które możesz zobaczyć tutaj .

Jest to kontrowersyjna decyzja i Linus odmówił scalenia tych zmian w jądrze Linuksa.

Nieco więcej szczegółów znajdziesz w artykule Blokowanie jądra w 4.17? i jego komentarze.

Tak więc czekając na magiczne oprogramowanie, które będzie działać z podpisanymi obrazami hibernacji, możemy użyć tylko innego jądra lub wyłączyć bezpieczny rozruch .

PS Z przyjemnością poprę kolejną odpowiedź, jeśli ktoś rozwiąże ten problem.


Dziękuję bardzo, rozumiejąc, dlaczego jest to dobry krok naprzód.
olli61

Jakiego jądra mogę użyć? Hibernacja jest dla mnie istotną funkcją. (Spodziewam się, że muszę mieć jedną nowszą niż 4.15, najlepiej 4.18, ponieważ moje WiFi działa na tym drugim, ale nie na pierwszym.)
nsandersen

1

mam nadzieję, że to komuś pomoże, ale uruchamiam popos / ubuntu 19.04. W moim ustawieniu mogłem hibernować za pomocą s2disk lub pm-hibernacji, ale wznawianie nie powiodło się. Aby to naprawić, ponieważ mój system jest uruchamiany przy użyciu UEFI zamiast grub. Musiałem tylko ponownie zainstalować moduł ładujący. Aby sprawdzić, czy korzystasz z interfejsu UEFI, wykonaj następujące czynności:

[ -d /sys/firmware/efi ] && echo "Installed in UEFI mode" || echo "Installed in Legacy mode"

jeśli w trybie UEFI, postępowałem zgodnie z tym przewodnikiem, aby ponownie zainstalować program ładujący, różni się, jeśli używasz dysku nvme lub dysku sata: https://support.system76.com/articles/bootloader/

Kluczem jest uruchomienie tego polecenia:

sudo update-initramfs -c -k all

upewnij się, że w opcjach kernalboot określasz partycję lub identyfikator UUID, z którego chcesz wznowić, np. coś takiego:

resume = UUID = ed8347ed-2eb4-40bc-bc77-cc53b987ed88

Możesz to dodać: 1) sudo kernel-stub -a "resume = UUID = ..." 2) edytuj plik /etc/initramfs-tools/conf.d/resume i dodaj: resume = UUID = ed8347ed- 2eb4-40bc-bc77-cc53b987ed88

sprawdź w swoim /var/log/syslogpliku coś takiego:

Aug 4 22:26:42 pop-os /usr/bin/kernelstub[19639]: kernelstub : DEBUG kopts: root=UUID=b37019a8-91f5-445f-94c1-7359a49ed5df ro quiet loglevel=0 systemd .show_status=false resume=UUID=ed8347ed-2eb4-40bc-bc77-cc53b987ed88

Jeśli wznowienie brakuje lub jest niepoprawne, musisz ponownie zaktualizować jądro rozruchowe.


Dzięki, to jedyna odpowiedź, która pozwoliła mi wznowić bez problemu.
Emmanuel M. Smith

Jako użytkownik szyfrowania nie musiałem zmieniać initramfs, ale musiałem wyłączyć cryptswap i ponownie włączyć normalną zamianę poprzez odkomentowanie i komentowanie odpowiednio w /etc/fstabi /etc/crypttab. cryptswap używa losowego klucza przy każdym uruchomieniu, więc nie działa w trybie hibernacji.
fuzzyTew

Jeśli chcesz zaszyfrowaną partycję wymiany, możesz spojrzeć na to: help.ubuntu.com/community/EnableHibernateWithEncryptedSwap
Lingster
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.