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
i syslog
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 FAQ swapfile
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ą:
/ sys / power / image_size kontroluje rozmiar obrazu utworzonego przez mechanizm zawieszenia na dysk. Można zapisać ciąg reprezentujący nieujemną liczbę całkowitą, która będzie używana jako górna granica wielkości obrazu w bajtach. Mechanizm zawieszenia na dysk dołoży wszelkich starań, aby rozmiar obrazu nie przekroczył tej liczby. Jeśli jednak okaże się to niemożliwe, i tak spróbuje zawiesić, używając najmniejszego możliwego obrazu. W szczególności, jeśli do tego pliku zostanie zapisane „0”, obraz zawieszenia będzie tak mały, jak to możliwe. Odczyt z tego pliku wyświetli bieżący limit rozmiaru obrazu, który jest domyślnie ustawiony na 2/5 dostępnej pamięci RAM.
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 systemie cat /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:
- Dokumentacja jądra
- Debian Wiki o hibernacji
TBH, nawet jeśli twoje jądro NIE obsługuje hibernacji, możesz spróbować w inny sposób, przewiń w dół do sekcjiInterfaces
.
Przeczytaj to - ostrzeżenia i problemy - bez BTRFS
W szczególnej kolejności:
- Nie wszystkie chipsety będą działać (nie mam źródeł, które mogę tu przytoczyć, więc powiedzmy, że to jest pogłoska)
- VAIO ma problemy, podobno jest flaga, aby im przeciwdziałać
- SecureBoot jest często cytowany jako zakłócający lub wyłączający hibernację
- Funkcja Wake-on-LAN zużywa energię nawet podczas hibernacji
- Liczba modułów (szczególnie grafiki) może zostać zainicjalizowana PRZED wznowieniem działania systemu ze stanu hibernacji - jest to zwykle przyczyną czarnego ekranu po wznowieniu . Zajrzyj na ArchLinux Wiki, aby uzyskać wskazówki dotyczące debugowania problemów. Sugeruję również FAQ Ubuntu na temat problemów z hibernacją. Przeglądanie błędów Launchpad może również przynieść rezultaty. IIRC, istnieje parametr jądra określający w sekundach opóźnienie przed wznowieniem.
- Zezwolenie na procedurę hibernacji różni się dla różnych wersji Polkit
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
- Upewnij się, że masz wystarczająco dużo miejsca. Często zadawane pytania dotyczące wymiany Ubuntu mówią ci, ile potrzebujesz, również powyższe polecenia. Jeśli potrzebujesz więcej informacji tutaj, zadaj kolejne pytanie, ponieważ jest to długi temat.
- Zwiększ plik wymiany lub utwórz nowy o wystarczającej wielkości (preferowane, zgadzam się z @muru ) i zmień
/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.
- Skieruj na to swoje jądro odpowiednimi parametrami, aby wiedział, skąd wznowić.
- Zaktualizuj / ponownie skonfiguruj moduł ładujący i uruchom ponownie.
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
i uswsusp
(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!
- hibernacja do pliku wymiany wymaga
resume=
znajomości partycji, na której znajduje się plik wymiany oraz resume_offset=
wiedzy o tym, w którym miejscu pliku wymiany można rozpocząć wznawianie.
- hibernacja do partycji wymaga
resume=
wskazania do zamiany partycji.
- rozwiązanie problemów z czarnym ekranem może wymagać
resumedelay=
.
Dokumentacja jądra dotycząca opóźniania wznowienia działania ze stanu hibernacji:
resumedelay = [HIBERNATION] Opóźnij (w sekundach) pauzę przed próbą odczytania plików CV
Wymagane parametry pliku wymiany i hibernacji :
resume = [SWSUSP]
Specify the partition device for software suspend
Format:
{/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
resume_offset = [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
Do resume=
wyboru ten sam styl, w jakim root
ma element fstab
. Tak więc albo /dev/sdaX
albo UUID
albo LVM. W przypadku hibernacji do pliku - podaj partycję, na której znajduje się plik.
Czytanie:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
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 tutaj
Problem! Hibernacja nie jest dozwolona!
Przetestuj: pm-hibernate
(jeśli pakiet pm-utils jest zainstalowany) lub systemctl 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
ma disabled
. 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
- swsusp - interfejs jądra niskiego poziomu. Zobacz Wymagania wstępne - jądro dla jakich plików. Bezpośrednie zapisywanie do plików może spowodować zawieszenie (do pamięci RAM, na dysk i hybrydę). Według SwapFAQ problematyczne z hibernacją do pliku.
- uswsusp - ArchWiki i Debian Wiki oraz ładne pytanie AskUbuntu z napisem, jak z niego korzystać .
- systemd - ArchWiki na ten temat
- pm-utils - AFAIK, który jest zbiorem skryptów pochodzących z Debiana - chętnie powitam więcej informacji.
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!