I was able to hibernate using s2disk or pm-hibernate, but resume was failing. To fix this, as my system is booted up using UEFI instead of grub. I just had to reinstall the boot loader. To check if you are running UEFI use the following:
[ -d /sys/firmware/efi ] && echo "Installed in UEFI mode" || echo "Installed in Legacy mode"
if in UEFI mode, then I followed this guide to reinstall the bootloader, it varies if you are using an nvme disk or sata disk:
https://support.system76.com/articles/bootloader/
The key is to run this command:
sudo update-initramfs -c -k all
make sure that in your kernalboot options you specify the partition or UUID of where to resume from, eg something like this:
resume=UUID=ed8347ed-2eb4-40bc-bc77-cc53b987ed88
You can add this by either:
- sudo kernel-stub -a "resume=UUID=..."
- edit the /etc/initramfs-tools/conf.d/resume file and add:
resume=UUID=ed8347ed-2eb4-40bc-bc77-cc53b987ed88
check your /var/log/syslog
file for something like this:
Aug 4 22:26:42 pop-os /usr/bin/kernelstub[19639]: kernelstub : DEBUG kopts: root=UUID=b37019a8-91f5-445f-94c1-7359a49ed5df ro quiet loglevel=0 systemd
.show_status=false resume=UUID=ed8347ed-2eb4-40bc-bc77-cc53b987ed88
If the resume is missing or wrong then you'll need to update your boot kernal again.