Я хочу сохранить сеанс или спящий режим в Ubuntu 17.10, чтобы избежать повторного открытия одних и тех же приложений.
Как я могу это сделать?
Основным источником этого ответа (помимо моего собственного опыта) является эта страница в 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
Я использую оператор &&
, чтобы гибернация не выполнялась, если по какой-либо причине выгрузка не удалась. Если возобновление выполнено успешно, модули немедленно перезагружаются в ядро, поэтому система должна оставаться в рабочем состоянии.
Вы можете найти разные шаги, необходимые для вашей конкретной системы.
Все это хорошо работает для меня в спящем режиме, спасибо за инструкции! В моем случае мне также пришлось заставить работать самое последнее стабильное ядро для hibernate, то есть Ubuntu 17.10 и dell xps 9370, мне пришлось обновить ядро до 4.16.0rc
В моем случае эта процедура не работала, как описано.
Мне пришлось заменить / 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 "
После этого это сработало.