Wymuś hibernację, używając hibernacji zamiast pm-hibernacji

15

Używam 18.04 i próbuję, aby mój system używał hibernacji zamiast pm-hibernacji, gdy pokrywa mojego laptopa zostanie zamknięta.

Mam partycję wymiany 20 GB na 16 GB pamięci RAM, więc dużo miejsca.

Kiedy używam pm-hibernacji, pojawia się mały błąd apci, który pojawia się bardzo szybko podczas hibernacji i przywracania, którego nie mogę odczytać. Podczas gdy hibernacja działa w tym sensie, że wydaje się, że zrzuca się na dysk i przywraca z dysku, wydaje się być stanem uśpienia, w którym używa baterii z normalną szybkością, zamiast całkowicie się wyłączać i zaprzestać używania baterii.

Jednak gdy korzystam z hibernacji zainstalowanej przez:

sudo apt-get install hibernate

I biegnij:

sudo hibernate

I przywróćmy z tego, zauważam, że moja maszyna faktycznie się wyłącza --- diody LED przestają pulsować itp. --- a zużycie baterii spada do zera. Jest to zachowanie, które chciałbym zobaczyć, gdy moja pokrywa się zamyka, a nie zachowanie podczas snu, w którym wykorzystuje się baterię, jak gdybym aktywnie korzystał z komputera.

Postępowałem zgodnie z tymi przewodnikami:

zmodyfikowany

/etc/systemd/logind.conf

zawierać:

#HandleLidSwitch=suspend
HandlelidSwitch=hibernate

I dodałem moją zmianę partycji wymiany w:

/etc/default/grub

Aby dołączyć poprawny link resume = i zażądać s2disk specjalnie z:

sudo cat /etc/pm/config.d/00sleep_module
SLEEP_MODULE="swsusp"

Przeczytałem następujące powiązane askubuntus:

Przeczytałem również te linki na forach Lenovo i Arch:

Jak mogę się upewnić, że hibernacja wywołana przez zamknięcie pokrywy jest hibernacją, a nie pm-hibernacją?

Aktualizacja

Jest to nadal problem i wciąż sprawia, że ​​Carbon X1 6. generacji jest zasadniczo bezużyteczny w Ubuntu. Wszelkie rozwiązania, które mogłyby to naprawić i być może dodatkowo dodać monit logowania, mogą być prawie tak dobre, jak komputer z systemem Windows sprzed 4 lat ...;)

Mittenchops
źródło
@Mittenchops Mógłbym rozwiązać ten problem, proszę spojrzeć na askubuntu.com/questions/1028947/...
Christopher Will
1
Czy możesz dodać dane dziennika z pełnego cyklu wznowienia hibernacji do swojego pytania? Powinno być /var/log/pm-suspend.log. Dzięki.
David Foerster
@Mittenchops nie jestem pewien, ale może mój problem jest związany z twoim. mój jest również sprzętem Lenovo.
ViBE
1
Nie używam hibernacji, ale możesz spróbować zmienić nazwę /usr/sbin/pm-hibernatena /usr/sbin/pm-hibernate.OLD. Następnie stwórz /usr/sbin/pm-hibernatebash scxript, który zawiera hibernatepolecenie. Użyj, type -a hibernateaby znaleźć dokładną ścieżkę do polecenia. Nie istnieje w moim systemie, ponieważ go nie zainstalowałem.
WinEunuuchs2Unix
Zaktualizowałem swoją odpowiedź za pomocą skryptu opakowania zaproponowanego 14 lipca 2018 r.
WinEunuuchs2Unix

Odpowiedzi:

1

Ja też nie lubię podawać adresu URL, więc skopiuję i wkleję informacje oraz dołączę stronę do dołu. Nie widzę tego w twoim linku.

Czytając to zauważyłem, że hibernacja może nie działać, jeśli sformatowano ją w systemie plików btrfs? Jak więc hibernacja jest włączona na stałe w Ubuntu 16.04?

Aby proces hibernacji Ubuntu był trwały, musisz utworzyć nowy plik za pomocą edytora tekstu w wierszu poleceń:

sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

System wymaga uprawnień roota, aby włączyć opcję hibernacji, dlatego należy dodać polecenie sudo. Możesz używać innych edytorów tekstu, takich jak vi, gedit, emacs itp.

Teraz skopiuj i wklej następujący tekst do pliku (użyj myszy; skróty klawiaturowe nie będą działać):

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

Naciśnij CTRL+, Oaby zapisać, i CTRL+, Xaby wyjść z nano edytora.

Teraz wyloguj się z systemu, a następnie zaloguj ponownie. Zobaczysz teraz opcję hibernacji oraz opcje Zamknij i Zawieś.

Link do Twojej wygody to: https://fossbytes.com/enable-disable-hibernate-option-ubuntu-power-menu/

plutesci
źródło
2
To nie wydaje się działać w 18.04
Mittenchops
1

Dwie opcje

Pierwsza opcja (wymieniona jako druga) to sprawdzenie journalctlmożliwych komunikatów o błędach związanych ze hibernacją. Jeśli pierwsza opcja nie daje wyników, drugą opcją jest utworzenie skryptu opakowania, który zastąpipm-hibernate `hibernacja.

Utwórz skrypt opakowania

Utworzenie skryptu opakowania pozwala hibernatena zamianę pm-hibernate.

Polecenia Znajdź katalogi znajdują się w

Przed utworzeniem skryptu opakowania musisz wiedzieć, które katalogi znajdują się w komendach hibernatei pm-hibernate. Użyj tych dwóch poleceń:

$ locate bin/hibernate
/mnt/c/Program Files (x86)/CyberPower PowerPanel Business Edition/bin/hibernate.dll

$ locate bin/pm-hibernate
/mnt/clone/usr/sbin/pm-hibernate
/mnt/old/usr/sbin/pm-hibernate
/usr/sbin/pm-hibernate

Skryptem opakowania, który chcesz utworzyć, będzie /usr/sbin/pm-hibernate. Nie mam hibernatezainstalowanego pakietu, więc pierwsze wyszukiwanie znajduje tylko narzędzie Windows. Zgodnie z listą plików pakietu powinien on ujawniać się /usr/sbin/hibernatewraz z kilkoma innymi plikami.

Utwórz kopię zapasową oryginalnego pliku

Najpierw chcemy wykonać kopię zapasową oryginalnego pliku on-line:

sudo cp -a /usr/sbin/pm-hibernate /usr/sbin/pm-hibernate.bak

Następnie usuń oryginalny plik:

sudo rm -f /usr/sbin/pm-hibernate

Utwórz skrypt opakowania

Uwaga: zamiast skryptu opakowania wielu łatwiej jest utworzyć łącze symboliczne, pm-hibernateaby hibernate: Jak utworzyć łącze miękkie lub symboliczne?

Lubię używać geditdo edycji, ale możesz go zastąpić nanolub innym vimedytorem:

sudo -H gedit /usr/sbin/pm-hibernate

Pojawi się pusty plik. Wklej w następujących wierszach

#!/bin/bash
# Wrapper script to replace pm-hibernate with hibernate package
/usr/sbin/hibernate "$@"

Konwertuj skrypt opakowania na plik wykonywalny

Obecnie skrypt opakowania jest zwykłym plikiem. Musimy przekonwertować go na obiekt wykonywalny:

sudo chmod a+x /usr/sbin/pm-hibernate

Mamy teraz operacyjny skrypt skryptowy, więc za każdym razem pm-hibernatenazywany jest hibernateuruchomieniem. Jak wspomniano na górze, należy journalctlnajpierw przejrzeć (opisane dalej) przed utworzeniem skryptu opakowania.

Przejrzeć journalctl

Możliwe są grepkomunikaty hibernacji journalctldotyczące możliwych problemów.

Nie używam hibernacji, ale używam zawieszenia. Następujące polecenie pozwala mi zobaczyć wszystkie wiadomości, suspendktóre chcesz zastąpić hibernate:

$ journalctl -b | grep -i suspend
Oct 09 22:26:33 alien eyesome[21740]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 09 22:26:48 alien systemd[1]: Starting TLP suspend/resume...
Oct 09 22:26:48 alien systemd[1]: Started TLP suspend/resume.
Oct 09 22:26:48 alien systemd[1]: Starting Suspend...
Oct 09 22:26:48 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 09 22:26:48 alien eyesome[22952]: Wakeup: Going to suspend.  Creating: /tmp/eyesome-is-suspending
Oct 09 22:26:49 alien systemd-sleep[22938]: Suspending system...
Oct 10 04:26:38 alien kernel: PM: Suspending system (mem)
Oct 10 04:26:38 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 04:26:38 alien kernel: PM: suspend of devices complete after 1142.044 msecs
Oct 10 04:26:38 alien kernel: PM: late suspend of devices complete after 19.766 msecs
Oct 10 04:26:38 alien kernel: PM: noirq suspend of devices complete after 61.505 msecs
Oct 10 04:26:38 alien kernel: Suspended for 21583.011 seconds
Oct 10 04:26:38 alien eyesome[23137]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 04:26:38 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 04:26:38 alien eyesome[23168]: Wakeup: Called from suspend.
Oct 10 04:26:41 alien systemd[1]: Started Suspend.
Oct 10 04:26:41 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 04:26:41 alien systemd[1]: Reached target Suspend.
Oct 10 04:26:41 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 04:26:41 alien systemd[1]: Stopped target Suspend.
Oct 10 04:26:42 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 04:26:52 alien eyesome[24459]: Daemon: Removed file: /tmp/eyesome-is-suspending
Oct 10 05:47:09 alien eyesome[12434]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 05:51:43 alien systemd[1]: Starting TLP suspend/resume...
Oct 10 05:51:44 alien systemd[1]: Started TLP suspend/resume.
Oct 10 05:51:44 alien systemd[1]: Starting Suspend...
Oct 10 05:51:44 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 10 05:51:44 alien eyesome[28367]: Wakeup: Suspending.  Creating /tmp/eyesome-is-suspending
Oct 10 05:51:45 alien systemd-sleep[28353]: Suspending system...
Oct 10 16:30:59 alien kernel: PM: Suspending system (mem)
Oct 10 16:30:59 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 16:30:59 alien kernel: PM: suspend of devices complete after 623.519 msecs
Oct 10 16:30:59 alien kernel: PM: late suspend of devices complete after 19.654 msecs
Oct 10 16:30:59 alien kernel: PM: noirq suspend of devices complete after 61.549 msecs
Oct 10 16:30:59 alien kernel: Suspended for 38348.943 seconds
Oct 10 16:30:59 alien eyesome[28563]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 16:30:59 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 16:30:59 alien eyesome[28599]: Wakeup: Called from suspend.
Oct 10 16:31:02 alien systemd[1]: Started Suspend.
Oct 10 16:31:02 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 16:31:02 alien systemd[1]: Reached target Suspend.
Oct 10 16:31:02 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 16:31:02 alien systemd[1]: Stopped target Suspend.
Oct 10 16:31:03 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 16:31:13 alien eyesome[30020]: Daemon: Removed file: /tmp/eyesome-is-suspending
WinEunuuchs2Unix
źródło
Jak sudo -H /usr/sbin/pm-hibernateotwiera się edytor? Staram się postępować zgodnie z instrukcjami, nie chcę przyjmować założeń
Stewart
1
@Stewart Dobry połów. Powinien przeczytać sudo -H gedit /usr/sbin/pm-hibernatetak, jak właśnie się zmieniłem.
WinEunuuchs2Unix
1
@Stewart Czy hibernujesz z zamykaniem pokrywy, przyciskiem zasilania lub opcją menu?
WinEunuuchs2Unix
1
Wreszcie to naprawiłem! Twoja sugestia dała mi wystarczającą wskazówkę, że przy odrobinie
Stewart
1
@Stewart Cieszę się, że słyszysz. Dziękujemy za wskazanie odpowiedzi na systemy Unix i Linux. Podniosłem głos.
WinEunuuchs2Unix