Имеется установленная openSUSE Tumbleweed с KDE, на разделах в качестве файловой системы используется ext4. Чтобы иметь возможность использовать гибернацию, необходимо иметь раздел подкачки или файл подкачки. Я предпочитаю использовать файл подкачки, потому что в любое время можно легко изменить его размер или вовсе его удалить, С разделом же придется повозится. Я буду использовать файл подкачки. В случае с btrfs следует использовать раздел подкачки.Итак, создаём файл подкачки. Чтобы он не мозолил глаза, я решил разместить его в каталоге []/var/lib/swap[]. Создаём каталог:
sudo mkdir -p /var/lib/swap
Закрываем к нему доступ всем, кроме root:
sudo chmod 700 /var/lib/swap
Чтобы выбрать оптимальный размер файла подкачки, я воспользовался [[https://help.ubuntu.com/community/SwapFaq#How_much_swap_do_I... таблицей]]. Для себя я выбрал размер 11 Гб (11534336 байт). Создаем файл, который будет использоваться как файл подкачки:
sudo dd if=/dev/zero of=/var/lib/swap/swapfile bs=1024 count=11534336
Закрываем к нему доступ всем, кроме root:
sudo chmod 600 /var/lib/swap/swapfile
Настраиваем файл подкачки:
sudo mkswap /var/lib/swap/swapfile
Активируем файл подкачки:
sudo swapon /var/lib/swap/swapfile
Уже после этих действий должен появится пункт перехода в режим гибернации, но сама режим пока что работать не будет. Чтобы файл подкачки автоматически монтировался во время загрузки, необходимо прописать его в []/etc/fstab[]. []Не забываем делать резервные копии системных файлов, которые планируем редактировать![]:
/var/lib/swap/swapfile none swap defaults 0 0
Далее нам нужно указать в grub, откуда система должна загружать данные после выхода из режима гибернации. Нам нужно узнать:
1. ID раздела, на котором находится файл подкачки
2. физическое смещение файла подкачки на этом разделе.
ID раздела мы можем найти в том же []/etc/fstab[]. У меня этот ID равен f68ed3c5-da10-4288-890f-b83d8763e85e:
cat /etc/fstab
UUID=4e73657c-f1d2-4f52-9909-1226a6fe6493 / ext4 defaults 0 1
Смещение находим с помощью команды []filefrag[]. Значением смещения является левое верхнее число столбца physical_offset в двумя горизонтальными точками (..) в конце. У меня это значение равно 337920:
sudo filefrag -v /var/lib/swap/swapfile
File size of /var/lib/swap/swapfile is 11811160064 (2883584 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 14335: 337920.. 352255: 14336:
1: 14336.. 20479: 378880.. 385023: 6144: 352256:
2: 20480.. 22527: 387072.. 389119: 2048: 385024:
...
Записываем полученные данные в файл []/etc/default/grub[]. Находим параметр GRUB_CMDLINE_LINUX_DEFAULT и добавляем к нему запись вида []resume=UUID=<UUID> resume_offset=<offset>[]. У меня это выглядит так:
GRUB_CMDLINE_LINUX_DEFAULT="splash=silent mitigations=auto quiet resume=UUID=4e73657c-f1d2-4f52-9909-1226a6fe6493 resume_offset=337920"
Далее необходимо обновить файл конфигурации grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
или для EFI:
sudo grub2-mkconfig -o /boot/efi/EFI/opensuse/grub.cfg
И последнее, что нам нужно сделать - пересобрать initramfs с поддержкой модуля resume. Для этого создаём файл []/etc/dracut.conf.d/99-resume.conf[] с таким содержимым:
add_dracutmodules+=resume
И, собственно, пересобираем initramfs:
sudo dracut -fv
Перезагружаемся и проверяем работу режима гибернации.
URL:
Обсуждается: http://www.opennet.me/tips/info/3178.shtml