Hibernacja działała poprawnie, gdy korzystałem z Ubuntu 17.04. Po aktualizacji do 17.10 nie mogłem wznowić pracy z powodu czarnego ekranu po wznowieniu ( ten błąd ).
Po aktualizacji do 18.04, jeśli spróbuję uruchomić komputer po hibernacji, uruchamia się, jakby hibernacja nie została wykonana.
Odpowiedzi:
Wprowadzono zmiany w ustawieniach domyślnych w porównaniu z poprzednim LTS (16.04). W moim przypadku hibernacja nie działała, dopóki nie zrobiłem kilku kroków, między innymi zwiększyłem rozmiar pliku wymiany, włączyłem go, upewniłem się, że pozwalają na to zasady itp.
To może być moja najdłuższa odpowiedź na całej StackExchange, więc starałem się, aby nagłówki były opisowe .
Buty, ponieważ nie było hibernacji
Rozsądnie byłoby przejrzeć swoje dzienniki (
dmesg
może pomóc) i sprawdzić, czy coś tam jest. Istnieją powody, dla których pomimo nakazania systemowi hibernacji, tak naprawdę nie chce lub zamiast tego zawiesi się w pamięci RAM (uśpienie).Spojrzenie
kern.log
isyslog
poszukiwanie wiadomości związanych z hibernacją również nie zaszkodzi. Sekcje zaczynające się od „problemu” mogą pomóc w określonych problemach.Zamień plik lub partycję wymiany
Jedną z kluczowych zmian jest to, że teraz NIE MASZ partycji wymiany, ale masz PLIK wymiany.
Plik wymiany może nie działać w przypadku połączenia sprzętu / sterowników / systemu operacyjnego i hibernacji.
Hibernacja została wyłączona
Zasady mogą również wyłączać lub blokować hibernację.
Żargon
Suspend to RAM - RAM przechowuje dane, komputer idzie spać szybciej, zużywa więcej energii po zawieszeniu, budzi się szybciej. Niektórzy nazywają to snem.
Zawieś na dysk - aka hibernacji. Pamięć RAM jest zapisywana do wymiany (partycja lub plik), komputer idzie spać wolniej, zużywa mniej energii podczas hibernacji, budzi się wolniej.
Wymagania wstępne - czy masz wystarczająco dużo miejsca?
Aby przejść w stan hibernacji, musisz (tutaj uproszczenie) zapisać całą pamięć RAM na dysku twardym. Musisz więc zarezerwować wystarczająco dużo miejsca, aby to zrobić. Jeśli tego nie zrobisz, to się nie powiedzie i nie zahibernujesz.
free -m
powie ci, ile masz pamięci, ile używasz i ile jest w swapie.df -h
powie ci, ile masz miejsca na dysku w każdym punkcie montowania i ile zużywasz, za darmo itp. Jest to ważne, ponieważ możesz później określić, gdzie będzie znajdować się plik wymiany, lub którą partycję „przyciąć”, aby mieć wystarczająco dużo miejsca na wymianę.cat fstab
powinien podać informacje, jeśli masz partycję lub plik wymiany. Według Ubuntu Hibernation FAQswapfile
nie zawsze działa z niektórymi kombinacjami sprzętu / sterowników.Jeśli nie masz wystarczającej ilości miejsca, postępuj zgodnie z często zadawanymi pytaniami dotyczącymi wymiany Ubuntu . Mówi ci, jak zwiększyć plik wymiany, dodać kolejny, sprawdzić, czy jest używany itp. Z poleceniami i objaśnieniami. Naprawdę fajny zasób.
Nie mam wystarczającej ilości miejsca, aby zmieścić się w mojej pamięci RAM!
Dokumenty jądra mówią:
Spróbuj zmodyfikować rozmiar obrazu. Jak - zadaj kolejne pytanie.
Wymagania wstępne - czy twoje jądro obsługuje zawieszanie na dysk?
Jądro obsługuje wszystko, co jest wymienione
/sys/power/state
, więc:cat /sys/power/state
Dozwolone (według mojej wiedzy) pozycje nie obejmują:
mem
,standby
,freeze
,disk
. Wyjaśnienie:mem
- ma kilka znaczeń, które dokładnie znajdziesz w swoim systemiecat /sys/power/mem_sleep
. Mam:s2idle [deep]
standby
- Zawieszenie po włączeniu zasilania (jeśli jest obsługiwane)freeze
- Suspend To Idle (STI)disk
- Suspend To Disk (STD), hibernacja . To - chcesz.Następnie musimy sprawdzić
cat /sys/power/disk
. Jeśli tak,disabled
to zanurz się w BIOSie, szukając Bezpiecznego rozruchu - to jedyny pomysł, jaki mogę zaoferować i jedyne, co wiem, może przeszkadzać i wyłączać hibernację. Chociaż znam tylko SecureBoot, mogą występować inne zakłócenia, więc spojrzenie na BIOS jest dobrym pomysłem, nawet jeśli nie masz żadnego „bezpiecznego rozruchu”.Czytanie tutaj:
TBH, nawet jeśli twoje jądro NIE obsługuje hibernacji, możesz spróbować w inny sposób, przewiń w dół do sekcji
Interfaces
.Przeczytaj to - ostrzeżenia i problemy - bez BTRFS
W szczególnej kolejności:
Nie używaj BTRFS i hibernacji: wynikiem będą uszkodzone dane.
Chcę hibernować - partycja wymiany
Zdarzają się przypadki, gdy ludzie rezygnują z wymiany plików i wracają do partycji wymiany. W końcu działało na poprzednich LTS. Nie próbowałem, więc nie oferuję wskaźników.
Chcę hibernować - z plikiem wymiany
/etc/fstab
na nowy. Uruchom ponownie, aby zobaczyć, że zmiana została podjęta dobrze (przechowuj kopię zapasowąfstab
, abyś mógł ją łatwo przywrócić na wszelki wypadek.Parametry jądra? Straszny!
Przeczytaj uważnie i zdecyduj, czy chcesz to zrobić, ale jest to tylko sposób na skonfigurowanie jądra. Hibernacja może być łatwiejsza za pomocą
systemd
iuswsusp
(patrz Interfejsy poniżej). Może się zdarzyć, że ty - tak jak ja - ostatecznie zdecydujesz, że wystarczające jest zawieszenie do pamięci RAM i nie chcesz mieć 32 GB na pliku wymiany (na przykład nie jest to świetne dla osób z jednym dyskiem SSD w swoich laptopach). Ale!resume=
znajomości partycji, na której znajduje się plik wymiany orazresume_offset=
wiedzy o tym, w którym miejscu pliku wymiany można rozpocząć wznawianie.resume=
wskazania do zamiany partycji.resumedelay=
.Dokumentacja jądra dotycząca opóźniania wznowienia działania ze stanu hibernacji:
Wymagane parametry pliku wymiany i hibernacji :
Do
resume=
wyboru ten sam styl, w jakimroot
ma elementfstab
. Tak więc albo/dev/sdaX
alboUUID
albo LVM. W przypadku hibernacji do pliku - podaj partycję, na której znajduje się plik.Czytanie:
Problem - nie znaleziono nagłówka wymiany
Plik wymiany musi być poprawnie sformatowany. Jeśli dzienniki to mówią, oznacza to, że próbujesz hibernować do pliku lub parametr wznowienia jest nieprawidłowy.
Przełącz na partycję lub napraw plik lub zmień interfejs używany do hibernacji.
Zobacz: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
służy do formatowania pliku, czytaj więcej na ten temat tutajProblem! Hibernacja nie jest dozwolona!
Przetestuj:
pm-hibernate
(jeśli pakiet pm-utils jest zainstalowany) lubsystemctl hibernate
powiedz, że nie masz pozwolenia. Domyślne ustawienie w Ubuntu od IIRC 12.04.Rozwiązanie: zależy od wersji Polkit, wersji Ubuntu i smaku ... Zobacz to pytanie . Również ArchWiki na polkit może pomóc.
W przypadku mennicy patrz: https://forums.linuxmint.com/viewtopic.php?t=259912
Problem! Hibernacja została wyłączona przez coś w systemie BIOS!
Test:
cat /sys/power/disk
madisabled
. Dzienniki pokazują „Nie można przełączyć systemu w tryb hibernacji przez logind: czasownik uśpienia nie jest obsługiwany”.Rozwiązanie: przeszukaj BIOS i znajdź problematyczne rozwiązanie. Wyłącz to.
Rozwiązanie 2: Wypróbuj inny interfejs hibernacji.
Zobacz: Jak włączyć hibernację w 16.04.1? (systemd) .
Interfejsy
Uwagi końcowe
Dla mnie skompilowanie tego wymagało prawie dwóch dni pracy. Mamy nadzieję, że pomoże to Tobie (i innym osobom) szybciej rozwiązać problem. Wciąż brakuje mi punktów, ale jest druga w nocy i nie mam ochoty pisać więcej. Oczywiście jestem otwarty na wszelkie wskazówki, aby to poprawić, więc skomentuj. Odpowiem, gdy tylko zasnę, pracuję itp .:-)
Nie jestem pewien, czy hibernacja na dysk jest taka świetna. W końcu poszedłem spać. Ale dla mnie problemem było posiadanie pliku o pojemności 32 GB, aby móc hibernować, ponieważ zwykle w ogóle unikam zamiany. Mój początkowy plik wymiany miał pojemność 2 GB i był w większości pusty. YMMV. Niemniej powodzenia! I zacznij od dzienników!
źródło
$ sudo apt install linux-generic-hwe-18.04
(w przypadku niektórych urządzeńlinux-generic-hwe-18.04-edge
warto nawet spróbować ).Użyj UUID partycji wymiany zamiast jego punktu montowania w parametrze RESUME
resume=UUID=<#>
zarówno w, jak/etc/default/grub
i/etc/initramfs-tools/conf.d/resume
Utwórz wpis dla partycji wymiany
/etc/fstab
bez punktu montażowego coś takiegoW
/etc/default/grub
Użyłem osobnego wpisu do wznowienia hibernacjiUtwórz zestaw polityk we władzach lokalnych (pkla)
I wstaw tam
Po tej aktualizacji initramfs i GRUB
Uruchom ponownie, otwórz niektóre aplikacje i użyj
systemctl hibernate
(bez sudo), aby sprawdzić, czy to działaźródło
Dla mnie zawsze działało do 18.04, a po 18.04 włączyłem go tak, jak w wielu artykułach, ale nagle przestało działać wczoraj (działa dobrze przez 4-5 miesięcy),
a oto ... JEDNA RZECZ, która sprawiła, że znów działa
Powiedz grub2, gdzie jest partycja wymiany:
Najpierw dowiedz się, na której partycji jest on, używając poniższego polecenia:
Mój jest na sda7, podobnie jak następujące dane wyjściowe:
Następnie dodaj w Grub2 następujący dodatek do następującego wiersza, używając następującego polecenia:
sudo gedit / etc / default / grub
Ważną częścią jest
resume=/dev/sda7
Następnie zaktualizuj Grub za pomocą następującego polecenia, a następnie znów zaczął działać idealnie:
Po wielu próbach było to jedno, co zadziałało, być może było to spowodowane aktualizacją jądra, która go zepsuła, ale tym bardziej to działało.
źródło
mam nadzieję, że to komuś pomoże, ale uruchamiam popos / ubuntu 19.04. W mojej konfiguracji 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/
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
sprawdzam plik / var / log / syslog pod kątem czegoś takiego: 4 sierpnia 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 nieprawidłowe, musisz ponownie zaktualizować jądro rozruchowe.
źródło
Oprócz ustawienia punktu wznowienia wymiany w grub, o którym mowa w odpowiedzi Sam73 , stwierdziłem, że moje Ubuntu 18.04 musi również zainstalować
laptop-mode-tools
:następnie zmień
ENABLE_LAPTOP_MODE_ON_AC=1
plik konfiguracyjny:uruchom tryb laptopa z:
PS Możesz sprawdzić, czy laptop zaczyna, czy nie
Jeśli drukuje
0
,laptop_mode
oznacza to , że nie działa, w przeciwnym razie oznacza, że działa dobrze.źródło