Top.Mail.Ru
? ?

Круглый серфер

Дневник Аполлона Сферического


Предыдущий пост Редактировать запись Редактировать метки В избранное Поделиться Отслеживать Следующий пост
Линукс (убунту/минт) поиски пропавшей гибернации
DmsRound
_dms
Давно заметил, что из линуксов Убунту/Минт пропало завершение работы - Спящий режим (Гибернация).
Решил разобраться, покопался в интернете, сделал, получилось.
Отключаем своп
sudo swapoff /swapfile
Делаем свопвфайл размером как минимум с размер оперативной памяти
sudo dd if=/dev/zero of=/swapfile bs=$(cat /proc/meminfo | awk '/MemTotal/ {print $2}') count=1024 conv=notrunc
Создаем файловую систему свопа. Тот UUID, что выдает mkswap нам не интересен.
sudo mkswap /swapfile
Включаем своп
sudo swapon /swapfile

Вот так получаем UUID партишина содержащегося в /swapfile
sudo findmnt -no UUID -T /swapfile
20562a02-cfa6-42e0-bb9f-5e936ea763d0 - этот UUID используем далее.

Если не установлен пакет uswsusp устанавливаем
sudo apt install uswsusp
Конфигурируем пакет uswsusp для корректной работы /swapfile
Отвечаем "Yes" to continue without swap space
Выбрать "/dev/disk/by-uuid/20562a02-cfa6-42e0-bb9f-5e936ea763d0" должен быть UUID полученый findmnt
Шифровать не надо "No"
sudo dpkg-reconfigure -pmedium uswsusp

Теперь редактируем SystemD hibernate service
sudo systemctl edit systemd-hibernate.service
Вставляем следующий код
[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep


Получим resume offset /swapfile, это смещение скоро понадобится
sudo swap-offset /swapfile
resume offset = 34818

Редактируем /etc/default/grub для восстановления из свопфайла.
Изменения в следующей строке. UUID - полученый findmnt, resume offset из swap-offset.
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34818 quiet splash"

Апдейтаем груб
sudo update-grub

Создаем файл /etc/initramfs-tools/conf.d/resume
Записываем следующий код UUID, resume-offset соответствующие
RESUME=UUID=20562a02-cfa6-42e0-bb9e-5e936ea763d0 resume_offset=34816

Апдейтаем initramfs:
sudo update-initramfs -u -k all

Сейчас уже можно запустить спящий режим (гибернацию)
sudo systemctl hibernate

Теперь сделаем доступной опцию гибернации в меню выключения системы
Создаем и редактируем файл /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
sudo touch /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
sudo nano /etc/polkit-1/localauthority/50-local.d/com.ubuntu.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


Вот и всё.