How to workaround (fix) hibernate “PM: Cannot find swap device, try swapon -a” GNOME issues on Debian testing/unstable Linux

Sunday, 28th November 2010

I can’t remember precisely but after one of the updates I did through apt-get update && apt-get upgrade or through aptitude update && aptitude upgrade. My Gnome hibernate function has suddenly stopped working on my Thinkpad R61 notebook.
The exact kernel I currently run on my linux desktop is:

Linux noah 2.6.32-5-amd64 #1 SMP Sat Oct 30 14:18:21 UTC 2010 x86_64 GNU/Linux

My Debian linux version is:

hipo@noah:~/Desktop/blog-topics$ cat /etc/issue
Debian GNU/Linux squeeze/sid n l

This hibernation issue is pretty annoying since I’m so used to the hibernate that I practically use it instead of shutdown all the time.
I’m used to shutdown or restart my pc every couple of days or whenever the machine freezes up completely and a hard restart is necessary.
Therefore the hibernate is a crucial function for me to use on daily basis
That is the case especially when I use my computer at school, whether I had to move from a place to place and start and stop my thinkpad notebook quite regularly.

After one of the last updates as I said, whenever I tried to hibernate my computer it didn’t worked out.
Everytime I pressed the fn + f12 to get the pc to hibernation I was unpleasently surprised by the message:

PM: Cannot find swap device, try swapon -a.

It took me a while until I found something that relates to the problem, but eventually I found out on the ubuntuforums some discussions about guys who has experienced the same shitty hibernation issue as me.
The exact forum thread which helped me can be red here

As it was described in the thread one probable reason for the issue was in the /etc/initramfs-tools/conf.d/resume file.

The solution from the forum suggested that the /etc/initramfs-tools/conf.d/resume file contains a wrong UUID identifier for the swap partition in fstab.

On a purpose some time ago during the updates of my Debian unstable distro I did removed completely the UUID identifier and prefered to use the good old and more readable way of directly placing the /dev/sda / /dev/hda etc. partitions.
That is why my /etc/fstab’s UUID prefixes to my partitions were completely commented in my /etc/fstab

Anyways as I suspected something could be wrong with the /etc/initramfs-toold/conf.d/resume after I checking the file I realized that some of the updates has messed it up wrongly including an RESUME= file value to be equal to

#RESUME='UUID=8e0901b1-d569-45b2-902d-e159b104e330'

As I haven’t used the UUID at all it should have contained:

RESUME=/dev/sda7 anf in my case it should have been sda7 because sda7 is my swap partition, however on other machines this could vary.

Changing this and testing my machine hibernation in GNOME produced the same error;

The ubuntu forum thread helped me to understand that actually using the hibernate in Gnome does execute the /usr/sbin/pm-hibernate shell script.

Furthermore I tried modifying this script to fix the shitty PM: Cannot find swap device, try swapon -a. but with zero success in …

As I already knew my /usr/sbin/hibernate shell script when invoked from my text console was properly hibernating my notebook and instead of simply using the menu;

System -> Shut Down -> Hibernate

Or via simply pressing the Fn + F12 hibernate shortcut I had everytime to switch to text console and from there, after logging in with the root account to issue the command;

noah:~# /usr/sbin/hibernate

This kind of complicating to this simple task of hibernation was quite un-user friendly. After some more desperate attempts to modify and fix up the pm-hibernate in order to make the script to detect my already mounted swap partition I finally gave it up with the script.

Another thing that I thought might be necessary to get rid of the message after edidting the /etc/init-ramfs-tools/resume script and setting the RESUME variable inside it to the proper one was:

noah:~# /usr/sbin/update-initramfs

This worked neither, so I was quite angry but still hoping that somehow I’ll be able to come up with some kind of work around to the hibernate issue.

Alas thanks God after a bit of thinking over the problem I was able to come with a very simple workaround I thought; “Well if the pm-hibernate is novoked via hibernate in Gnome and it’s not working but the /usr/sbin/hibernate is working, then I’ll just make the pm-hibernate to execute the /usr/sbin/hibernate instead of the /usr/sbin/pm-hibernate.

Guess what it worked like a charm 🙂

All I had to do to get rid of the very annoying error:

PM: Cannot find swap device, try swapon -a.

came up to issuing the following two simple lines in my gnome-terminal;

debian:~# mv /usr/sbin/pm-hibernate /usr/sbin/pm-hibernate.old
debian:~# ln -sf /usr/sbin/hibernate /usr/sbin/pm-hibernate

I know this kind of workaround to the hibernation Debian issue could be just temporary and probably after the next update of my hibernate Debian testing/unstable package it will stop working again, however it works at least for now .

Now my GNOME hibernate functions works again on my Debian powered Thinkpad and I’m happily hibernating it all the time again.
I hope this post will help up to somebody experiencing the same issues on his Debian, Ubuntu or any other Debian based distribution!

Share this on:

Download PDFDownload PDF

Tags: ,

Leave a Reply

CommentLuv badge