Как мне перейти в спящий режим на Ubuntu 17.10 или сохранить сеанс?

Я хочу сохранить сеанс или спящий режим в Ubuntu 17.10, чтобы избежать повторного открытия одних и тех же приложений.

Как я могу это сделать?

3
задан 19 December 2017 в 01:15

3 ответа

Основным источником этого ответа (помимо моего собственного опыта) является эта страница в Arch Linux wiki .

В этом ответе я использую sudoedit для внесения изменений в корневые файлы. Если вы предпочитаете, вы можете просто вызвать ваш любимый текстовый редактор с правами суперпользователя, но если вы хотите использовать редактор графического интерфейса и используете Wayland, см. Почему gksu / gksudo или запуск графического приложения с помощью sudo не работают с Wayland? ).

Если вы не можете переходить в спящий режим, имейте в виду, что вы все еще можете (возможно) экономить электроэнергию, используя состояние приостановки, в котором поддерживается состояние ОЗУ. Командой systemd для этого является systemctl suspend, и она скорее работает, чем гибернация.


Следует сказать, что гибернация не гарантируется; поэтому инициация спящего режима через графический интерфейс отключена по умолчанию. Даже если вы все делаете правильно, у вас все равно могут быть проблемы. Может произойти сбой вашей системы, состояние вашего компьютера может не восстановиться (например, вы можете потерять несохраненную работу), и вы можете оказаться в печальной ситуации, когда удерживаете кнопку питания в течение очень долгого времени. время. Я рекомендую только пытаться тестировать спящий режим после сохранения всей вашей работы и оставлять открытым только какое-то незанятое приложение (например, эмулятор терминала, который ничего не делает).

Спящий режим включает запись состояния ОЗУ в область диска. Пространство подкачки используется для этой цели. Будь то файл или раздел, он должен работать одинаково. Arch Wiki говорит, что вы должны быть в состоянии гибернации, если размер вашего свопа составляет не менее 2/5 от объема оперативной памяти. Redhat предоставляет это руководство по размеру свопа, необходимого для гибернации , которое полностью противоречит Arch Wiki! Но я рекомендую другие шаги отладки, прежде чем пытаться увеличить размер пространства подкачки.

Если вы используете Btrfs , вы не сможете перейти в спящий режим , и Btrfs не поддерживает файлы подкачки, согласно Arch Wiki. Формат по умолчанию для основных разделов в Ubuntu 17.10 (и всех других поддерживаемых в настоящее время версиях) - ext4, а не Btrfs, поэтому большинству пользователей не нужно беспокоиться об этом.

Ответ NirajW здесь объясняет, как проверить и включить спящий режим, если он работает. Команда, которую он предлагает, это

sudo pm-hibernate

Это не помогает мне, независимо от того, какие другие настройки я делаю (моя система мгновенно зависает и никогда не восстанавливается). Вместо этого я использую

sudo systemctl hibernate

Вы также можете попробовать

echo disk | sudo tee /sys/power/state

Спящий режим - это минимально возможное состояние питания (ACPI S4). Что должно произойти, это то, что система выключается, машина выключена и может быть отключена на неопределенное время, и когда вы включаете ее снова, вместо чистой загрузки, вы входите в систему и возобновляете сеанс.

Если вы получаете чистую загрузку при попытке перехода в режим гибернации, первое, что нужно сделать, это установить параметр загрузки, чтобы GRUB знал, где найти состояние компьютера для загрузки обратно в ОЗУ при возобновлении (по крайней мере Вот как я понимаю процесс. Если это не так, пожалуйста, поправьте меня).

Установка параметров загрузки для возобновления

В свежих установках Ubuntu 17.04 и 17.10 имеется файл подкачки. Если вы обновились с более ранней установки, у вас все равно будет раздел подкачки. Процедура настройки параметров резюме отличается, если у вас есть файл подкачки. Проверьте свою конфигурацию, запустив

grep swap /etc/fstab

Если у вас есть раздел подкачки, на выходе будет отображаться метка раздела, например

# swap was on /dev/sda3 during installation

Если нет вывода, запустите

ls /

и ищите /swapfile.

Если у вас есть раздел подкачки

Чтобы добавить параметр резюме, вы должны выполнить

sudoedit /etc/default/grub       

Найти строку, которая начинается GRUB_CMDLINE_LINUX_DEFAULT= и добавить к параметрам между двойными кавычками строка resume=/Your/Swap/Partition, заменяющая /Your/Swap/Partition на путь к файлу устройства, который вы нашли в /etc/fstab. В приведенном мной примере полная строка, вероятно, будет (в зависимости от того, какие другие параметры были использованы - quiet и splash являются параметрами по умолчанию в настольной установке Ubuntu):

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda3"

После редактирования этого файла необходимо запустить

sudo update-grub

, чтобы записать конфигурацию в Файл GRUB читает при загрузке. Если вы забудете это сделать, ваши изменения не окажут никакого влияния;) Вам также рекомендуется перезагрузить компьютер после этого перед попыткой спящего режима.

Если у вас есть файл подкачки

Вам необходимо установить параметр для выхода из спящего режима. Ваш /swapfile должен находиться в вашем корневом разделе, поэтому установите параметр загрузки resume=/Your/Root/Partition, где /Your/Root/Partition - это путь к файлу устройства для вашего корневого раздела, например, /dev/sda2. Если вы не уверены, проверьте содержимое /etc/fstab, чтобы увидеть, какой раздел смонтирован на /

Вам также необходимо установить параметр загрузки для смещения файла подкачки , Вы можете найти значение для этого параметра, выполнив команду sudo filefrag -v /swapfile. Вот начало вывода этой команды в моей системе (оно точно такое же, как вывод, полученный мной 17.04, но сейчас я использую Ubuntu MATE 17.10):

$ 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:            
   ...

Число для параметра смещения это первое число в столбце physical_offset. В моем примере это 34816. Это означает, что параметр загрузки, который я установил бы, будет resume_offset=34816.

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

sudoedit /etc/default/grub

Найдите начало строки GRUB_CMDLINE_LINUX_DEFAULT= и добавьте два параметра загрузки, чтобы после ваших изменений строка что-то читала как

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda2 resume_offset=34816"

, но замените /dev/sda2 и 34816 значениями для вашей системы.

Сохраните файл, выйдите и запустите

sudo update-grub

, чтобы записать конфигурацию в файл, который GRUB считывает при загрузке. Перезагрузитесь и попробуйте снова спящий режим.

Если вы по-прежнему не можете перейти в спящий режим, попробуйте отключить безопасную загрузку в настройках UEFI (или BIOS), если это еще не сделано.

Если вы по-прежнему не можете перейти в спящий режим, вы можете попытаться отладить процесс, установив некоторые дополнительные параметры загрузки, как подробно объяснено в этом посте об отладке спящих состояний . Снова отредактируйте /etc/default/grub, удалите параметры quiet и splash и добавьте параметры отладки, которые вы хотите попробовать (например, я использую initctl_debug и no_console_suspend), запустите sudo update-grub, перезагрузите компьютер и попробуйте снова ,

Информация, предоставляемая параметрами отладки, может привести к тому, что вы поймете, что происходит не так, и позволит вам найти решение. Я использую свою собственную систему в качестве тематического исследования в моего ответа на другой вопрос о спячке . В моем случае проблема всегда в глючных драйверах. В каждой версии Ubuntu, которую я использовал, мне приходилось выгружать модуль brcmfmac из ядра перед гибернацией и повторно вставлять его при возобновлении работы. Если необходимо выгрузить более важные модули, я использую своего рода сценарий (запускаемый с sudo bash filename) для режима гибернации (заменяя list of buggy modules именами фактических модулей, которые необходимо извлечь):

modprobe -r list of buggy modules &&
echo disk > /sys/power/state
modprobe list of buggy modules

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

Вы можете найти разные шаги, необходимые для вашей конкретной системы.

3
ответ дан 19 December 2017 в 01:15

Все это хорошо работает для меня в спящем режиме, спасибо за инструкции! В моем случае мне также пришлось заставить работать самое последнее стабильное ядро ​​для hibernate, то есть Ubuntu 17.10 и dell xps 9370, мне пришлось обновить ядро ​​до 4.16.0rc

0
ответ дан 19 December 2017 в 01:15

В моем случае эта процедура не работала, как описано.

Мне пришлось заменить / dev / sda XX на UUID для / dev / sdaXX. Его UUID был
d2175d30-aee3-418b-8c3f-d4ae61d13b3f
, поэтому строка editid в GRUB2 выглядела так:

GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash resume = UUID = d2175d30-aee3-418b-8c3f-d4ae61d13b3f resume_offset = 2367488 "

После этого это сработало.

0
ответ дан 19 December 2017 в 01:15

Другие вопросы по тегам:

Похожие вопросы: