Linux – PM: Hibernation image not present or could not be loaded

hibernatelinuxsystemd

After hibernating with systemctl hibernate, the system boots normally as if it had been shutdown.
I have the resume parameter in the kernel line and the resume hook in mkinitcpio.conf

These are the relevant kernel messages:

$ 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.

So the only remaining possibility is that systemctl didn't write to disk. In fact, when I run the command, the screen first goes blank for a couple of seconds, then I can see my terminal again, and finally it shutdowns itself.

I read that pm-utils do not work very well with systemd, so I wouldn't want to switch to those. Any suggestions?

Thanks!

Best Answer

  • To elaborate @AdrianRatnapala's comment, you have to:

    1. Find uuid of your swap partition. Suppose the partition is sdb3, then

      $ ls -l /dev/disk/by-uuid/ | grep sdb3
      lrwxrwxrwx 1 root root 10 окт.   9 08:59 1dd7e123-1f82-45f0-a202-0ff3ea6f081a -> ../../sdb3
      
    2. Open /etc/default/grub, and find the line starting with GRUB_CMDLINE_LINUX_DEFAULT=". Add there between the quotes resume=/dev/disk/by-uuid/your-swap-uuid. As an example:

      GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/disk/by-uuid/1dd7e123-1f82-45f0-a202-0ff3ea6f081a"
      
    3. Run as a root update-grub
    4. A reboot is needed to use the new kernel command-line.
  • Related Question