PM: Образ гибернации отсутствует или не может быть загружен

PM: Образ гибернации отсутствует или не может быть загружен

После гибернации с помощью 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, вам необходимо:

  1. Найдите uuid вашего раздела подкачки. Предположим, что раздел — sdb3, тогда

    $ ls -l /dev/disk/by-uuid/ | grep sdb3
    lrwxrwxrwx 1 root root 10 окт.   9 08:59 1dd7e123-1f82-45f0-a202-0ff3ea6f081a -> ../../sdb3
    
  2. Откройте /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"
    
  3. Запуск от имени rootupdate-grub
  4. Для использования новой командной строки ядра необходима перезагрузка.

решение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 вызывал гибернацию, как и прежде, но при включении питания предыдущее состояние машины восстанавливалось правильно.

Связанный контент