Anyone have a good working hibernate set-up in Linux?

kelvie@lemmy.ca to Linux@lemmy.ml – 33 points –

My set-up is roughly analogous to this: https://community.frame.work/t/guide-fedora-36-hibernation-with-enabled-secure-boot-and-full-disk-encryption-fde-decrypting-over-tpm2/25474

Summary is that I use full-disk encryption (FDE) and use the TPM to decrypt the swap, and use full lockdown mode with a kernel patched to allow hibernation.

Suspend-then-hibernate (in my opinion) is a must-have feature for a laptop that goes in a backpack -- if I close my laptop's lid and put it in my backpack, I expect it to both not overheat, and to have some amount of battery left regardless of when I decide to take it out again.

Anyway, does anyone have it working well, or any other tips?

One thing I've been toying with is using a systemd script to drop the filesystem caches before hibernating to have it resume faster.

5

Suspend-then-hibernate

That's something over which I used to be very jealous of Windows laptops šŸ˜• But that was years ago...now my aging 3.2kg ThinkPad is just a "stationery" workstation!

I am not sure if we are discussing hibernation for encrypted systems only, and I do not know what special provisions are needed for that, but for anyone curious, here is what I do on my own machine (not encrypted) per my own notes for setting up Arch, with a swap file rather than a swap partition, and rEFInd as the boot manager (the same kernel params could probably be used in Grub too, though):

  • create a file at sudo nano /etc/tmpfiles.d/hibernation_image_size.conf (copy paste the template from https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate)
  • if you made your swap file large enough (~1.2x ram size or greater), set the argument value to your amount of ram, e.g. 32GB= 34359738368
  • after a reboot, you can verify this with cat /sys/power/image_size
  • findmnt -no UUID -T /swapfile to get swapfile UUID
  • filefrag -v /swapfile | awk '$1=="0:" {print substr($4, 1, length($4)-2)}' to get offset
  • Go into your kernel parameters and add resume=UUID=### resume_offset=###
  • e.g. in /boot/refind_linux.conf (with efi partition unmounted)
  • go into /etc/mkinitcpio.conf and add ā€œresumeā€ after the ā€œfilesystemā€ and before the ā€œfsckā€ hooks
  • run mkinitcpio -p linux-zen (or equivalent linux type)---

My issue is that, its working. But at times when I need it, it somehow manages to hang during shutdown

I set it up, but it took significantly longer to wake up than Windows so it was not worth it. I now shut down and boot back up since it's faster

I am currently back to running EndeavourOS after PopOS had severe issue running.

Hibernate/sleep out of the box seems to function just fine on my desktop. Iā€™m running a Ryzen 3600, Nvidia RTX 2060, 32GB ddr4 21xx.

It is setup to lock itself after about ten minutes. Then if no activity for an hour will go into sleep/hibernate. Mouse will not wake it but keyboard works fine and Iā€™m back to login within 10s or so.