Внесены изменения в настройки по умолчанию по сравнению с предыдущими LTS (16.04). В моем случае гибернация не работала до тех пор, пока я не сделал несколько шагов, среди которых был увеличен размер файла подкачки, он включен, убедился, что политики разрешают это и т.д.
Это может быть мой самый длинный ответ на весь StackExchange, поэтому я попытался сделать заголовки описательными .
Сапоги как не было гибернации
Было бы разумно взглянуть на ваши журналы ( dmesg
может помочь) и посмотреть, если что-нибудь есть. Существуют причины, когда, несмотря на то, что вы говорите системе о спящем режиме, она на самом деле не будет или вместо этого будет приостановлена в оперативную память (спит).
Просмотр kern.log
и syslog
поиск сообщений, связанных с гибернацией, также не повредит. Разделы, начинающиеся с «проблема», могут помочь вам с конкретными проблемами.
Файл подкачки или раздел подкачки
Одним из важных изменений является то, что теперь у вас нет раздела подкачки, но у вас есть файл подкачки.
Файл подкачки может не работать для вашего оборудования / драйверов / ОС и гибернации.
Спящий режим отключен
Политики также могут отключать или запрещать спящий режим.
жаргон
Приостановить к ОЗУ - ОЗУ хранит данные, компьютер быстрее переходит в спящий режим, потребляет больше энергии при приостановке, быстрее просыпается. Некоторые называют это сном.
Приостановить на диск - он же спящий режим. Оперативная память сохраняется для подкачки (раздел или файл), компьютер медленнее спит, потребляет меньше энергии при спящем режиме, медленнее просыпается.
Предпосылки - места достаточно?
Чтобы перейти в спящий режим, вам необходимо (упрощение) сохранить всю оперативную память на жестком диске. Итак, вам нужно выделить достаточно места для этого. Если вы этого не сделаете, это не удастся, и вы не будете в спящем режиме.
free -m
скажет вам, сколько памяти у вас есть, сколько вы используете и сколько в вашем свопе.
df -h
скажет вам, сколько дискового пространства у вас в каждой точке монтирования и сколько используется, свободно и т. д. Это важно, так как вы можете позже захотеть указать, где будет находиться ваш файл подкачки или какой раздел «обрезать», чтобы иметь достаточно места для вашего обмена.
cat fstab
должен предоставить вам информацию, если у вас есть раздел или файл подкачки. Согласно Ubuntu Hibernation FAQ swapfile
не всегда могут работать с некоторыми комбинациями оборудования / драйверов.
Если вам не хватает места, следуйте часто задаваемым вопросам по Ubuntu swap . В нем рассказывается, как увеличить файл подкачки, добавить другой, проверить, используется ли он и т. Д. С помощью команд и объяснений. Действительно хороший ресурс.
У меня недостаточно места для моей оперативной памяти!
Документы ядра говорят:
/ sys / power / image_size контролирует размер изображения, созданного механизмом приостановки на диск. Может быть записана строка, представляющая неотрицательное целое число, которое будет использоваться в качестве верхнего предела размера изображения в байтах. Механизм приостановки на диск сделает все возможное, чтобы размер изображения не превышал это число. Однако, если это окажется невозможным, он все равно попытается приостановить, используя наименьшее возможное изображение. В частности, если в этот файл записано «0», изображение приостановки будет как можно меньше. При чтении из этого файла будет отображаться текущий размер изображения, который по умолчанию равен 2/5 доступной оперативной памяти.
Итак, попробуйте настроить размер изображения. Как - задайте еще один вопрос, пожалуйста.
Предварительные условия - поддерживает ли ваше ядро приостановку на диск?
Ядро поддерживает все, что перечислено /sys/power/state
, поэтому:
cat /sys/power/state
Разрешено (по моим сведениям) записи там включает: mem
, standby
, freeze
, disk
. Объяснение:
mem
- имеет несколько значений, которые именно в вашей системе вы узнаете через cat /sys/power/mem_sleep
. У меня есть:s2idle [deep]
standby
- Приостановка при включении питания (если поддерживается)
freeze
- Приостановить на холостом ходу (STI)
disk
- Suspend To Disk (STD), гибернация . Это - вы хотите.
Тогда нам нужно проверить cat /sys/power/disk
. Если у вас есть, disabled
то ныряйте в своем BIOS в поисках безопасной загрузки - это единственная идея, которую я могу предложить, и единственное, что я знаю, может помешать и отключить спящий режим. Хотя я знаю только о SecureBoot, могут быть и другие помехи, поэтому полезно взглянуть на BIOS, даже если у вас нет «безопасной загрузки».
Читая здесь:
- Документы ядра
- Debian Wiki о гибернации
TBH, даже если ваше ядро НЕ поддерживает спящий режим, вы можете попробовать его другим способом, прокрутите вниз до разделаInterfaces
.
Прочитайте это - предупреждения и проблемы - нет BTRFS
В произвольном порядке:
- Не все чипсеты будут работать (у меня нет источников, которые я мог бы здесь привести, поэтому предположим, что это слухи)
- У VAIO есть проблемы, предположительно, есть флаг, чтобы противостоять им
- SecureBoot часто упоминается как мешающий или отключающий спящий режим
- Wake-on-LAN потребляет энергию даже в спящем режиме
- Количество модулей (особенно графических) может быть инициализировано ПЕРЕД тем, как ваша система правильно выйдет из режима гибернации - это обычно является причиной появления черного экрана при возобновлении работы . Посмотрите в ArchLinux Wiki советы по устранению проблем. Я бы также предложил Ubuntu FAQ по вопросам гибернации. Просмотр ошибок Launchpad также может дать результаты. IIRC, есть параметр ядра, указывающий в секундах задержку перед возобновлением.
- Разрешающая процедура гибернации отличается для разных версий Polkit
Не используйте BTRFS и спящий режим: результатом будут поврежденные данные.
Хочу в спящий режим - своп раздела
Есть случаи, когда люди отказываются от файла подкачки и возвращаются в раздел подкачки. В конце концов, это работало на предыдущих LTS. Я не пробовал, поэтому не буду предлагать указатели.
Хочу в спящий режим - с файлом подкачки
- Убедитесь, что у вас есть достаточно места там. Ubuntu swap FAQ говорит вам, сколько вам нужно, команды из вышеупомянутого делают то же самое. Если вам нужна дополнительная информация, задайте еще один вопрос, потому что это длинная тема.
- Увеличьте файл подкачки или создайте новый файл с достаточно хорошим размером ( желательно , я согласен с @muru ) и измените его
/etc/fstab
на новый. Перезагрузка, чтобы увидеть изменения приняты хорошо (сохраните резервную копию, fstab
чтобы вы могли легко вернуться на всякий случай.
- Направьте ваше ядро на это с помощью соответствующих параметров, чтобы оно знало, с чего продолжить.
- Обновите / перенастройте ваш загрузчик и перезагрузите компьютер.
Параметры ядра? Страшно!
Внимательно прочитайте и решите, хотите ли вы это сделать, но это всего лишь способ настройки вашего ядра. Может быть легче перейти в спящий режим с помощью systemd
и uswsusp
(см. Интерфейсы ниже). Может случиться так, что вы, как и я, в конечном счете решите, что приостановки к оперативной памяти достаточно, и вы не хотите иметь 32 ГБ в файле подкачки (например, не очень хорошо для людей с одним SSD в своих ноутбуках). Но!
- Спящий режим для файла подкачки требует
resume=
знать, в каком разделе находится ваш файл подкачки, и resume_offset=
знать, откуда в файле подкачки начинать возобновление.
- hibernate на раздел требует
resume=
указывать на раздел подкачки.
- решение проблем с черным экраном вполне может потребовать
resumedelay=
.
Документы ядра о задержке выхода из спящего режима:
resumedelay = [HIBERNATION] Задержка (в секундах) для приостановки перед попыткой чтения файлов резюме
Обязательные параметры для файла подкачки и гибернации :
резюме = [SWSUSP]
Specify the partition device for software suspend
Format:
{/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}
resume_offset = [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
Для resume=
выбора выберите тот же стиль, что и для root
элемента fstab
. Итак, или /dev/sdaX
или UUID
или LVM. Для гибернации в файл - укажите раздел, где находится ваш файл.
Чтение:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Проблема - заголовок подкачки не найден
Файл подкачки должен быть правильно отформатирован. Если ваши журналы сообщают вам об этом, вы либо пытаетесь перейти в спящий режим, либо ваш параметр резюме неверен.
Переключиться на раздел или исправить файл или изменить интерфейс, используемый для гибернации.
См .: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found.
mkswap
используется для форматирования файла, подробнее об этом здесь
Проблема! Спячка не допускается!
Проверьте: pm-hibernate
(если установлен пакет pm-utils) или systemctl hibernate
сообщите, что вам это запрещено. Настройки по умолчанию в Ubuntu начиная с IIRC 12.04.
Решение (я): зависит от вашей версии Polkit, вашей версии Ubuntu и вкуса ... Смотрите этот вопрос . Также может помочь ArchWiki на Polkit .
Информацию о Mint см .: https://forums.linuxmint.com/viewtopic.php?t=259912.
Проблема! Спящий режим отключен чем-то в BIOS!
Тест: cat /sys/power/disk
имеет disabled
. Журналы показывают «Не удалось перейти в спящий режим системы через logind: глагол сна не поддерживается».
Решение: найдите свой BIOS и найдите проблемную вещь. Выключи это.
Решение 2: попробуйте другой спящий интерфейс.
Смотрите: Как активировать гибернацию в 16.04.1? (systemd) .
Интерфейсы
- swsusp - интерфейс ядра низкого уровня. Смотрите Prerequisites - ядро для каких файлов. Прямая запись в файлы может привести к приостановке (в ОЗУ, на диск и в гибридном режиме). По словам SwapFAQ проблематично с гибернацией в файл.
- uswsusp - ArchWiki и Debian Wiki и хороший вопрос AskUbuntu с описанием того, как его использовать .
- systemd - ArchWiki на нем
- pm-utils - AFAIK - это коллекция скриптов, изначально написанных на Debian, - я с радостью приму больше информации.
Заключительные замечания
Для меня это было почти два дня работы, чтобы собрать это. Надеюсь, это поможет вам (и другим) решить вашу проблему быстрее. Есть еще моменты, которые я пропустил, но сейчас 2 часа ночи, и я не хочу больше писать сейчас. Я, конечно, открыт для любых указателей, чтобы сделать это лучше, так что комментируйте. Я отвечу, когда буду спать, работать и т. Д. :-)
Я не уверен, что спящий режим на диске это так здорово. Я пошел со сном в конце. Но для меня проблема заключалась в том, чтобы иметь файл объемом 32 ГБ просто для того, чтобы можно было переходить в режим гибернации, поскольку я обычно вообще избегаю подкачки. Мой начальный файл подкачки был в 2 ГБ, и это было в основном пустым. YMMV. Тем не менее, удачи! И начни с логов!