Hibernate on linux mint

Руководство по включению гибернации в Linux Mint 20 Cinnamon (Ubuntu 20) и предотвращению нежелательных пробуждений

ГДЕ И КАК УСТАНОВИТЬ ДАУНРИГГЕР

ОБНОВЛЕНИЕ: я обнаружил некоторые несоответствия с моим сценарием в разделе 4, который должен выполняться при каждом пробуждении. Оказывается, /proc/acpi/wakeup только настройки сбрасываются иногда. Не при каждом выключении / перезапуске / гибернации / приостановке. Итак, время от времени мой сценарий включал пробуждение. Я обновил скрипт. Теперь он проверяет, говорит ли он включен в любом месте в /proc/acpi/wakeup и только потом выводит на него.

Это своего рода памятка для меня в будущем. Я не понимаю, почему гибернация в Linux — это не простая функция, которая просто работает, и почему ее включение должно быть таким сложным. Я надеюсь, что это также поможет людям, у которых есть вопросы о гибернации.

  1. Во-первых, вам нужно убедиться, что у вас есть достаточно большой файл подкачки. Своп — это место, где ваша оперативная память сохраняется на диске при переходе в спящий режим.
  • Проверьте размер свопа через Системный монитор -> Ресурсы или запустив sudo swapon —show . Тебе, наверное, не хватает. Размер подкачки должен быть несколько больше, чем размер ОЗУ. В Интернете есть несколько руководств. Я использую 5 ГБ свопа на своей машине с 4 ГБ оперативной памяти.
  • Как увеличить размер свопа, зависит от того, как вы его настроили. Может быть вам нужно создать файл подкачки большего размера, может быть вам нужно открыть GParted и просто измените размер разделов там. У меня есть зашифрованный LVM с /dev/vgmint/root и /dev/vgmint/swap тома. Вы не можете изменить размер LVM, пока он смонтирован, поэтому вы загружаетесь с USB-накопителя с Linux Mint. Там вы можете использовать Диски приложение, чтобы разблокировать зашифрованный LVM, и используйте это прекрасное руководство, чтобы безопасно уменьшить размер вашего /dev/vgmint/root объем:
    • Принудительно проверить файловую систему sudo e2fsck -f /dev/vgmint/root
    • Сжимайте файловую систему sudo resize2fs /dev/vgmint/root 180G . Замените 180G примерно на 90% от размера, который должен быть окончательный.
    • Уменьшите объем до окончательного размера sudo lvreduce -L 200G /dev/vgmint/root , где 200 ГБ — окончательный размер вашего тома.
    • Расширьте файловую систему, чтобы она занимала остальное свободное место на томе sudo resize2fs /dev/vgmint/root
  • Тогда ты можешь бежать sudo lvextend -l 100%FREE /dev/vgmint/swap_1 для расширения тома подкачки только что созданным свободным пространством.
  • Теперь нам нужно обновить своп. Мы закончили с живой системой USB-накопителя, загрузитесь в вашу обычную систему. Если вы снова проверите размер своего свопа, вы увидите, что его размер не изменился, хотя мы просто дали ему больше места. Нам нужно создать новый своп. Бежать sudo swapoff -a отключить все свопы и запустить sudo mkswap /dev/vgmint/swap_1 создать новый.
  1. Теперь проверьте, поддерживает гибернацию и добавить кнопку гибернации назад прочитав эту прекрасную статью:
    • Открыть терминал, запустить sudo pm-hibernate . Ваш компьютер должен перейти в спящий режим. Загрузите его снова и убедитесь, что он все восстанавливает. Если это так, значит, ваше оборудование поддерживает спящий режим.
    • Теперь мы включим значок гибернации. Создать файл:
    • Вставьте в этот файл следующее содержимое:
    • Сохраните, перезапустите. Теперь у вас должна быть опция «Гибернация» при нажатии кнопки питания.
  2. Управление энергопотреблением. Вероятно, это характерно для Linux Mint с Cinnamon. Я хочу, чтобы мой ноутбук переходил в спящий режим после определенного периода бездействия, но невозможно настроить это с помощью Управление энергопотреблением приложение. Для редактирования внутренних настроек Cinnamon я использую редактор dconf ( sudo apt install dconf-editor ). Откройте его, перейдите в / org / корица / настройки-демон / плагины / мощность / или просто ищите мощность. sleep-inactive-battery-type это то, что мне нужно — установите его в режим гибернации. Пока здесь я люблю выключать use-time-for-policy и использовать проценты заряда батареи вместо оставшегося времени для определения состояний «низкий заряд батареи», «критическое состояние батареи» и «действие батареи». Процент заряда батареи — это реальное значение, а оставшееся время является приблизительным и может сильно варьироваться. Вы также можете установить процентные пороги, используя percentage-low , percentage-critical и percentage-action . Взгляните, на этой вкладке есть несколько интересных настроек. Но будьте осторожны.
  3. Теперь последний кусок пазла предотвратить нежелательное пробуждение от приостановки / гибернации. Написать sudo cat /proc/acpi/wakeup . Вы увидите, какие устройства включены и могут привести к нежелательному выходу из спящего режима. Устройства, вызывающие проблемы, необходимо отключить при загрузке и при выходе из режима ожидания / гибернации.
  • Вот как отключить устройство: echo DEVICE_NAME | sudo tee /proc/acpi/wakeup . (Спасибо этой ветке.)
  • Выясните, какие устройства вызывают у вас проблемы (я отключил все), и напишите сценарий bash, который отключит их. (Возможно, файл должен принадлежать root, поскольку root будет его выполнять.) Это будет выглядеть примерно так:
Читайте также:  Realtek драйвера для windows 10 беспроводной

Источник

Guide on how to enable hibernation on Linux Mint 20 Cinnamon (Ubuntu 20) and prevent unwanted wakeups

UPDATE: I have encountered some inconsistencies with my script in section 4 that is meant to be executed on every wake-up. Turns out, /proc/acpi/wakeup settings are only reset sometimes. Not on every shutdown/restart/hibernate/suspend. So, from time to time, my script would enable wakeups. I have updated the script. Now it checks if it says enabled anywhere in /proc/acpi/wakeup and only then outputs to it.

This is, in a way, a memo for myself in the future. I do not understand why hibernation on linux is not a simple feature that just works and why enabling it has to be so complicated. I hope it also helps people having questions about hibernation.

  1. First, you need to make sure you have a large enough swap file. Swap is where your RAM is save on disk when you hibernate.
  • Check the size of your swap either through System Monitor -> Resources or by running sudo swapon —show . You probably do not have enough. Your swap size should be somewhat larger than you RAM size. There are some guides online. I go for 5GB swap on my 4GB RAM machine.
  • How to make your swap larger depends on how you have it set up. Maybe you need to create a larger swap file, maybe you need to open GParted and simply resize partitions there. I have an encrypted LVM with /dev/vgmint/root and /dev/vgmint/swap volumes. You cannot resize LVM while it is mounted, so you boot from a USB stick with Linux Mint. There you can use Disks app to unlock your encrypted LVM and use this beautiful guide to safely reduce the size of your /dev/vgmint/root volume:
    • Force check file system sudo e2fsck -f /dev/vgmint/root
    • Shrink your file system sudo resize2fs /dev/vgmint/root 180G . Replace 180G with about 90% of the size you want the final volume to be.
    • Reduce your volume to it’s final size sudo lvreduce -L 200G /dev/vgmint/root , where 200G is your volume’s final size.
    • Grow your file system to take up the rest of the free space of your volume sudo resize2fs /dev/vgmint/root
  • Then you can run sudo lvextend -l 100%FREE /dev/vgmint/swap_1 to extend your swap volume with the free space you have just created.
  • Now, we need to update swap. We are done with a USB stick live system, boot into your regular system. If you check the size of your swap again, you will see that the size of it has not changed, even though we just gave it more space. We need to create a new swap. Run sudo swapoff -a to disable all swaps and run sudo mkswap /dev/vgmint/swap_1 to create a new one.
  1. Now, test if your hardware supports hibernation and add hibernation button back by reading this lovely article:
    • Open terminal, run sudo pm-hibernate . Your computer should hibernate. Boot it up again and make sure it restores everything. If it does, than your hardware supports hibernation.
    • Now, we will enable hibernation icon. Create file:
    • Paste the following content into that file:
    • Save, restart. Now you should have «Hibernate» option when you press your power button.
  2. Power management. This is probably specific to Linux Mint with Cinnamon. I want my laptop to hibernate after a certain period of inactivity, but it is not possible to set this up using Power Management app. To edit inner Cinnamon settings, I use dconf editor ( sudo apt install dconf-editor ). Open it up, go to /org/cinnamon/settings-daemon/plugins/power/ or just search for power. sleep-inactive-battery-type is what I am after — set it to ‘hibernate’. While here, I like to turn off use-time-for-policy and use battery percentages instead of time remaining to determine «battery low», «battery critical» and «battery action» states. Battery percentage is a real value, while time remaining is an estimate and can vary a lot. You can also set percentage thresholds using percentage-low , percentage-critical and percentage-action . Take a look a round, there are some interesting settings in this tab. Be careful though.
  3. Now, the last piece of the puzzle prevent unwanted wakeups from suspend/hibernation. Write sudo cat /proc/acpi/wakeup . You will see which devices are enabled and can lead to unwanted wakeups from hibernation. Devices that cause you trouble need to be disabled on boot and on return from suspend/hibernation.
  • Here is how to disable a device: echo DEVICE_NAME | sudo tee /proc/acpi/wakeup . (Thanks to this thread.)
  • Figure out which devices cause you problems (I have disabled all) and write a bash script that would disable them. (File might need to be owned by root, since root will be executing it.) It would look something like:
Читайте также:  Графический интерфейс линукс минт

Источник

Почему в Debian/Ubuntu/Mint по умолчанию выключена поддержка Hibernate?

Сам столкнулся с этим в последнем Mint 20 Cinnamon и нашёл массу жалоб на то, что в Debian/Ubuntu/Mint по умолчанию выключена поддержка Hibernate, плюс несколько обсуждений того, как её включить:

Почему то, что в Windows просто работает, в Linux просто отключено?

Не понял, у меня все с самого начала было включено (Buster), и с самого начала работало через ж… ну вы поняли.

Видимо так работает, что лучше пусть будет отключено.

Судя по описанию решения по второй ссылке корень проблемы в недостаточном размере swap файла. У меня инсталлятор решил, что 2 GB будет достаточно, хотя памяти в 16 раз больше и диск на пол тера.

Windows же ведёт себя более благоразумно.

Каков размер swap файла/раздела в твоей системе, по сравнению с объёмом памяти?

В современных компьютерах (твое древнее гогно к этому отношения не имеет) довольно хорошо починили ACPI и прочие sleep так, что гибернация оказалась ненужной. Да и на холодную ОС стали грузиться на порядок быстрее благодаря SSD.

Как долго хватит на половину заряженного аккумулятора лептопу в режиме sleep? Дня три — четыре протянет? А неделю или две, пока я в отпуске? С чего ты взял, что у меня что-то древнее?

Да, примерно то же самое писали в devel рассылке федоры, когда обсуждали переход на zram с дискового свопа.

Не знал, кстати, что оно не работает с Secure Boot. Впрочем я никогда гибернацией и не пользовался, и даже в винде вырубаю вместе со ее своп файлом

Вот кстати еще интересная инфа

ACPI is a mess of a specification, it’s massive and complicated. No single vendor implements all of it, and possibly not single vendor implements portions completely correctly and bug free. ACPI power level S4 is fragile, it doesn’t even always work on Windows (or macOS for that matter) . ACPI power level S3 is apparently becoming more fragile, noted by increasing user reports where S3 appears to just be a stub (hardware will enter suspend to RAM, but has variable degrees of recover from not at all to the display or keyboard don’t work). Hardware vendors, Microsoft, Apple, and Linux kernel developers have been putting most of their effort into S0 lower power idle because they don’t have to depend on ACPI or (logic board) firmware, and on faster boot times, where hibernation is a fallback position.

Там какой-то новый подвид S3 появился на ноутах, который плохо с линуксом дружит

Читайте также:  Драйвер ime для windows 10

Suspend, который sleep, у меня как раз работает.

Видимо потому что с hibernate не совместимо шифрование диска?

Как долго хватит на половину заряженного аккумулятора лептопу в режиме sleep? Дня три — четыре протянет? А неделю или две, пока я в отпуске? С чего ты взял, что у меня что-то древнее?

Осталось понять, какой процент пользователей юзает вполовину заряженный аккумулятор в sleep’е больше трех-четырех дней и к тому же хочет неделю не подходить к компьютеру, но при этом хочет чтобы все данные недельной давности на нем оставались открытыми.

Осталось понять, какое отношение sleep вообще имеет к обсуждаемому вопросу. У меня рабочий лептоп, который я забираю домой или (реже) запираю в тумбочку. Вернуться в офис, или просто к внешнему источнику электричества, лептом может через сутки, через несколько суток или даже через несколько недель. Как мне это делать не обращая внимание на то, сколько процентов заряда аккумулятора осталось и с сохранением текущего состояния?

На мой последний вопрос в предыдущем сообщении ты не ответил.

Видимо потому что с hibernate не совместимо шифрование диска?

Шифрования диска нет.

Система при установке, насколько помню, предлагала где то 1:1. Но это самому можно задать (у меня в 2 раза больше). Все остальное, о чем писалось по ссылкам, было по дефолту включено.

И что, совсем без ошибок? Без правок и ковыряния в системе!? Эхх…

Потому что не таргентовая аудитория.

На серверах, роутерах это не нужно.

Комп, тикай з городу! Тобi винда!

Не сказал бы что в венде просто работает. На тех ноутах и станционарниках в моей семье и у родных что есть, где-то что-то обязательно не работает. То в вине не работает гибернация, то в линуксе, то какие-то проблемы с обычным суспендом.

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

Сам по себе холодный запуск можно прилично оттюнить было в линуксе ещё с мохнатых годов. Но когда работаешь, обычно открыты десятки каких-нибудь аппликух и вот скиптовать это так, чтобы в том же виде всё открывалось, в котором было — довольно муторно и не особо получается. Куда проще гибернейт.

И что, совсем без ошибок? Без правок и ковыряния в системе!? Эхх…

Ну я не часто этим пользуюсь. Вот перед написанием того комментария попробовал уйти в sleep и вернуться и оно работало.

Система при установке, насколько помню, предлагала где то 1:1. Но это самому можно задать (у меня в 2 раза больше). Все остальное, о чем писалось по ссылкам, было по дефолту включено.

Наверное Debian всё ещё делает это по-старинке, как это принято при серверном использовании. Но в данном случае речь идёт о лептопе и в моём случае о Linux Mint.

Потому что не таргентовая аудитория.

Источник

Оцените статью