Спящий режим (гибернация) в Linux

После установки Linux на ноутбук «Спящий режим» (гибернация) выключен, из соображения стабильности работы системы.

Для настройки и включения «Спящего режима» нужно создать раздел SWAP размером не менее объёма оперативной памяти:

     *если используется SSD, то раздел SWAP не обязателен, достаточно SWAP-файла

sudo dd if=/dev/zero of=/swap bs=1M count=2048
sudo chmod 600 /swap && sudo mkswap /swap
sudo swapoff -a
sudo swapon /swap

Ставим SWAP в автомонтирование при загрузке в /etc/fstab:

sudo echo "/swap swap swap defaults 0 0" | sudo tee -a /etc/fstab

Смотрим к какому разделу монтируется «/» и какой у него UUID:

df -h
blkid

В нашем примере это раздел /dev/sda1 и его UUID= «a910f2d0-94e0-43b8-8713-e2adb2a471f5»

Ставим утилиту uswsusp и смотрим какой первый блок нашего SWAP-файла:

sudo apt install uswsusp
swap-offset /swap

У нас это resume offset = 233472

Записываем эту информацию в /etc/initramfs-tools/conf.d/resume:

sudo echo resume=UUID=a910f2d0-94e0-43b8-8713-e2adb2a471f5 resume_offset=233472 > /etc/initramfs-tools/conf.d/resume

Записываем информацию в конфиг /etc/default/grub:

sudo nano /etc/default/grub

Меняем в нём GRUB_CMDLINE_LINUX_DEFAULT=«quiet splas» на:

GRUB_CMDLINE_LINUX_DEFAULT=resume=UUID="a910f2d0-94e0-43b8-8713-e2adb2a471f5" resume_offset=233472

Параметр заставки при загрузки можно оставить и переместить в параметр GRUB_CMDLINE_LINUX:

GRUB_CMDLINE_LINUX="quiet splas"

     *так как в одном поле они работать не будут

Сохраняем настройки, обновляем загрузчик и перезагружаемся:

sudo update-grub && sudo update-initramfs -u && reboot

После запуска пробуем работу гибернации:

sudo pm-hibernate

Далее включаем работу кнопок в меню:

sudo nano /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

И переводим все «no» в «yes»

Настраиваем кнопки:

sudo cp /lib/systemd/system/systemd-hibernate.service /etc/systemd/system/
sudo nano /etc/systemd/system/systemd-hibernate.service

И меняем параметр ExecStart на:

ExecStart=/bin/sh -c 's2disk && run-parts --regex .\* -a post /lib/systemd/system-sleep'

Проверяем работу кнопок