Joined: 18 Mar 2015
|Posted: Thu Mar 19, 2015 12:14 am Post subject: Resume from hibernate fails (systemd, efistub boot)
I searched through the forums and asked on IRC, but did not find a solution to my problem, so I am posting here.
I am trying to set up hibernation on my desktop machine, and it fails to resume. I am using systemd and booting with UEFI (booting with refind boot manager which loads the kernel and boots with kernel's efistub feature).
The problem is that when I try to hibernate, it hibernates successfully, but when I try to power on the machine and resume, it does not resume from hibernation but instead boots normally and I am presented with a getty / login prompt as if I hadn't hibernated.
Here is how I set up my hibernation:
I created a swap partition (/dev/sdb1) which is 32GiB in size (I have 32GB ram). I added the swap partition to /etc/fstab by UUID, so it mounts on boot, and that works.
/proc/swaps confirms swap is active:
root@TAJJADAGROLY / # cat /proc/swaps
Filename Type Size Used Priority
/dev/sdb1 partition 33554428 0 -1
free also confirms that I have swap:
root@TAJJADAGROLY / # free
total used free shared buff/cache available
Mem: 32842768 792272 31309480 71056 741016 31753196
Swap: 33554428 0 33554428
I added resume=/dev/sdb1 to the kernel commandline. Here is my current commandline from /proc/cmdline:
root@TAJJADAGROLY / # cat /proc/cmdline
\vmlinuz-3.19.1-gentoo rw resume=/dev/sdb1 root=/dev/sda4 rootflags=subvol=Systems/MainGentoo init=/usr/lib/systemd/systemd
(My root partition is /dev/sda4, with btrfs filesystem, and gentoo is on a subvolume called Systems/MainGentoo)
I do not have an initramfs/initrd image. I am booting directly. AHCI SATA and btrfs filesystem are builtin for my kernel config. Given that my kernel boots fine, I know it has the needed drivers to detect and read my SATA disks.
Hibernation is enabled in my kernel configuration under Power management and ACPI options.
My kernel is the regular gentoo-sources, without any extra patches applied by me, version 3.19.1.
Regular suspend-to-ram works correctly and resumes correctly, no problem with that one.
I am using systemd to hibernate, with this command:
When I run the above hibernate command from tty with no Xorg running, I see lots of printks on the screen showing progress through the hibernation process, which seems to go successfully, after which my system powers off as it should. However, when I power it back on and try to boot, I simply get my usual boot process. It does not attempt to resume from hibernation at all. It does not seem to recognize that I have set a resume partition containing the hibernation image. This is what puzzles me, as I have added the resume=/dev/sdb1 parameter to my kernel cmdline.
What am I doing wrong and why isn't my kernel resuming from the hibernated image? Could I be missing some sort of kernel configuration?
PS: I have set up hibernation in gentoo before, on my laptop, and it worked there. I have exactly the same boot configuration (refind EFISTUB boot) but only one ssd with both of the root and swap partitions on it. To set up hibernation on my desktop, I tried following exactly the same steps that I did to set it up on my laptop. For some reason, it does not work here, as described above. I am puzzled.
I read other forum threads about hibernation and googled for the issue, but all of what I found mentioned things which I had either already done/tried, or not relevant to my system.[/code]