После гибернации с помощью systemctl hibernate
система загружается нормально, как будто она была выключена. У меня есть параметр resume в строке ядра и хук resume в mkinitcpio.conf
Вот соответствующие сообщения ядра:
$ dmesg | grep -i swap
[ 0.000000] Command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[ 0.000000] Kernel command line: initrd=\initramfs-linux.img root=/dev/sda2 rw resume=/dev/sda4
[ 0.350295] PM: Checking hibernation image partition /dev/sda4
[ 8.776686] Adding 8191996k swap on /dev/sda4. Priority:-1 extents:1 across:8191996k FS
$ dmesg | grep -i hibern
[ 0.350295] PM: Checking hibernation image partition /dev/sda4
[ 0.350301] PM: Hibernation image not present or could not be loaded.
Итак, единственная оставшаяся возможность — это то, чтоsystemctl
не записал на диск. На самом деле, когда я запускаю команду, экран сначала гаснет на пару секунд, затем я снова вижу свой терминал, и, наконец, он выключается сам.
Я читал, что pm-utils не очень хорошо работают с systemd, поэтому я бы не хотел переходить на них. Есть предложения?
Спасибо!
решение1
Чтобы пояснить комментарий @AdrianRatnapala, вам необходимо:
Найдите uuid вашего раздела подкачки. Предположим, что раздел — sdb3, тогда
$ ls -l /dev/disk/by-uuid/ | grep sdb3 lrwxrwxrwx 1 root root 10 окт. 9 08:59 1dd7e123-1f82-45f0-a202-0ff3ea6f081a -> ../../sdb3
Откройте
/etc/default/grub
, и найдите строку, начинающуюся сGRUB_CMDLINE_LINUX_DEFAULT="
. Добавьте туда между кавычкамиresume=/dev/disk/by-uuid/your-swap-uuid
. Например:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/disk/by-uuid/1dd7e123-1f82-45f0-a202-0ff3ea6f081a"
- Запуск от имени root
update-grub
- Для использования новой командной строки ядра необходима перезагрузка.
решение2
Я хочу поделиться своим успехом здесь, потому что это может помочь другим с этой проблемой. Итог, для тех, кто хочет пропустить подробности: после изменения строки GRUB_CMDLINE_LINUX_DEFAULT в файле /etc/default/grub и выполнения update-grub, выполните полное выключение и перезапуск машины, прежде чем пробовать спящий режим.
Подробности: Я только что успешно реализовал спящий режим на установке Linux на моем Lenovo ThinkPad T480 (двойная загрузка Debian 9 и Windows), следуя приведенному выше совету по добавлению параметра resume=UUID= в строку GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub. Но с первого раза это не сработало. Я добавил параметр, запустил update-grub и попытался перейти в спящий режим (systemctl-hibernate). Система, казалось, перешла в спящий режим, но при повторном включении появлялось предыдущее изображение экрана и оставалось на нем несколько секунд, прежде чем машина перешла на экран входа в систему, который обычно отображается при первом запуске; вся работа, имевшаяся до перехода в спящий режим, исчезла. Я наконец заметил (grep 'command line' syslog), что измененная строка GRUB_CMDLINE_LINUX_DEFAULT НЕ была передана ядру. После дополнительных усилий я обнаружил, что полное выключение и перезапуск ПРИВОДИЛИ бы к передаче измененной строки (снова grep 'command line' syslog). После этого systemctl hibernate вызывал гибернацию, как и прежде, но при включении питания предыдущее состояние машины восстанавливалось правильно.