Ubuntu 16.04 nie wyłącza się po zawieszeniu lub hibernacji


14

Właściwie moje pytanie może wydawać się identyczne z tym na tym forum (a także tym gdzie indziej ); faktycznie pytanie jest takie samo, ale i tak je zadaję, ponieważ mogę podać więcej informacji i ponieważ wypróbowałem jakieś rozwiązanie znalezione w sieci (możliwe, że pogorszyło się).

Kiedyś hibernowałem Ubuntu 15.10 (zamykając wieko). Teraz, kiedy zaktualizowałem go do 16.04 (myślałem, że to dobrze, ponieważ ta wersja to LTS, w przeciwieństwie do 15.10), nie mogę już używać hibernacji (ani zawieszenia!): Jeśli spróbuję go użyć, Ubuntu nie będzie t Wyłącz, tylko ekran staje się czarny, dioda zasilania jest włączona, i nie mogę zrobić nic poza wyłączeniem go ręcznie (długie naciśnięcie przycisku zasilania). Po ponownym włączeniu widzę następujące wiersze

wprowadź opis zdjęcia tutaj

następnie Ubuntu uruchamia się.

Od tutaj Próbowałem z

sudo -s
echo shutdown > /sys/power/disk
echo disk > /sys/power/state

i

sudo -s
echo platform > /sys/power/disk
echo disk > /sys/power/state

Tylko pierwszy częściowo zadziałał i tylko raz: częściowo mam na myśli, że po brutalnym zamknięciu sesja została odzyskana.

Potem spróbowałem zastosować się do tej sugestii . Nie rozumiałem komentarzy napisanych po poleceniach, więc dosłownie wprowadzałem polecenia takimi, jakie są (myśląc, że wystąpiłby błąd taki jak „to polecenie / folder nie istnieje”, gdyby w poleceniach było coś do zastąpienia ):

EDYTOWAĆ

cat /proc/meminfo
sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1024 count=8M
sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile
sudo -b gedit /etc/fstab
free -m
swapon

mount | grep " / "
sudo blkid -g
sudo blkid
sudo filefrag -v /swapfile | grep "First block:"
sudo filefrag -v /swapfile
echo "resume=UUID=cdXX--X18 resume_offset=66050" | sudo tee /etc/initramfs-tools/conf.d/resume
sudo -b gedit /boot/grub/menu.lst
sudo -b gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="... resume=UUID=cdXX--X18 resume_offset=66050"
sudo update-grub -y
sudo update-initramfs -u

Może to był okropny pomysł, ponieważ teraz to rozumiem.

IMG:

W końcu znalazłem powyższe pytanie i poszedłem tutaj , ale nie wiem, co robić.

EDYCJA 2 W tej chwili, jeśli wejdę

...$ sudo swapon -s

Nie otrzymuję absolutnie nic

...$

Może to z powodu BIOS-u. W moim systemie BIOS przechodzę do zarządzania energią i powinna istnieć opcja postępowania po zawieszeniu. Zwykle mój jest S1, ale S3 jest tym.
dat tutbrus

Dźgaj tutaj w ciemności, ale powinieneś sprawdzić swoje ustawienia BIOS i przejrzeć je. Wyjmij instrukcję i sprawdź ją. W przeszłości miałem niezliczone problemy, w których rozwiązaniem był przełącznik BIOS.
Jonathan

1
Cofnij bardzo zły pomysł. Był to dowód na to, jak przekonać Ubuntu do korzystania z przestrzeni wymiany do hibernacji. Jako root z sudo, usuń dodaną ostatnią linię /etc/initramfs-tools/conf.d/resumei dwie dodane sekcje wznowienia z etc/default/grub, uruchom dwie ostatnie linie, aby zaktualizować grub i initrd. Usuń / zamień plik. Uruchom sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target. Wypróbuj dowolny z tych celów sudo systemctl suspend. Co się dzieje?
emk2203

W końcu zdecydowałem się ponownie zainstalować Ubuntu 15.10. Teraz hibernacja znów działa. Może zainstaluję 16.04 na innej partycji. Kiedy to zrobię, odniosę się do tego pytania i odpowiedzi.
Enrico Maria De Angelis

Odpowiedzi:


6

Wymuszanie hibernacji w celu wyłączenia maszyny:

Po długim zastanawianiu się nad odpowiedzią na to pytanie (niezwiązaną z tą kwestią), znalazłem tutaj wskazówkę dotyczącą wykonania pracy:

Utwórz plik w pmkatalogu config:

sudo vim /etc/pm/config.d/hibernate_mode

który ustawia zmienną HIBERNATE_MODEtak:

HIBERNATE_MODE="shutdown"

Po wykonaniu tej czynności hibernacja wyłączyła maszynę po zakończeniu zgodnie z oczekiwaniami. Wyjaśnienie tego, co HIBERNATE_MODErobi ustawienie , znajduje się w podręczniku dla pm-hibernacji :

Domyślna metoda wyłączania systemu podczas hibernacji. Jeśli nie zostanie ustawiony, system użyje domyślnej wartości jądra jako wartości domyślnej. Sprawdź poprawność wartości w / sys / power / disk. Wartość domyślna zostanie otoczona przez [nawiasy kwadratowe].

Moje domyślne ustawienie w tym pliku to platform. Ustawienie powyższej zmiennej w celu shutdownzastąpienia tego i uzyskanie tego, co chcemy zrobić.

Powiązane informacje i porady dotyczące poprawnego działania hibernacji:

Jeśli chodzi o te „powiązane problemy”, wydaje się, że każdy ma hibernację i porady dotyczące szybkiego debugowania:

  1. Sprawdź, czy polecenie sudo pm-hibernatefaktycznie coś robi. Jeśli nie, żadna z tych innych wskazówek nie będzie miała znaczenia. Jeśli to nie działa, upewnij się, że 1) rozmiar partycji wymiany jest większy niż rozmiar pamięci RAM i 2) bezpieczny rozruch jest wyłączony w systemie BIOS.

  2. Tylko wtedy, gdy to polecenie zadziała, spójrz na integrację hibernacji z systemem, jak chcesz. Kilka typowych:

    • Dodaj hibernację do menu Ubuntu: To wydaje mi się najlepszą odpowiedzią. Oficjalna dokumentacja ma również nieco inną wersję.
      Uwaga: po dodaniu hibernacji do menu Ubuntu może być konieczne naprawienie alternatywnego połączenia z sudo systemctl hibernate. Najwyraźniej (przynajmniej dla Ubuntu 16.04) opcja menu Ubuntu wywołuje sudo systemctl hibernatezamiast sudo pm-hibernate. systemctl hibernatezostał dla mnie naprawiony poprzez dodanie następującej treści do pliku /etc/systemd/sleep.conf:

      [Sleep]
      HibernateMode = zamknij

      Jeśli plik jeszcze nie istnieje, możesz go utworzyć. Więcej informacji tutaj .

    • Zmień sposób działania przycisku zasilania (domyślnie wyświetla się w interaktywnym menu): Aby zmienić go na hibernację bezpośrednio lub zamknąć, musisz zmodyfikować powiązany wpis ustawień gsettings . Wiele innych odpowiedzi przechodzi przez GUI, jeśli to pływa łodzią. Aby zobaczyć dostępne opcje użyjgsettings range org.gnome.settings-daemon.plugins.power button-power


2

Widząc twój ostatni obraz i EDIT 2 , rozumiem, że Ubuntu nie może znaleźć partycji wymiany w twoim systemie. Sugeruję więc, aby utworzyć partycję wymiany równą lub większą niż rozmiar pamięci RAM i spróbować ponownie, uruchamiając

sudo pm-hibernate

Możesz utworzyć partycję wymiany za pomocą GParted, uruchom ją, aby ją zainstalować

sudo apt-get install gparted

2

Miałem ten sam problem po aktualizacji z 15.10 do 16.04:

  • Zamknięcie wieka nic nie zrobiło
  • Ręczne zawieszenie z pozycją menu w zasobniku systemowym spowodowało stan zawieszenia do połowy z jedynym wyjściem do zresetowania systemu.

Rozwiązałem te problemy przez

  1. aktualizacja jądra do 4.4.8 (po tym zawieszenie działało dla mnie)
  2. Dodanie linii HandleLidSwitchDocked=suspenddo /etc/systemd/logind.conf (dzięki czemu przełącznik pokrywy znów działa).

Myślę, że oba problemy to błędy, które powinny zostać naprawione ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1574120 ).


Czy to rozwiązało problem tylko dla zawieszenia, czy też dla hibernacji?
Enrico Maria De Angelis

0

Hibernacja została domyślnie wyłączona.

Spróbuj tego

sudo pm-hibernate

Jeśli test hibernacji działa, możesz nadal używać polecenia sudo pm-hibernacja, gdy chcesz hibernować.

Możesz także włączyć opcję hibernacji w menu. Aby to zrobić, użyj swojego ulubionego edytora tekstu do utworzenia /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla. Dodaj następujące elementy do pliku i zapisz:

[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.hibernate-multiple-sessions
ResultActive=yes

Przeczytaj więcej o Hibernacji 16.04 z tego linku

Wyłączyć

sudo shutdown -h now

Zrestartować

sudo shutdown -r now

Jak napisałem, sudo pm-hibernacja działała bardzo dobrze przed aktualizacją z wersji 15.10 do 16.04LTS. Problem powinien więc dotyczyć wersji 16.04LTS. Ponadto może zrobiłem coś bardzo złego, postępując zgodnie z instrukcją, nie rozumiejąc ich. Czy możesz mi pomóc w rozwiązaniu tych problemów?
Enrico Maria De Angelis
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.