Принудительная гибернация с использованием hibernate вместо pm-hibernate

15

Я использую 18.04 и пытаюсь заставить мою систему использовать hibernate вместо pm-hibernate, когда крышка моего ноутбука закрывается.

У меня есть раздел подкачки 20 ГБ на 16 ГБ оперативной памяти, поэтому достаточно места.

Когда я использую pm-hibernate, я получаю небольшую ошибку apci, которая очень быстро появляется при переходе в режим гибернации и восстановления, которую я не могу прочитать. Несмотря на то, что режим гибернации работает в том смысле, что кажется, что он выгружается на диск и восстанавливается с диска, он, по-видимому, находится в режиме сна, поскольку он использует батарею с нормальной скоростью, а не выключается полностью и не прекращает использование батареи.

Тем не менее, когда я использую Hibernate установлен:

sudo apt-get install hibernate

И запустить:

sudo hibernate

И восстановитесь после этого, я замечаю, что моя машина фактически выключается - светодиоды перестают пульсировать и т. Д. - и уровень заряда батареи падает до нуля. Это поведение, которое я хотел бы видеть, когда моя крышка закрывается, а не режим сна, при котором используется батарея, как если бы я активно использовал компьютер.

Я следовал этим руководствам:

модифицированный

/etc/systemd/logind.conf

включать:

#HandleLidSwitch=suspend
HandlelidSwitch=hibernate

И добавил мое изменение раздела подкачки в:

/etc/default/grub

Чтобы включить правильную ссылку резюме = и запрошенный s2disk специально с:

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

Я прочитал следующие связанные аскубунты:

Я также прочитал эти ссылки на форумах Lenovo и Arch:

Как я могу убедиться, что hibernate, вызванный lid-close, является hibernate, а не pm-hibernate?

Обновить

Это все еще проблема, и все же делает Carbon X1 6th gen полностью бесполезным с Ubuntu. Любые решения, которые могут это исправить и, возможно, дополнительно добавить приглашение к входу в систему, могут быть почти такими же хорошими, как и у Windows-машины 4 года назад ...;)

Mittenchops
источник
@Mittenchops Я мог бы решить эту проблему для себя, пожалуйста, взгляните на askubuntu.com/questions/1028947/…
Кристофер Уилл,
1
Не могли бы вы добавить в свой вопрос данные журнала из полного цикла спящего режима? Это должно быть в /var/log/pm-suspend.log. Благодарю.
Дэвид Фёрстер
@Mittenchops не уверен, но, возможно, моя проблема связана с вашей. мой тоже аппаратный Lenovo.
ViBE
1
Я не использую спящий режим, но вы можете попробовать переименовать /usr/sbin/pm-hibernateв /usr/sbin/pm-hibernate.OLD. Затем создайте /usr/sbin/pm-hibernateскрипт bash, который содержит hibernateкоманду. Используйте, type -a hibernateчтобы найти точный путь для команды. Его нет в моей системе, потому что я его не установил.
WinEunuuchs2Unix
Я обновил свой ответ сценарием-оболочкой, предложенным 14 июля 2008 года.
WinEunuuchs2Unix

Ответы:

1

Я тоже ненавижу передавать URL, поэтому я скопирую и вставлю информацию и прикреплю веб-страницу внизу. Я не вижу этого в вашей ссылке.

Читая это, я заметил, что гибернация может не работать, если вы отформатировали с файловой системой btrfs? Итак, как гибернация постоянно включена в Ubuntu 16.04?

Чтобы сделать процесс гибернации Ubuntu постоянным, вам нужно создать новый файл с помощью текстового редактора в командной строке:

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

Системе требуются права суперпользователя для включения режима гибернации, поэтому следует добавить команду sudo. Вы можете использовать другие текстовые редакторы, такие как vi, gedit, emacs и т. Д.

Теперь скопируйте и вставьте следующий текст в файл (используйте мышь; сочетания клавиш не работают):

[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

Нажмите CTRL+, Oчтобы сохранить, и CTRL+, Xчтобы выйти из нано-редактора.

Теперь выйдите из системы и снова войдите в систему. Теперь вы увидите опцию гибернации, а также опции «Завершение работы» и «Приостановка».

Ссылка для вашего удобства: https://fossbytes.com/enable-disable-hibernate-option-ubuntu-power-menu/

plutesci
источник
2
Это не похоже на работу в 18.04
Mittenchops
1

Два варианта

Первый вариант (в списке второй) заключается в проверке journalctlвозможных сообщений об ошибках, связанных с гибернацией. Если первый вариант не дает результатов, второй вариант - создать скрипт-обертку, который заменяется pm-hibernateна `hibernate.

Создать скрипт Wrapper

Создание сценария оболочки позволяет hibernateзаменить pm-hibernate.

Команды поиска каталогов расположены в

Прежде чем создавать скрипт-обертку, вам необходимо знать, какие каталоги находятся в командах hibernateи pm-hibernate. Используйте эти две команды:

$ 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

Будет создан скрипт-обертка, который вы хотите создать /usr/sbin/pm-hibernate. У меня не установлен hibernateпакет, поэтому первый поиск находит только утилиту Windows. Согласно списку файлов пакета , он должен показать /usr/sbin/hibernateвместе с парой других файлов.

Резервное копирование исходного файла

Сначала мы хотим сделать онлайн резервную копию исходного файла:

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

Затем удалите оригинальный файл:

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

Создать скрипт-обертку

Примечание: вместо обертка сценария многие находят его проще создать символическую ссылку для , pm-hibernateчтобы hibernate: Как создать мягкие или символические ссылки?

Я хотел бы использовать geditдля редактирования , но вы можете заменить его nanoили vimили какой редактор Вы предпочитаете:

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

Пустой файл появится. Вставить в следующие строки

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

Конвертировать скрипт-обертку в исполняемый файл

В настоящее время скрипт-обертка представляет собой обычный файл. Нам нужно преобразовать его в исполняемый объект:

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

Теперь у нас есть рабочий скрипт-обертка, поэтому каждый раз вместо этого pm-hibernateвызывается hibernaterun. Как уже упоминалось выше, вы должны journalctlсначала просмотреть (описано далее) перед созданием сценария оболочки.

Рассмотрение journalctl

Вы можете grepсообщения гибернации в случае journalctlвозможных проблем.

Я не использую Hibernate, но я использую Suspend. Следующая команда позволяет мне увидеть все сообщения, suspendкоторые вы бы заменили 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
источник
Как sudo -H /usr/sbin/pm-hibernateоткрыть редактор? Я пытаюсь следовать инструкциям, не хочу делать предположения
Стюарт
1
@ Стюарт Хороший улов. Это должно читать, sudo -H gedit /usr/sbin/pm-hibernateкак я только что изменился.
WinEunuuchs2Unix
1
@ Stewart Вы спите с закрытием крышки, кнопкой питания или опцией меню?
WinEunuuchs2Unix
1
Наконец-то исправили это! Ваше предложение дало мне достаточную подсказку, что с каким-то гугл-фу я оказался на unix.stackexchange.com/a/386837
Стюарт
1
@ Стюарт Рад слышать. Спасибо за указание на ответ Unix & Linux. Я проголосовал за это.
WinEunuuchs2Unix