Как я должен успешно спящий Ubuntu 16.04?
Я пробовал почти все решения в Интернете, но не из них было действительно полезно. Я нашел свою проблему почти полностью подобной этой
Для меня он работает, чтобы установить пакет hibernate, перезагрузить компьютер и затем запустить sudo hibernate-disk. Я уверен, что это можно добавить в меню, но не стоит времени для меня.
Я думаю, как включить спящий режим для ответа 16.04, известно всем, как описано в Ubuntu Wiki (см. ниже, если вам нужны этапы). Но вещи, которые нуждаются в проверке, не являются тщательными, я думаю. По крайней мере, это то, что я нашел.
Из моих собственных тестов я, по крайней мере, нашел один дополнительный чек, который вы должны выполнить. Я не нашел об этом нигде в Интернете.
Вот некоторые проверки -
Убедитесь, что вы не используете какие-либо разделы btrfs. Да. Из моего теста я обнаружил, что если у вас есть разделы btrfs, спящий режим не будет работать. Удаление или изменение типа раздела на ext4 мне не помогло. Мне нужно было удалить пакет btrfs-tools.sudo apt-get purge btrfs-tools
Возможно, вы захотите проверить другие типы разделов, которые недостаточно хорошо протестированы. Без удаления пакета черный список драйверов также может работать, но я не тестировал это. Также вам нужно проверить, что у вас есть раздел подкачки, достаточно большой для хранения содержимого ОЗУ. Если ваша оперативная память составляет 4 ГБ, своп должен быть не менее 4 ГБ (вы должны выделить несколько МБ для обеспечения безопасности). Он включает в себя следующие шаги
Убедитесь, что вы не используете какие-либо разделы btrfs. Да. Из моего теста я обнаружил, что если у вас есть разделы btrfs, спящий режим не будет работать. Удаление или изменение типа раздела на ext4 мне не помогло. Мне нужно было удалить пакет btrfs-tools.sudo apt-get purge btrfs-tools
Возможно, вы захотите проверить другие типы разделов, которые недостаточно хорошо протестированы. Без удаления пакета черный список драйверов также может работать, но я не тестировал это. Убедитесь, что вы не используете какие-либо разделы btrfs. Да. Из моего теста я обнаружил, что если у вас есть разделы btrfs, спящий режим не будет работать. Удаление или изменение типа раздела на ext4 мне не помогло. Мне нужно было удалить пакет btrfs-tools.
[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
Также вам нужно проверить, что у вас есть раздел подкачки, достаточно большой для хранения содержимого ОЗУ. Если ваша оперативная память составляет 4 ГБ, своп должен быть не менее 4 ГБ (вы должны выделить несколько МБ для обеспечения безопасности). Также вам нужно проверить, что у вас есть раздел подкачки, достаточно большой для хранения содержимого ОЗУ. Если ваша оперативная память составляет 4 ГБ, своп должен быть не менее 4 ГБ (вы должны выделить несколько МБ для обеспечения безопасности).
sudo systemctl restart polkitd.service
Поместите это содержимое в этот файл
(я задал один и тот же вопрос с просьбой сосредоточиться на ответах на основе systemd, поделившись своим решением здесь для людей, следующих за этим вопросом)
Это решение исходит из похожие вопросы (они сделали переход к systemd некоторое время назад, поэтому там больше материала).
В моем случае (новая версия 16.04.1 устанавливается на машине, которая всегда поддерживала спящий режим) , вызов устаревшего sudo pm-hibernate, похоже, ничего не сделал, и обновленный метод systemd systemctl hibernate вернется:
Failed to hibernate system via logind: Sleep verb not supported
Оказывается, что безопасная загрузка была виновницей: установка 16.04 вас спрашивают, что вы хотите с ним делать (что, насколько я помню, это новая вещь), и я сохранил ее, не задумываясь.
На моей машине с безопасной загрузкой ON, 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 Ищите эти разделы (они правы друг с другом): [Отключить спящий режим по умолчанию в upower] Identity = unix-user: * Action = org.freedesktop. upower.hibernate ResultActive = нет [Отключить спящий режим по умолчанию в логине] Identity = unix-user: * Action = org.freedesktop.login1.hibernate; org.freedesktop.login1.handle-hibernate-key; ResultActive = no Change ResultActive = no to ResultActive = yes для обоих из них. Нажмите Ctrl + O, чтобы сохранить файл. Перезагрузите компьютер. Опция Hibernate теперь доступна в ваших меню питания.EDIT: Gunnar отметил, что этот файл перезаписывается, если определенный пакет обновляется, поэтому в зависимости от ваших намерений это скорее всего не лучшее решение.
Источник: http: / /www.zedt.eu/tech/linux/enable-hibernation-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 в разделе «Параметры питания».
Ссылка: Как спящий режим на моем компьютере? в официальной документации для 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, чтобы спящий режим работал Я должен был сделать следующее:
Создайте файл подкачки соответствующего размера (обычно я устанавливаю размер ~ 1x, но я слышал до 1.6x и 2x) Edit /etc/default/grub, чтобы включить следующая строка: GRUB_CMDLINE_LINUX_DEFAULT = "splash quiet pci = nomsi RESUME = UUID = 92781adb-f2a6-4f15-88fc-e1ce801291dd"RESUME ссылается на ваш UUID файла подкачки. В частности, на моей машине настройка pci=nomsi была ключом.
Удачи!
Для меня pm-hibernate всегда терпит неудачу. После некоторых настроек я смог спящий режим использовать интерфейс systemd (init system в 16.04 и выше). Мне также удалось заставить его работать с 17.04 с файлом подкачки. Это будет полезно для других с проблемами.
Первая попытка:
sudo systemctl hibernate
Если это не удается, начните поиск неисправностей: в состоянии спящего режима (HTD или ACPI S4) машина состояние записывается на диск, поэтому для его сохранения не требуется никакой энергии. Состояние записывается либо в раздел подкачки, либо в файл подкачки. Примечание: если вы используете BTRFS, НЕ пытайтесь использовать файл подкачки, так как это может привести к повреждению файловой системы
. Ваш раздел подкачки или файл подкачки, возможно, должен быть того же размера, что и RAM, чтобы разрешить спящий режим, но есть хорошая Вероятно, вы сможете спящий режим, если он равен по меньшей мере 2/5 размерам ОЗУ, согласно странице вики Arch, поэтому сначала попробуйте выполнить другие шаги, прежде чем увеличивать размер свопинга.
Примечание: если вы используете BTRFS, НЕ пытайтесь использовать файл подкачки, так как это может привести к повреждению файловой системы
Найти свой раздел подкачки:
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 можно найти на странице вики Arch , а также на этом.
Set еще несколько параметров загрузки для сбора дополнительной информации. Удалите 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 (см. ниже, если вам нужны этапы). Но вещи, которые нуждаются в проверке, не являются тщательными, я думаю. По крайней мере, это то, что я нашел.
Из моих собственных тестов я, по крайней мере, нашел один дополнительный чек, который вы должны выполнить. Я не нашел об этом нигде в Интернете.
Вот некоторые проверки -
Убедитесь, что вы не используете какие-либо разделы btrfs. Да. Из моего теста я обнаружил, что если у вас есть разделы btrfs, спящий режим не будет работать. Удаление или изменение типа раздела на ext4 мне не помогло. Мне нужно было удалить пакет btrfs-tools.sudo apt-get purge btrfs-tools
Возможно, вы захотите проверить другие типы разделов, которые недостаточно хорошо протестированы. Без удаления пакета черный список драйверов также может работать, но я не тестировал это. Также вам нужно проверить, что у вас есть раздел подкачки, достаточно большой для хранения содержимого ОЗУ. Если ваша оперативная память составляет 4 ГБ, своп должен быть не менее 4 ГБ (вы должны выделить несколько МБ для обеспечения безопасности). Он включает в себя следующие шаги
Убедитесь, что вы не используете какие-либо разделы btrfs. Да. Из моего теста я обнаружил, что если у вас есть разделы btrfs, спящий режим не будет работать. Удаление или изменение типа раздела на ext4 мне не помогло. Мне нужно было удалить пакет btrfs-tools.sudo apt-get purge btrfs-tools
Возможно, вы захотите проверить другие типы разделов, которые недостаточно хорошо протестированы. Без удаления пакета черный список драйверов также может работать, но я не тестировал это. Убедитесь, что вы не используете какие-либо разделы btrfs. Да. Из моего теста я обнаружил, что если у вас есть разделы btrfs, спящий режим не будет работать. Удаление или изменение типа раздела на ext4 мне не помогло. Мне нужно было удалить пакет btrfs-tools.
[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
Также вам нужно проверить, что у вас есть раздел подкачки, достаточно большой для хранения содержимого ОЗУ. Если ваша оперативная память составляет 4 ГБ, своп должен быть не менее 4 ГБ (вы должны выделить несколько МБ для обеспечения безопасности). Также вам нужно проверить, что у вас есть раздел подкачки, достаточно большой для хранения содержимого ОЗУ. Если ваша оперативная память составляет 4 ГБ, своп должен быть не менее 4 ГБ (вы должны выделить несколько МБ для обеспечения безопасности).
sudo systemctl restart polkitd.service
Поместите это содержимое в этот файл
(я задал один и тот же вопрос с просьбой сосредоточиться на ответах на основе systemd, поделившись своим решением здесь для людей, следующих за этим вопросом)
Это решение исходит из похожие вопросы (они сделали переход к systemd некоторое время назад, поэтому там больше материала).
В моем случае (новая версия 16.04.1 устанавливается на машине, которая всегда поддерживала спящий режим) , вызов устаревшего sudo pm-hibernate, похоже, ничего не сделал, и обновленный метод systemd systemctl hibernate вернется:
Failed to hibernate system via logind: Sleep verb not supported
Оказывается, что безопасная загрузка была виновницей: установка 16.04 вас спрашивают, что вы хотите с ним делать (что, насколько я помню, это новая вещь), и я сохранил ее, не задумываясь.
На моей машине с безопасной загрузкой ON, 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 Ищите эти разделы (они правы друг с другом): [Отключить спящий режим по умолчанию в upower] Identity = unix-user: * Action = org.freedesktop. upower.hibernate ResultActive = нет [Отключить спящий режим по умолчанию в логине] Identity = unix-user: * Action = org.freedesktop.login1.hibernate; org.freedesktop.login1.handle-hibernate-key; ResultActive = no Change ResultActive = no to ResultActive = yes для обоих из них. Нажмите Ctrl + O, чтобы сохранить файл. Перезагрузите компьютер. Опция Hibernate теперь доступна в ваших меню питания.EDIT: Gunnar отметил, что этот файл перезаписывается, если определенный пакет обновляется, поэтому в зависимости от ваших намерений это скорее всего не лучшее решение.
Источник: http: / /www.zedt.eu/tech/linux/enable-hibernation-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 в разделе «Параметры питания».
Ссылка: Как спящий режим на моем компьютере? в официальной документации для 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, чтобы спящий режим работал Я должен был сделать следующее:
Создайте файл подкачки соответствующего размера (обычно я устанавливаю размер ~ 1x, но я слышал до 1.6x и 2x) Edit /etc/default/grub, чтобы включить следующая строка: GRUB_CMDLINE_LINUX_DEFAULT = "splash quiet pci = nomsi RESUME = UUID = 92781adb-f2a6-4f15-88fc-e1ce801291dd"RESUME ссылается на ваш UUID файла подкачки. В частности, на моей машине настройка pci=nomsi была ключом.
Удачи!
Для меня pm-hibernate всегда терпит неудачу. После некоторых настроек я смог спящий режим использовать интерфейс systemd (init system в 16.04 и выше). Мне также удалось заставить его работать с 17.04 с файлом подкачки. Это будет полезно для других с проблемами.
Первая попытка:
sudo systemctl hibernate
Если это не удается, начните поиск неисправностей: в состоянии спящего режима (HTD или ACPI S4) машина состояние записывается на диск, поэтому для его сохранения не требуется никакой энергии. Состояние записывается либо в раздел подкачки, либо в файл подкачки. Примечание: если вы используете BTRFS, НЕ пытайтесь использовать файл подкачки, так как это может привести к повреждению файловой системы
. Ваш раздел подкачки или файл подкачки, возможно, должен быть того же размера, что и RAM, чтобы разрешить спящий режим, но есть хорошая Вероятно, вы сможете спящий режим, если он равен по меньшей мере 2/5 размерам ОЗУ, согласно странице вики Arch, поэтому сначала попробуйте выполнить другие шаги, прежде чем увеличивать размер свопинга.
Примечание: если вы используете BTRFS, НЕ пытайтесь использовать файл подкачки, так как это может привести к повреждению файловой системы
Найти свой раздел подкачки:
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 можно найти на странице вики Arch , а также на этом.
Set еще несколько параметров загрузки для сбора дополнительной информации. Удалите 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, задайте параметр загрузки для возобновления смены, определите багги-драйверы и выгрузите их перед началом спящего режима. Если система не может работать долго без этих модулей или вам нужно выгрузить несколько, может быть проще использовать простой скрипт для запуска спящего режима.
Я думаю, что как включить спящий режим для ответа 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
Он должен включить спящий режим.
Для меня он работает, чтобы установить пакет hibernate
, перезагрузиться, а затем запустить sudo hibernate-disk
. Я уверен, что можно добавить его в меню, но не стоит времени для меня.
(я задал аналогичный вопрос с просьбой сосредоточиться на ответах на основе 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
Он должен включить спящий режим.
(я задал аналогичный вопрос с просьбой сосредоточиться на ответах на основе 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
, что система не могла спячки.