Cannot resume after hibernate

I had the same issues. There is a bug in the most recent kernel in 16.04. Here are the explicit steps I have done. Do the first one and, if it solves the problem for you, stop there. If not, go on.

1. Set the computer to boot with the previous kernel

Start with:

uname -r

Mine says 4.13... Then do:

grep -i "menuentry '" /boot/grub/grub.cfg

You will see the different menu entries in grub. In my case, together with "Ubuntu, with Linux 4.13..." there was a menu option to boot with the previous kernel. It said Ubuntu, with Linux 4.10.0-28-generic. In the same line you have something like 'gnulinux-4.10.0-28-generic-advanced...(a bunch of caracters here)' Copy that text, and then we have to tell grub2 to boot with that kernel by default:

sudo cp /etc/default/grub /etc/default/grub.back

sudo gedit /etc/default/grub

Then I inserted this line:

GRUB_DEFAULT="gnulinux-advanced-4a50e1e8-56d9-413e-9954-55648888a31d>gnulinux-4.10.0-28-generic-advanced-4a50e1e8-56d9-413e-9954-55648888a31d"

Please do not copy this line literally, but use the output of the previous grep command as said. Then save and,

sudo update-grub

Then re-boot and check that the output of "uname -r" is the older kernel (4.10... in my case). You may be able to hibernate now, or not. If not, proceed to the next step.

2. Install different stuff to hibernate than the default one:

In my case, using the older kernel got rid of the black screen of death and allowed me to resume after hibernation, but the contents of the disk image were going wiped out, i.e. it was identical to a reboot, not hibernation. So I installed some shit that hibernates differently:

sudo apt-get install uswsusp

Then close the terminal, open it again and type:

sudo s2disk

This is supposed to hibernate the computer. If, after resuming, everything is as you left it, then you have solved the issue. But you still need to proceed to step 4 in order to tell Ubuntu that you want to use the new stuff by default and also that you want to have options to hibernate in the applications.

3. Tell grub 2 where the swap partition is:

It still didn't worked for me, so I had to tell grub where the swap partition is:

cat /etc/fstab

I could read there "# swap was on /dev/sda2 during installation", so I edited grub again:

sudo gedit /etc/default/grub

And added:

GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable resume=/dev/sda2"

The important part is "resume=/dev/sda2" but the previous thing (intel blablabla) is there because of other reasons. Well, the next step is:

sudo update-grub

Re-boot and try again to hibernate with some stuff going on (e.g. open a movie with vlc) with:

sudo s2disk

If the stuff is still there after you resume, you have solved the issue.

4. Telling Ubuntu to use the new hibernation stuff you have installed instead of the default:

You have now to tell Ubuntu to use s2disk to hibernate instead of the stuff that comes by default:

sudo gedit /etc/pm/config.d/00sleep_module

And insert there:

SLEEP_MODULE="uswsusp"

Save and close the file. Then:

sudo gedit /etc/polkit-1/localauthority/50-local.d/enable-hibernate.pkla

And insert there:

[Re-enable hibernate by default in upower]

Identity=unix-user:*

Action=org.freedesktop.upower.hibernate

ResultActive=yes

[Re-enable hibernate by default in logind]

Identity=unix-user:*

Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit

ResultActive=yes

Reboot and try again.

5. If after running Step 4, you can't hibernate using sudo systemctl hibernate then do the following

Step 4 is not enough to make the switch to uswsusp in Ubuntu 18.10.

Edit the hibernation service

sudo systemctl edit systemd-hibernate.service

And add the following

[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /usr/lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /usr/lib/systemd/system-sleep

Update systemd

sudo systemctl daemon-reload

Test the setup by running the following

sudo systemctl hibernate


@karim I had the same problem here is how fixed it:

Use the swap partition's UUID instead of it's mounting point in the RESUME parameter resume=UUID=# in both /etc/default/grub and /etc/initramfs-tools/conf.d/resume

Create an entry for the swap partition in /etc/fstab without a mounting point something like this

# Entry for Swap : 
UUID=# none  swap    sw              0       0

In /etc/default/grub I've used a separate entry for resuming hibernation

# FOR HIBERNATION 
GRUB_CMDLINE_LINUX="resume=UUID=..."

Create a policykit in local authority (pkla) as explained by @Mephisto

Update initramfs and GRUB

sudo update-initramfs -u -k all
sudo update-grub

Reboot , open some apps and use systemctl hibernate (without sudo) to see if it works


I was also having this problem plague me ... and a fix after many attempts was to re-install Ubuntu 18.04, and now it is working perfectly. I am also using Nvidia's "tested" Driver, as Nvidia was the culprit before.

Perhaps it was the sudo add-apt-repository ppa:graphics-drivers ppa which installed "Extra" Stuff and/or the 396 driver which screwed up my laptop's hibernating ability. Either way it works flawlessly at this time of writing with the NVidia's 390 tested driver. Before switching to the Nouveau driver worked.