Since the solution I found for this is not trivial, I wanted to post it here for the record.
I read the man page for pm-hibernate
, and in the section on the HIBERNATE_MODE
configuration option, I saw a mention of the /sys/power/disk
file. I remembered that a few years ago I used to debug suspend and hibernate by writing to /sys/power/state
. The possible values can be seen by reading the file.
I tested kernel-level hibernation with sudo sh -c 'echo disk > /sys/power/state'
. The system suspended and resumed correctly.
So the problem was that pm-hibernate
was doing something wrong.
I tried setting the SLEEP_MODULE
option by creating a file /etc/pm/config.d/sleep_module
with the content:
SLEEP_MODULE=tuxonice
And that fixed resuming after pm-hibernate
.
Then, I needed to create a file /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
as explained here.
And I had a fully working hibernate feature for my ThinkPad X60.
There is probably a bug to be filed in Launchpad about this, but I do not know what it would be.
I have had some stability issues with hibernate since applying this fix. So far, it has failed to resume once, and it failed to hibernate once. So be careful. Another sleep module might be more reliable, but I cannot test that until I can reproduce the problems.