title: "Настройка hibernate на linux без использования swap раздела" date: 2022-10-03T13:28:23+03:00
Взято отсюда.
Для начала надо проверить поддержку спящего режима:
systemctl hibernate
Если выдаётся ошибка типа Failed to hibernate system via logind: Sleep verb “hibernate” not supported”
, то, скорее всего, в BIOS включён secure boot. Необходимо его отключить.
Современные дистрибутивы, как правило, используют swap файл, а не swap раздел.
sudo dd if=/dev/zero of=/swapfile count=16384 bs=1MiB
где:
В данном примере размер файла будет равен 16 Гигабайт.
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Или проверить, что она там уже есть.
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Чтобы найти раздел root выполняем команду:
df -h
находим на какой раздел примонтирован корневой каталог. Например:
max@max-dell:~$ df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
tmpfs 1,6G 1,8M 1,6G 1% /run
/dev/sda2 468G 33G 412G 8% /
tmpfs 7,8G 32M 7,8G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
/dev/sda1 511M 39M 473M 8% /boot/efi
tmpfs 1,6G 60K 1,6G 1% /run/user/1000
Видим, что корень примонтирован к разделу /dev/sda2
.
Находим UUID диска командой blkid
. Например:
max@max-dell:~$ blkid
/dev/sda2: UUID="9964c46d-d6d7-43c7-b9a9-5fb5844436aa" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="2ded6755-e0f2-4e2f-94b5-2273fc31f526"
Сохраняем в "блокноте" значение UUID.
Командой sudo filefrag -v /swapfile
находим физическое смещение swap файла на диске:
max@max-dell:~$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 17179869184 (4194304 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 4095: 1916928.. 1921023: 4096:
1: 4096.. 8191: 1925120.. 1929215: 4096: 1921024:
Нужно сохранить значение 1916928 - это физическое смешение файла.
sudo vim /etc/default/grub
В параметр GRUB_CMDLINE_LINUX_DEFAULT добавляем следующую строку: resume=UUID=xxx resume_offset=xxx
, где меняем соответствующие xxx
на ранее сохранённые UUID диска и физическое смещение.
Например:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=9964c46d-d6d7-43c7-b9a9-5fb5844436aa resume_offset=1916928"
Обновляем конфигурацию grub:
sudo update-grub
После этого должно гибернация должна заработать, если нет, смотри дальше...
Создаём или открываем файл /etc/initramfs-tools/conf.d/resume
:
sudo vim /etc/initramfs-tools/conf.d/resume
Вставляем в него такую же строчку:
RESUME=UUID=9964c46d-d6d7-43c7-b9a9-5fb5844436aa resume_offset=1916928
После сохранения файла пересоздадим initramfs:
sudo update-initramfs -c -k all
Открываем или создаём следующий файл:
sudo vim /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
После перезагрузки или перелогинивания должен появится пункт "Спящий режим".