Как я должен успешно спящий Ubuntu 16.04?
Я пробовал почти все решения в Интернете, но не из них было действительно полезно. Я нашел свою проблему почти полностью подобной этой
Вы должны вручную включить его с небольшими усилиями. По умолчанию он отключен.
http://ubuntuhandbook.org/index.php/2014/04/enable-hibernate-ubuntu-14-04/
Тогда, если это не сработает, это может быть проблема ядра 4.4.0, и вам, возможно, придется обновить ядро.
Здесь есть несколько очень хороших ресурсов, которые помогут вам разобраться с некоторыми более распространенными проблемами спящего режима в Ubuntu.
В моем случае, запуская Ubuntu 16.10 на Lenovo u300s, чтобы спящий режим работал Я должен был сделать следующее:
/etc/default/grub
, чтобы включить следующую строку: GRUB_CMDLINE_LINUX_DEFAULT = "splash quiet pci = nomsi RESUME = UUID = 92781adb-f2a6-4f15-88fc-e1ce801291dd" RESUME ссылается к вашему UUID файла свопинга. В частности, на моей машине настройка pci=nomsi
была ключом.
Удачи!
systemctl
и его работа в трудных случаях Для меня pm-hibernate
всегда терпит неудачу. После некоторых настроек я смог спящий режим использовать интерфейс systemd (init system в 16.04 и выше). Мне также удалось заставить его работать с 17.04 с файлом подкачки. Данное исследование может быть полезно для других с проблемами.
Первая попытка:
sudo systemctl hibernate
Если это не удается, начните устранение неполадок: в состоянии спящего режима (HTD или ACPI S4) машина состояние записывается на диск, поэтому для его сохранения не требуется никакой энергии. Состояние записывается либо в раздел подкачки, либо в файл подкачки. Примечание: если вы используете BTRFS, НЕ пытайтесь использовать файл подкачки, так как это может привести к повреждению файловой системы
. Ваш раздел подкачки или файл подкачки, возможно, должен быть того же размера, что и RAM, чтобы разрешить спящий режим, но есть хорошая Вероятно, вы сможете спящий режим, если он равен по меньшей мере 2/5 размерам ОЗУ, согласно странице вики-арки , поэтому сначала попробуйте выполнить другие шаги, прежде чем увеличивать размер свопинга.
Если ваша проблема в том, что вы получаете чистую загрузку вместо ожидаемого резюме, как минимум, вам, скорее всего, нужно будет установить загрузочный параметр для поиска образа диска
Найти свой своп partition:
grep swap /etc/fstab
для меня это возвращает (частичный вывод)
# swap was on /dev/mmcblk0p3 during installation
где /dev/mmcblk0p3
- это раздел для указания
Добавить параметр загрузки :
sudoedit /etc/default/grub
В начало строки GRUB_CMDLINE_LINUX_DEFAULT
добавьте resume=/dev/YourSwapPartition
в раздел в кавычках (замените раздел, который вы определили ранее). Используя мой пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mmcblk0p3"
При каждом изменении этого файла вы должны запустить sudo update-grub
или изменения не будут иметь эффекта.
Теперь вам нужно перезагрузиться. Затем вы можете попытаться спящий режим, выполнив команду:
sudo systemctl hibernate
. Для возобновления нажмите кнопку питания и система загрузится.
Если у вас все еще есть проблемы, начните отладку ,
В качестве примера я приведу пример, приведенный ниже, но подробную информацию о состояниях отладки S можно найти в этом блоге и также в этом .
Задайте еще несколько параметров загрузки, чтобы получить дополнительную информацию. Удалите quiet
и splash
и добавьте initcall_debug
и no_console_suspend
, которые вызовут системные вызовы init, которые будут напечатаны на консоли, чтобы вы могли смотреть, что происходит неправильно. Я установил это:
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/mmcblk0p3 no_console_suspend initcall_debug"
Который помог мне понять, что происходит не так, как возобновить спящий режим.
В моем случае после возобновления я потерял WiFi, и ядро явно расстроилось как большинство команд (например, прочитав что-либо из /sys
, перезагружая модули или любую команду systemctl
), не будет работать - процесс, похоже, начнется и просто повесит (все это будет возвращено в нормальное состояние после перезагрузки, конечно). Наблюдая за тем, как система очень медленно закрывается и читает все отладочные сообщения, я заметил, что проблем с «brcm» было много, поэтому я догадался, что мой модуль беспроводной связи Broadcom виноват. Разумеется, я скорректировал свою процедуру гибернации, чтобы сначала выгрузить модуль:
sudo modprobe -r brcmfmac
sudo systemctl hibernate
в возобновлении I снова вставить модуль
sudo modprobe brcmfmac
И все работает отлично. Мне также нужно занести в черный список модуль btsdio
, который кажется несовместимым с brcmfmac
Еще раз с помощью с вики-страницы Arch и некоторые дополнительные манипуляции, мне удалось спящий режим работать с 17.04 с помощью файла подкачки. Для этого потребовался дополнительный параметр загрузки, resume_offset=n
, где n - первое число под physical_offset
на выходе sudo filefrag -v /swapfile
:
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
....
Поэтому дополнительный параметр загрузки в моем случае - resume_offset=34816
. Вам все равно нужно установить параметр загрузки для возобновления раздела. Это будет корневой раздел (или какой-либо раздел, в котором находится ваш файл подкачки). Мои параметры теперь:
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=/dev/mmcblk1p2 resume_offset=34816"
Где /dev/mmcblk1p2
- мой корневой раздел (у вас более вероятно что-то вроде /dev/sda2
).
Во время возобновления я видел загрузку изображения успешно, но в моем случае (просто пример - YMMVAPD), тогда еще несколько драйверов (i2c_designware
) забросали некоторые ошибки, и я получил полное зависание системы на резюме. Спящий режим работает, если я выгружаю эти модули в дополнение к brcmfmac
, но система быстро становится непригодной для использования без этих модулей. Поэтому я сделал своего рода сценарий, чтобы выгрузить багги-модули и сразу же вставить их в резюме:
# remove buggy modules
modprobe -r brcmfmac i2c_designware_platform i2c_designware_core &&
# hibernate
echo disk > /sys/power/state
# reinsert
modprobe i2c_designware_core i2c_designware_platform brcmfmac
Когда я хочу спящий режим, я запускаю sudo bash script
. Это отлично работает.
Используйте systemd, задайте параметр загрузки для возобновления смены, определите багги-драйверы и выгрузите их перед началом спящего режима. Если система не может работать долго без этих модулей или вам нужно выгрузить несколько, может быть проще использовать простой скрипт для запуска спящего режима.
Для меня он работает, чтобы установить пакет hibernate
, перезагрузиться, а затем запустить sudo hibernate-disk
. Я уверен, что можно добавить его в меню, но не стоит времени для меня.
Я думаю, что как включить спящий режим для ответа 16.04, известно всем, как описано в Ubuntu Wiki (см. ниже, если вам нужны этапы). Но вещи, которые нуждаются в проверке, не являются тщательными, я думаю. По крайней мере, это то, что я нашел.
Из моих собственных тестов я, по крайней мере, нашел один дополнительный чек, который вы должны выполнить. Я не нашел об этом нигде в Интернете.
Вот некоторые проверки -
ext4
мне не помогло. Мне нужно было удалить пакет btrfs-tools
. sudo apt-get purge btrfs-tools
Возможно, вы захотите проверить другие типы разделов, которые недостаточно хорошо протестированы. Без удаления пакета черный список драйверов также может работать, но я не тестировал это. Он включает в себя следующие этапы
/etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla
sudo -i nano /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla
[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
polkitd
sudo systemctl restart polkitd.service
Он должен включить спящий режим.
(я задал аналогичный вопрос с просьбой сосредоточиться на ответах на основе systemd, поделившись своим решением здесь для людей, следующих за этим вопросом)
Это решение происходит из тем Fedora (они сделали переход на systemd некоторое время назад, поэтому там больше материала).
В моем случае (новый 16.04.1 установить на машина, которая всегда поддерживала спящий режим), вызов устаревшего sudo pm-hibernate
, похоже, ничего не сделал, и обновленный метод systemd systemctl hibernate
вернется:
Failed to hibernate system via logind: Sleep verb not supported
Оказывается, что безопасный boot был виновником: установив 16.04, вас спросят, что вы хотите с ним сделать (что, насколько я помню, это новая вещь), и я сохранил ее, не задумываясь.
На моем машина с защищенной загрузкой включена, cat /sys/power/disk
ответил:
[disabled]
После перезагрузки и отключения безопасной загрузки в настройках BIOS (они зависят от машины, но обычно довольно просто), я попробовал cat /sys/power/disk
и получил:
[platform] shutdown reboot suspend
, который выглядит лучше. И действительно, вызов systemctl hibernate
приводит к успешной последовательности спящего / оттаивания.
Кроме того, после этого я мог видеть, что спящий режим доступен в качестве опции в разных местах графического интерфейса, без необходимости взлома polkit
. Похоже, что systemd
на самом деле догадывался из /sys/power/disk
, что система не могла спячки.
Расширение моего собственного комментария к ответу kelvinelove, файл, который он предлагает, редактирование не существует в моей системе (свежий Ubuntu 16.04). Вместо этого я сделал это:
sudo nano /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
EDIT: Gunnar отметил, что этот файл перезаписывается, если определенный пакет обновляется, поэтому в зависимости от ваших намерений это скорее всего не лучшее решение.
Источник: http://www.zedt.eu/tech/ Linux / включить-гибернации-Xubuntu-16-04 /
Вы можете использовать
sudo pm-hibernate
, чтобы проверить, работает ли спящий режим в вашей системе (это приведет к спячке на вашем компьютере).
Если это не сработает, проверьте, по крайней мере такой же, как ваша оперативная память.
Чтобы добавить опцию в меню настроек, вы можете создать файл конфигурации. Откройте окно терминала и запустите эту команду:
sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Он открывает nano с пустым файлом. Скопируйте приведенные ниже строки и вставьте их в окно nano.
[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
Затем сохраните изменения и закройте nano и перезагрузите систему, чтобы сделать доступным Hibernate в «Power options».
Ссылка: Как спящий режим моего компьютера? в официальной документации для Ubuntu 16.04.
Надеюсь, что это сработает. Это работало для меня после того, как вы пробовали все другие варианты.
Во-первых, я рекомендую вам проверить, поддерживает ли ваша машина спящий режим, потому что причина, по которой гибернация отключена по умолчанию, связана с тем, что она иногда имеет неприятные результаты на некоторых машинах. Проверьте свою машину, открыв терминал (Ctrl + Alt + T), а затем введите sudo pm-hibernate
. Ваш компьютер должен находиться в спящем режиме. Пробудите свою машину после спячки и наблюдайте, не ошибается ли она, или если она действует нормально. Если вы испытываете какие-либо отклонения после спячки, я советую вам не продолжать следующую процедуру. Однако, если он работает нормально, продолжайте активировать спящий режим, выполнив следующее:
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Отредактируйте открытый файл и добавьте следующие строки:
[Re-enable hibernation]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
После этого перезапустите и после входа в систему вы должны увидеть параметр спящего режима, добавленный в меню питания, в верхнем правом углу настроек.
Вы должны вручную включить его с небольшими усилиями. По умолчанию он отключен.
http://ubuntuhandbook.org/index.php/2014/04/enable-hibernate-ubuntu-14-04/
Тогда, если это не сработает, это может быть проблема ядра 4.4.0, и вам, возможно, придется обновить ядро.
Здесь есть несколько очень хороших ресурсов, которые помогут вам разобраться с некоторыми более распространенными проблемами спящего режима в Ubuntu.
В моем случае, запуская Ubuntu 16.10 на Lenovo u300s, чтобы спящий режим работал Я должен был сделать следующее:
/etc/default/grub
, чтобы включить следующую строку: GRUB_CMDLINE_LINUX_DEFAULT = "splash quiet pci = nomsi RESUME = UUID = 92781adb-f2a6-4f15-88fc-e1ce801291dd" RESUME ссылается к вашему UUID файла свопинга. В частности, на моей машине настройка pci=nomsi
была ключом.
Удачи!
systemctl
и его работа в трудных случаях Для меня pm-hibernate
всегда терпит неудачу. После некоторых настроек я смог спящий режим использовать интерфейс systemd (init system в 16.04 и выше). Мне также удалось заставить его работать с 17.04 с файлом подкачки. Данное исследование может быть полезно для других с проблемами.
Первая попытка:
sudo systemctl hibernate
Если это не удается, начните устранение неполадок: в состоянии спящего режима (HTD или ACPI S4) машина состояние записывается на диск, поэтому для его сохранения не требуется никакой энергии. Состояние записывается либо в раздел подкачки, либо в файл подкачки. Примечание: если вы используете BTRFS, НЕ пытайтесь использовать файл подкачки, так как это может привести к повреждению файловой системы
. Ваш раздел подкачки или файл подкачки, возможно, должен быть того же размера, что и RAM, чтобы разрешить спящий режим, но есть хорошая Вероятно, вы сможете спящий режим, если он равен по меньшей мере 2/5 размерам ОЗУ, согласно странице вики-арки , поэтому сначала попробуйте выполнить другие шаги, прежде чем увеличивать размер свопинга.
Если ваша проблема в том, что вы получаете чистую загрузку вместо ожидаемого резюме, как минимум, вам, скорее всего, нужно будет установить загрузочный параметр для поиска образа диска
Найти свой своп partition:
grep swap /etc/fstab
для меня это возвращает (частичный вывод)
# swap was on /dev/mmcblk0p3 during installation
где /dev/mmcblk0p3
- это раздел для указания
Добавить параметр загрузки :
sudoedit /etc/default/grub
В начало строки GRUB_CMDLINE_LINUX_DEFAULT
добавьте resume=/dev/YourSwapPartition
в раздел в кавычках (замените раздел, который вы определили ранее). Используя мой пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mmcblk0p3"
При каждом изменении этого файла вы должны запустить sudo update-grub
или изменения не будут иметь эффекта.
Теперь вам нужно перезагрузиться. Затем вы можете попытаться спящий режим, выполнив команду:
sudo systemctl hibernate
. Для возобновления нажмите кнопку питания и система загрузится.
Если у вас все еще есть проблемы, начните отладку ,
В качестве примера я приведу пример, приведенный ниже, но подробную информацию о состояниях отладки S можно найти в этом блоге и также в этом .
Задайте еще несколько параметров загрузки, чтобы получить дополнительную информацию. Удалите quiet
и splash
и добавьте initcall_debug
и no_console_suspend
, которые вызовут системные вызовы init, которые будут напечатаны на консоли, чтобы вы могли смотреть, что происходит неправильно. Я установил это:
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/mmcblk0p3 no_console_suspend initcall_debug"
Который помог мне понять, что происходит не так, как возобновить спящий режим.
В моем случае после возобновления я потерял WiFi, и ядро явно расстроилось как большинство команд (например, прочитав что-либо из /sys
, перезагружая модули или любую команду systemctl
), не будет работать - процесс, похоже, начнется и просто повесит (все это будет возвращено в нормальное состояние после перезагрузки, конечно). Наблюдая за тем, как система очень медленно закрывается и читает все отладочные сообщения, я заметил, что проблем с «brcm» было много, поэтому я догадался, что мой модуль беспроводной связи Broadcom виноват. Разумеется, я скорректировал свою процедуру гибернации, чтобы сначала выгрузить модуль:
sudo modprobe -r brcmfmac
sudo systemctl hibernate
в возобновлении I снова вставить модуль
sudo modprobe brcmfmac
И все работает отлично. Мне также нужно занести в черный список модуль btsdio
, который кажется несовместимым с brcmfmac
Еще раз с помощью с вики-страницы Arch и некоторые дополнительные манипуляции, мне удалось спящий режим работать с 17.04 с помощью файла подкачки. Для этого потребовался дополнительный параметр загрузки, resume_offset=n
, где n - первое число под physical_offset
на выходе sudo filefrag -v /swapfile
:
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
....
Поэтому дополнительный параметр загрузки в моем случае - resume_offset=34816
. Вам все равно нужно установить параметр загрузки для возобновления раздела. Это будет корневой раздел (или какой-либо раздел, в котором находится ваш файл подкачки). Мои параметры теперь:
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=/dev/mmcblk1p2 resume_offset=34816"
Где /dev/mmcblk1p2
- мой корневой раздел (у вас более вероятно что-то вроде /dev/sda2
).
Во время возобновления я видел загрузку изображения успешно, но в моем случае (просто пример - YMMVAPD), тогда еще несколько драйверов (i2c_designware
) забросали некоторые ошибки, и я получил полное зависание системы на резюме. Спящий режим работает, если я выгружаю эти модули в дополнение к brcmfmac
, но система быстро становится непригодной для использования без этих модулей. Поэтому я сделал своего рода сценарий, чтобы выгрузить багги-модули и сразу же вставить их в резюме:
# remove buggy modules
modprobe -r brcmfmac i2c_designware_platform i2c_designware_core &&
# hibernate
echo disk > /sys/power/state
# reinsert
modprobe i2c_designware_core i2c_designware_platform brcmfmac
Когда я хочу спящий режим, я запускаю sudo bash script
. Это отлично работает.
Используйте systemd, задайте параметр загрузки для возобновления смены, определите багги-драйверы и выгрузите их перед началом спящего режима. Если система не может работать долго без этих модулей или вам нужно выгрузить несколько, может быть проще использовать простой скрипт для запуска спящего режима.
Для меня он работает, чтобы установить пакет hibernate
, перезагрузиться, а затем запустить sudo hibernate-disk
. Я уверен, что можно добавить его в меню, но не стоит времени для меня.
Я думаю, что как включить спящий режим для ответа 16.04, известно всем, как описано в Ubuntu Wiki (см. ниже, если вам нужны этапы). Но вещи, которые нуждаются в проверке, не являются тщательными, я думаю. По крайней мере, это то, что я нашел.
Из моих собственных тестов я, по крайней мере, нашел один дополнительный чек, который вы должны выполнить. Я не нашел об этом нигде в Интернете.
Вот некоторые проверки -
ext4
мне не помогло. Мне нужно было удалить пакет btrfs-tools
. sudo apt-get purge btrfs-tools
Возможно, вы захотите проверить другие типы разделов, которые недостаточно хорошо протестированы. Без удаления пакета черный список драйверов также может работать, но я не тестировал это. Он включает в себя следующие этапы
/etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla
sudo -i nano /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla
[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
polkitd
sudo systemctl restart polkitd.service
Он должен включить спящий режим.
btrfs-tools
в соответствии с вашими инструкциями. Все еще не может спячки.
– Oxwivi
4 September 2016 в 12:04
vfat
для UEFI, btrfs
и swap
. Я на самом деле подозреваю, что это связано с аппаратным обеспечением (ноутбук AMD). Я собираюсь проверить это на другой системе с помощью btrfs и вернуться к вам.
– Oxwivi
4 September 2016 в 14:03
(я задал аналогичный вопрос с просьбой сосредоточиться на ответах на основе systemd, поделившись своим решением здесь для людей, следующих за этим вопросом)
Это решение происходит из тем Fedora (они сделали переход на systemd некоторое время назад, поэтому там больше материала).
В моем случае (новый 16.04.1 установить на машина, которая всегда поддерживала спящий режим), вызов устаревшего sudo pm-hibernate
, похоже, ничего не сделал, и обновленный метод systemd systemctl hibernate
вернется:
Failed to hibernate system via logind: Sleep verb not supported
Оказывается, что безопасный boot был виновником: установив 16.04, вас спросят, что вы хотите с ним сделать (что, насколько я помню, это новая вещь), и я сохранил ее, не задумываясь.
На моем машина с защищенной загрузкой включена, cat /sys/power/disk
ответил:
[disabled]
После перезагрузки и отключения безопасной загрузки в настройках BIOS (они зависят от машины, но обычно довольно просто), я попробовал cat /sys/power/disk
и получил:
[platform] shutdown reboot suspend
, который выглядит лучше. И действительно, вызов systemctl hibernate
приводит к успешной последовательности спящего / оттаивания.
Кроме того, после этого я мог видеть, что спящий режим доступен в качестве опции в разных местах графического интерфейса, без необходимости взлома polkit
. Похоже, что systemd
на самом деле догадывался из /sys/power/disk
, что система не могла спячки.
Расширение моего собственного комментария к ответу kelvinelove, файл, который он предлагает, редактирование не существует в моей системе (свежий Ubuntu 16.04). Вместо этого я сделал это:
sudo nano /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
EDIT: Gunnar отметил, что этот файл перезаписывается, если определенный пакет обновляется, поэтому в зависимости от ваших намерений это скорее всего не лучшее решение.
Источник: http://www.zedt.eu/tech/ Linux / включить-гибернации-Xubuntu-16-04 /
/etc
не должен существовать по умолчанию. Это файл конфигурации, который вы создаете. Редактирование пакета, принадлежащего файлу, как вы предлагаете выше, является плохим советом, поскольку он будет перезаписан при следующем обновлении пакета.
– Gunnar Hjalmarsson
2 September 2016 в 09:11
Вы можете использовать
sudo pm-hibernate
, чтобы проверить, работает ли спящий режим в вашей системе (это приведет к спячке на вашем компьютере).
Если это не сработает, проверьте, по крайней мере такой же, как ваша оперативная память.
Чтобы добавить опцию в меню настроек, вы можете создать файл конфигурации. Откройте окно терминала и запустите эту команду:
sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Он открывает nano с пустым файлом. Скопируйте приведенные ниже строки и вставьте их в окно nano.
[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
Затем сохраните изменения и закройте nano и перезагрузите систему, чтобы сделать доступным Hibernate в «Power options».
Ссылка: Как спящий режим моего компьютера? в официальной документации для Ubuntu 16.04.
Надеюсь, что это сработает. Это работало для меня после того, как вы пробовали все другие варианты.
Во-первых, я рекомендую вам проверить, поддерживает ли ваша машина спящий режим, потому что причина, по которой гибернация отключена по умолчанию, связана с тем, что она иногда имеет неприятные результаты на некоторых машинах. Проверьте свою машину, открыв терминал (Ctrl + Alt + T), а затем введите sudo pm-hibernate
. Ваш компьютер должен находиться в спящем режиме. Пробудите свою машину после спячки и наблюдайте, не ошибается ли она, или если она действует нормально. Если вы испытываете какие-либо отклонения после спячки, я советую вам не продолжать следующую процедуру. Однако, если он работает нормально, продолжайте активировать спящий режим, выполнив следующее:
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
Отредактируйте открытый файл и добавьте следующие строки:
[Re-enable hibernation]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
После этого перезапустите и после входа в систему вы должны увидеть параметр спящего режима, добавленный в меню питания, в верхнем правом углу настроек.
at all
– Aalok
17 July 2016 в 21:01
com.ubuntu.enable-hibernate.pkla
. См. Ответ, отправленный NirajW.
– Gunnar Hjalmarsson
2 September 2016 в 09:31
Вы должны вручную включить его с небольшими усилиями. По умолчанию он отключен.
http://ubuntuhandbook.org/index.php/2014/04/enable-hibernate-ubuntu-14-04/
Тогда, если это не сработает, это может быть проблема ядра 4.4.0, и вам, возможно, придется обновить ядро.
Здесь есть несколько очень хороших ресурсов, которые помогут вам разобраться с некоторыми более распространенными проблемами спящего режима в Ubuntu.
В моем случае, запуская Ubuntu 16.10 на Lenovo u300s, чтобы спящий режим работал Я должен был сделать следующее:
/etc/default/grub
, чтобы включить следующую строку: GRUB_CMDLINE_LINUX_DEFAULT = "splash quiet pci = nomsi RESUME = UUID = 92781adb-f2a6-4f15-88fc-e1ce801291dd" RESUME ссылается к вашему UUID файла свопинга. В частности, на моей машине настройка pci=nomsi
была ключом.
Удачи!
systemctl
и его работа в трудных случаях Для меня pm-hibernate
всегда терпит неудачу. После некоторых настроек я смог спящий режим использовать интерфейс systemd (init system в 16.04 и выше). Мне также удалось заставить его работать с 17.04 с файлом подкачки. Данное исследование может быть полезно для других с проблемами.
Первая попытка:
sudo systemctl hibernate
Если это не удается, начните устранение неполадок: в состоянии спящего режима (HTD или ACPI S4) машина состояние записывается на диск, поэтому для его сохранения не требуется никакой энергии. Состояние записывается либо в раздел подкачки, либо в файл подкачки. Примечание: если вы используете BTRFS, НЕ пытайтесь использовать файл подкачки, так как это может привести к повреждению файловой системы
. Ваш раздел подкачки или файл подкачки, возможно, должен быть того же размера, что и RAM, чтобы разрешить спящий режим, но есть хорошая Вероятно, вы сможете спящий режим, если он равен по меньшей мере 2/5 размерам ОЗУ, согласно странице вики-арки , поэтому сначала попробуйте выполнить другие шаги, прежде чем увеличивать размер свопинга.
Если ваша проблема в том, что вы получаете чистую загрузку вместо ожидаемого резюме, как минимум, вам, скорее всего, нужно будет установить загрузочный параметр для поиска образа диска
Найти свой своп partition:
grep swap /etc/fstab
для меня это возвращает (частичный вывод)
# swap was on /dev/mmcblk0p3 during installation
где /dev/mmcblk0p3
- это раздел для указания
Добавить параметр загрузки :
sudoedit /etc/default/grub
В начало строки GRUB_CMDLINE_LINUX_DEFAULT
добавьте resume=/dev/YourSwapPartition
в раздел в кавычках (замените раздел, который вы определили ранее). Используя мой пример:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/mmcblk0p3"
При каждом изменении этого файла вы должны запустить sudo update-grub
или изменения не будут иметь эффекта.
Теперь вам нужно перезагрузиться. Затем вы можете попытаться спящий режим, выполнив команду:
sudo systemctl hibernate
. Для возобновления нажмите кнопку питания и система загрузится.
Если у вас все еще есть проблемы, начните отладку ,
В качестве примера я приведу пример, приведенный ниже, но подробную информацию о состояниях отладки S можно найти в этом блоге и также в этом .
Задайте еще несколько параметров загрузки, чтобы получить дополнительную информацию. Удалите quiet
и splash
и добавьте initcall_debug
и no_console_suspend
, которые вызовут системные вызовы init, которые будут напечатаны на консоли, чтобы вы могли смотреть, что происходит неправильно. Я установил это:
GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/mmcblk0p3 no_console_suspend initcall_debug"
Который помог мне понять, что происходит не так, как возобновить спящий режим.
В моем случае после возобновления я потерял WiFi, и ядро явно расстроилось как большинство команд (например, прочитав что-либо из /sys
, перезагружая модули или любую команду systemctl
), не будет работать - процесс, похоже, начнется и просто повесит (все это будет возвращено в нормальное состояние после перезагрузки, конечно). Наблюдая за тем, как система очень медленно закрывается и читает все отладочные сообщения, я заметил, что проблем с «brcm» было много, поэтому я догадался, что мой модуль беспроводной связи Broadcom виноват. Разумеется, я скорректировал свою процедуру гибернации, чтобы сначала выгрузить модуль:
sudo modprobe -r brcmfmac
sudo systemctl hibernate
в возобновлении I снова вставить модуль
sudo modprobe brcmfmac
И все работает отлично. Мне также нужно занести в черный список модуль btsdio
, который кажется несовместимым с brcmfmac
Еще раз с помощью с вики-страницы Arch и некоторые дополнительные манипуляции, мне удалось спящий режим работать с 17.04 с помощью файла подкачки. Для этого потребовался дополнительный параметр загрузки, resume_offset=n
, где n - первое число под physical_offset
на выходе sudo filefrag -v /swapfile
:
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
....
Поэтому дополнительный параметр загрузки в моем случае - resume_offset=34816
. Вам все равно нужно установить параметр загрузки для возобновления раздела. Это будет корневой раздел (или какой-либо раздел, в котором находится ваш файл подкачки). Мои параметры теперь:
GRUB_CMDLINE_LINUX_DEFAULT="no_console_suspend initcall_debug resume=/dev/mmcblk1p2 resume_offset=34816"
Где /dev/mmcblk1p2
- мой корневой раздел (у вас более вероятно что-то вроде /dev/sda2
).
Во время возобновления я видел загрузку изображения успешно, но в моем случае (просто пример - YMMVAPD), тогда еще несколько драйверов (i2c_designware
) забросали некоторые ошибки, и я получил полное зависание системы на резюме. Спящий режим работает, если я выгружаю эти модули в дополнение к brcmfmac
, но система быстро становится непригодной для использования без этих модулей. Поэтому я сделал своего рода сценарий, чтобы выгрузить багги-модули и сразу же вставить их в резюме:
# remove buggy modules
modprobe -r brcmfmac i2c_designware_platform i2c_designware_core &&
# hibernate
echo disk > /sys/power/state
# reinsert
modprobe i2c_designware_core i2c_designware_platform brcmfmac
Когда я хочу спящий режим, я запускаю sudo bash script
. Это отлично работает.
Используйте systemd, задайте параметр загрузки для возобновления смены, определите багги-драйверы и выгрузите их перед началом спящего режима. Если система не может работать долго без этих модулей или вам нужно выгрузить несколько, может быть проще использовать простой скрипт для запуска спящего режима.