Ubuntu 18.04 can't resume after hibernateHow to enable hibernation?How do I increase the size of swapfile without removing it in the terminal?How to activate hibernation in 16.04.1 ? (systemd)Hibernate and resume from a swap fileHibernation in 18.04Howto Enable Hibernate on Ubuntu 18.04Hibernate in Ubuntu 18.04Libreoffice preventing the computer from resuming from suspend Kubuntu 18.04How to Hibernate in Ubuntu 18.04Resuming Hibernate from a SwapfileI have enabled hibernate but it isn't working. What can I do?Strange behavior for hibernate on ubuntu 12.10Resume from hibernation (pm-hibernate) randomly rebootsCannot resume after hibernateHow to debug hibernate-wakeup problem in 17.10?Hibernate on Ubuntu (18.04) - s2disk working, but KDE buttons nothibernate does not work on cloned systemResume after Hibernate with Ubuntu 18.04 with HP ProbookUbuntu 18.04 / Mint 19.1: Resume from hibernate not working. How to troubleshoot?
Has a sovereign Communist government ever run, and conceded loss, on a fair election?
Where is the License file location for Identity Server in Sitecore 9.1?
How can I portion out frozen cookie dough?
Use Mercury as quenching liquid for swords?
What does *dead* mean in *What do you mean, dead?*?
What would be the most expensive material to an intergalactic society?
How to write a chaotic neutral protagonist and prevent my readers from thinking they are evil?
Issue with units for a rocket nozzle throat area problem
What do you call someone who likes to pick fights?
PTIJ: Sport in the Torah
Help! My Character is too much for her story!
Is "cogitate" used appropriately in "I cogitate that success relies on hard work"?
Professor forcing me to attend a conference, I can't afford even with 50% funding
Are small insurances worth it?
A vote on the Brexit backstop
Create chunks from an array
Can I challenge the interviewer to give me a proper technical feedback?
Tabular environment - text vertically positions itself by bottom of tikz picture in adjacent cell
Exempt portion of equation line from aligning?
Precision notation for voltmeters
Should I file my taxes? No income, unemployed, but paid 2k in student loan interest
Propulsion Systems
Inorganic chemistry handbook with reaction lists
What is the orbit and expected lifetime of Crew Dragon trunk?
Ubuntu 18.04 can't resume after hibernate
How to enable hibernation?How do I increase the size of swapfile without removing it in the terminal?How to activate hibernation in 16.04.1 ? (systemd)Hibernate and resume from a swap fileHibernation in 18.04Howto Enable Hibernate on Ubuntu 18.04Hibernate in Ubuntu 18.04Libreoffice preventing the computer from resuming from suspend Kubuntu 18.04How to Hibernate in Ubuntu 18.04Resuming Hibernate from a SwapfileI have enabled hibernate but it isn't working. What can I do?Strange behavior for hibernate on ubuntu 12.10Resume from hibernation (pm-hibernate) randomly rebootsCannot resume after hibernateHow to debug hibernate-wakeup problem in 17.10?Hibernate on Ubuntu (18.04) - s2disk working, but KDE buttons nothibernate does not work on cloned systemResume after Hibernate with Ubuntu 18.04 with HP ProbookUbuntu 18.04 / Mint 19.1: Resume from hibernate not working. How to troubleshoot?
Hibernate worked correctly when I had been using Ubuntu 17.04. After upgrade to 17.10 I couldn't resume because of black screen after resume (this bug).
After upgrade to 18.04 if I try to start my computer after hibernation it boots as if there was no hibernation done.
18.04 hibernate
add a comment |
Hibernate worked correctly when I had been using Ubuntu 17.04. After upgrade to 17.10 I couldn't resume because of black screen after resume (this bug).
After upgrade to 18.04 if I try to start my computer after hibernation it boots as if there was no hibernation done.
18.04 hibernate
I have the same problem with 18.04, I thik the solution must be in specifying right partition for resume but still couldn't find the way to do this. All I found I Google didn't work for me.
– user2819650
May 12 '18 at 7:00
The partition is set correctly in /etc/initramfs-tools/conf.d/resume to my swap. I suspect that either hibernation isn't done correctly or resume during boot doesn't work. But I don't know how to debug it further. Syslog and dmesg don't give any clues what is the problem.
– Kamil
May 13 '18 at 17:28
add a comment |
Hibernate worked correctly when I had been using Ubuntu 17.04. After upgrade to 17.10 I couldn't resume because of black screen after resume (this bug).
After upgrade to 18.04 if I try to start my computer after hibernation it boots as if there was no hibernation done.
18.04 hibernate
Hibernate worked correctly when I had been using Ubuntu 17.04. After upgrade to 17.10 I couldn't resume because of black screen after resume (this bug).
After upgrade to 18.04 if I try to start my computer after hibernation it boots as if there was no hibernation done.
18.04 hibernate
18.04 hibernate
edited 10 hours ago
Pablo Bianchi
2,89521535
2,89521535
asked May 9 '18 at 18:56
KamilKamil
4061312
4061312
I have the same problem with 18.04, I thik the solution must be in specifying right partition for resume but still couldn't find the way to do this. All I found I Google didn't work for me.
– user2819650
May 12 '18 at 7:00
The partition is set correctly in /etc/initramfs-tools/conf.d/resume to my swap. I suspect that either hibernation isn't done correctly or resume during boot doesn't work. But I don't know how to debug it further. Syslog and dmesg don't give any clues what is the problem.
– Kamil
May 13 '18 at 17:28
add a comment |
I have the same problem with 18.04, I thik the solution must be in specifying right partition for resume but still couldn't find the way to do this. All I found I Google didn't work for me.
– user2819650
May 12 '18 at 7:00
The partition is set correctly in /etc/initramfs-tools/conf.d/resume to my swap. I suspect that either hibernation isn't done correctly or resume during boot doesn't work. But I don't know how to debug it further. Syslog and dmesg don't give any clues what is the problem.
– Kamil
May 13 '18 at 17:28
I have the same problem with 18.04, I thik the solution must be in specifying right partition for resume but still couldn't find the way to do this. All I found I Google didn't work for me.
– user2819650
May 12 '18 at 7:00
I have the same problem with 18.04, I thik the solution must be in specifying right partition for resume but still couldn't find the way to do this. All I found I Google didn't work for me.
– user2819650
May 12 '18 at 7:00
The partition is set correctly in /etc/initramfs-tools/conf.d/resume to my swap. I suspect that either hibernation isn't done correctly or resume during boot doesn't work. But I don't know how to debug it further. Syslog and dmesg don't give any clues what is the problem.
– Kamil
May 13 '18 at 17:28
The partition is set correctly in /etc/initramfs-tools/conf.d/resume to my swap. I suspect that either hibernation isn't done correctly or resume during boot doesn't work. But I don't know how to debug it further. Syslog and dmesg don't give any clues what is the problem.
– Kamil
May 13 '18 at 17:28
add a comment |
3 Answers
3
active
oldest
votes
There are changes done to default settings when compared to previous LTS (16.04). In my case hibernation didn't work until I've did several steps, among them increased the size of swap file, turned it on, made sure policies allowed it, etc.
This may easily be my lengthiest answer on entire StackExchange so I tried to make headers descriptive.
Boots as there was no hibernation
Would be prudent to take a look at your logs (dmesg
might help) and see if anything's there. There are reasons when despite you telling the system to hibernate, it actually won't, or it will suspend-to-RAM instead (sleep).
Taking a look at kern.log
and syslog
looking for any hibernate-related messages wouldn't hurt as well. Sections starting with "problem" may help you with specific issues.
Swap file or swap partition
One of crucial changes is that now you DO NOT HAVE a swap partition, but you have a swap FILE.
Swap file may not work for your blend of hardware/drivers/OS and hibernation.
Hibernation turned off
Policies may also turn off or disallow hibernation.
Jargon
Suspend to RAM - RAM keeps the data, computer goes to sleep faster, uses more energy when suspended, wakes up faster. Some call this sleep.
Suspend to disk - aka hibernation. RAM is saved to swap (partition or file), computer goes to sleep slower, uses less energy while hibernating, wakes up slower.
Prerequisites - do you have enough space?
To hibernate, you need to (simplification here) save your entire RAM to your hard drive. So, you need to set aside enough space to do so. If you don't, this will fail and you won't hibernate.
free -m
will tell you how much memory you have, use and how much is in your swap.df -h
will tell you how much disk space you have on each mount point and how much is used, free, etc. This is important since you may want to later specify where your swap file will be located, or which partition to "trim" to have enough space for your swap.cat fstab
should give you information if you have a swap partition or file. According to Ubuntu Hibernation FAQswapfile
may not always work with some combinations of hardware/drivers.
If you don't have enough space, follow Ubuntu swap FAQ. It tells you how to increase swap file, add another, check if it's used etc. With commands and explanations. Really nice resource.
I don't have enough space to fit my RAM!
Kernel docs say:
/sys/power/image_size controls the size of the image created by the
suspend-to-disk mechanism. It can be written a string representing a
non-negative integer that will be used as an upper limit of the image
size, in bytes. The suspend-to-disk mechanism will do its best to
ensure the image size will not exceed that number. However, if this
turns out to be impossible, it will try to suspend anyway using the
smallest image possible. In particular, if "0" is written to this
file, the suspend image will be as small as possible. Reading from
this file will display the current image size limit, which is set to
2/5 of available RAM by default.
So, try tweaking your image size. How - ask another question please.
Prerequisites - does your kernel support suspend-to-disk?
Kernel supports whatever is listed in /sys/power/state
, so:
cat /sys/power/state
Allowed (to my knowledge) entries there include: mem
, standby
, freeze
, disk
. Explanation:
mem
- has several meanings, which one exactly on your system you'll find out viacat /sys/power/mem_sleep
. I have:s2idle [deep]
standby
- Power-On Suspend (if supported)freeze
- Suspend To Idle (STI)disk
- Suspend To Disk (STD), hibernation. This - you want.
Then we need to check cat /sys/power/disk
. If you have there disabled
then dive in your BIOS looking for Secure Boot - that's the only idea I can offer and only thing I know may interfere and turn off hibernation. While I know only of SecureBoot, there may be other interferences, so taking a look at your BIOS is a good idea even if you don't have there any "secure boot".
Reading here:
- Kernel docs
- Debian Wiki on hibernation
TBH, even if your kernel does NOT support hibernation, you can try it in another way, scroll down to section Interfaces
.
Read this - warnings and problems - no BTRFS
In no particular order:
- Not all chipsets will work (don't have sources that I can cite here so let's say this is hearsay)
- VAIO has problems, supposedly there's a flag to counter them
- SecureBoot is often cited as interfering or turning off hibernation
- Wake-on-LAN consumes power even with hibernation
- Number of modules (graphics especially) may be initialized BEFORE your system properly resumes from hibernation - this is usually the cause for black screen when resuming. Look at ArchLinux Wiki for tips on how to debug issues. I'd also suggest Ubuntu FAQ on hibernate issues. Browsing through Launchpad bugs may also yield results. IIRC, there's a kernel parameter specifying in seconds a delay before resume.
- Allowing hibernation procedure differs for different Polkit versions
Don't use BTRFS and hibernate: corrupted data will be the result.
I want to hibernate - swap partition
There are cases, when people forego swap file and go back to swap partition. After all, it worked on previous LTS. I did not try, so won't offer pointers.
I want to hibernate - with swap file
- Make sure you have enough space there. Ubuntu swap FAQ tells you how much you need, commands from above do so as well. If you need more info here, ask another question please, as this is a lengthy topic.
- Increase the swap file or create a new one with good enough size (preferred, I agree with @muru) and change in the
/etc/fstab
to new one. Reboot to see change is taken well (store backup of thefstab
so you can easily revert just in case. - Point your kernel at this with appropriate params, so it know where to resume from.
- Update/reconfigure your boot loader and reboot.
Kernel parameters? Scary!
Carefully read and decide if you wish to do that, but it's just a way to configure your kernel.
It may be easier to hibernate via systemd
and uswsusp
(see Interfaces, below). It may be, that you - like me - will ultimately decide suspend-to-RAM is enough and you don't want to have 32GB on a swap file (not so great for folks with one SSD in their laptops, for instance). But!
- hibernate to swap file requires
resume=
to know which partition your swap file is on andresume_offset=
to know where in swap file to start resuming from. - hibernate to partition requires
resume=
to point to swap partition. - resolving black screen issues may well require
resumedelay=
.
Kernel docs on delaying resuming from Hibernation:
resumedelay= [HIBERNATION] Delay (in seconds) to pause before
attempting to read the resume files
Required parameters for swap-file and hibernation:
resume= [SWSUSP]
Specify the partition device for software suspend
Format:
<int>:<int>
resume_offset= [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
For the resume=
choose the same style as root
element has in fstab
. So, either /dev/sdaX
or UUID
or LVM. For hibernating to file - provide partition where your file can be found.
Reading:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problem - swap header not found
Swap file needs to be formatted properly. If your logs tell you this, you either are trying to hibernate to a file, or your resume parameter is not right.
Switch to partition or fix the file or change interface used for hibernation.
See: https://unix.stackexchange.com/questions/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
is used to format file, read more on it here
Problem! Hibernation not allowed!
Test: pm-hibernate
(if pm-utils package is installed) or systemctl hibernate
tell you you are not allowed. Default setting in Ubuntu since IIRC 12.04.
Solution(s): depends on your Polkit version, your Ubuntu version and flavour... See this question. Also, ArchWiki on Polkit may help.
For Mint, see: https://forums.linuxmint.com/viewtopic.php?t=259912
Problem! Hibernation disabled by something in BIOS!
Test: cat /sys/power/disk
has disabled
. Logs show "Failed to hibernate system via logind: Sleep verb not supported".
Solution: search your BIOS and find the problematic thing. Turn it off.
Solution 2: try another hibernate interface.
See: How to activate hibernation in 16.04.1 ? (systemd).
Interfaces
- swsusp - low level kernel interface. See Prerequisites - kernel for which files. Writing to files directly may cause suspend (to RAM, to disk and hybrid). According to SwapFAQ problematic with hibernating to file.
- uswsusp - ArchWiki and Debian Wiki and nice AskUbuntu question with a write-up how to use it.
- systemd - ArchWiki on it
- pm-utils - AFAIK that's a collection of scripts originally from Debian - I'll gladly welcome more info myself.
Closing remarks
For me it was a matter of almost two days of work to compile that. Hopefully this will help you (and others) solve your issue faster. There are still points I missed but it's 2 AM and I don't feel like writing more now. I'm of course open to anybody's pointers to make this better, so comment away. I'll reply once I sleep, work etc. :-)
I'm not certain hibernating to disk is that great. I went with sleeping in the end. But for me issue was with having a 32GB file just to be able to do hibernation, since I'm usually avoiding swapping at all. My initial swap-file was at 2GB and it was mostly empty. YMMV. Nevertheless, good luck! And start with the logs!
Great answer! But what eventually solved my case was the linked Swap FAQ and it telling me to add "resume=UUID" to a variable in my grub config file and/or sth similar with initramfs-tools. For some reason I had a wrong UUID there which probably was the issue. So I suggest for someone with a similar issue to first check out what's written in the Swap FAQ under "How do I add or modify a swap partition?", and the third point about hibernation there.
– RimaNari
Aug 23 '18 at 10:40
1
"disk - Suspend To Disk (STD), hibernation. This - you want." Am I the only one who got a kick out of this? Thanks much.
– spakmad
Jan 12 at 10:19
great answer! one small remark: on one of my machines resume after hibernate worked after a second boot attempt only (nothing was displayed on the monitor on the first attempt). i could fix that installing a HWE-stack:$ sudo apt install linux-generic-hwe-18.04
(for some hardware evenlinux-generic-hwe-18.04-edge
might be worth a shot).
– hiro protagonist
Jan 22 at 6:16
add a comment |
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)
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.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
[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes
After that 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
add a comment |
I hope this helps
For me it has always worked until 18.04 and after 18.04 I enabled it as is in many articles, but it suddenly stopped working just yesterday (working fine for 4-5 months),
and here is the ... ONE THING that got it working again ...
Tell grub 2 where the swap partition is:
First find out which partition it is on: using the below commandcat /etc/fstab
Mine is on sda7 as is the following output
swap was on /dev/sda7 during installation
Then, add in Grub 2 the following addition to the following line, using the following command:
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable resume=/dev/sda7"
The important part is "resume=/dev/sda7"
/dev/sda7 in my case
Then Update Grub with the following command, and after this it started working perfectly again
sudo update-grub
After many attempts this was the one thing worked, perhaps it was just because of an update to the kernel that screwed it up, never the less this worked ... I hope it helps
Cheers, Mark
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "89"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1034185%2fubuntu-18-04-cant-resume-after-hibernate%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
There are changes done to default settings when compared to previous LTS (16.04). In my case hibernation didn't work until I've did several steps, among them increased the size of swap file, turned it on, made sure policies allowed it, etc.
This may easily be my lengthiest answer on entire StackExchange so I tried to make headers descriptive.
Boots as there was no hibernation
Would be prudent to take a look at your logs (dmesg
might help) and see if anything's there. There are reasons when despite you telling the system to hibernate, it actually won't, or it will suspend-to-RAM instead (sleep).
Taking a look at kern.log
and syslog
looking for any hibernate-related messages wouldn't hurt as well. Sections starting with "problem" may help you with specific issues.
Swap file or swap partition
One of crucial changes is that now you DO NOT HAVE a swap partition, but you have a swap FILE.
Swap file may not work for your blend of hardware/drivers/OS and hibernation.
Hibernation turned off
Policies may also turn off or disallow hibernation.
Jargon
Suspend to RAM - RAM keeps the data, computer goes to sleep faster, uses more energy when suspended, wakes up faster. Some call this sleep.
Suspend to disk - aka hibernation. RAM is saved to swap (partition or file), computer goes to sleep slower, uses less energy while hibernating, wakes up slower.
Prerequisites - do you have enough space?
To hibernate, you need to (simplification here) save your entire RAM to your hard drive. So, you need to set aside enough space to do so. If you don't, this will fail and you won't hibernate.
free -m
will tell you how much memory you have, use and how much is in your swap.df -h
will tell you how much disk space you have on each mount point and how much is used, free, etc. This is important since you may want to later specify where your swap file will be located, or which partition to "trim" to have enough space for your swap.cat fstab
should give you information if you have a swap partition or file. According to Ubuntu Hibernation FAQswapfile
may not always work with some combinations of hardware/drivers.
If you don't have enough space, follow Ubuntu swap FAQ. It tells you how to increase swap file, add another, check if it's used etc. With commands and explanations. Really nice resource.
I don't have enough space to fit my RAM!
Kernel docs say:
/sys/power/image_size controls the size of the image created by the
suspend-to-disk mechanism. It can be written a string representing a
non-negative integer that will be used as an upper limit of the image
size, in bytes. The suspend-to-disk mechanism will do its best to
ensure the image size will not exceed that number. However, if this
turns out to be impossible, it will try to suspend anyway using the
smallest image possible. In particular, if "0" is written to this
file, the suspend image will be as small as possible. Reading from
this file will display the current image size limit, which is set to
2/5 of available RAM by default.
So, try tweaking your image size. How - ask another question please.
Prerequisites - does your kernel support suspend-to-disk?
Kernel supports whatever is listed in /sys/power/state
, so:
cat /sys/power/state
Allowed (to my knowledge) entries there include: mem
, standby
, freeze
, disk
. Explanation:
mem
- has several meanings, which one exactly on your system you'll find out viacat /sys/power/mem_sleep
. I have:s2idle [deep]
standby
- Power-On Suspend (if supported)freeze
- Suspend To Idle (STI)disk
- Suspend To Disk (STD), hibernation. This - you want.
Then we need to check cat /sys/power/disk
. If you have there disabled
then dive in your BIOS looking for Secure Boot - that's the only idea I can offer and only thing I know may interfere and turn off hibernation. While I know only of SecureBoot, there may be other interferences, so taking a look at your BIOS is a good idea even if you don't have there any "secure boot".
Reading here:
- Kernel docs
- Debian Wiki on hibernation
TBH, even if your kernel does NOT support hibernation, you can try it in another way, scroll down to section Interfaces
.
Read this - warnings and problems - no BTRFS
In no particular order:
- Not all chipsets will work (don't have sources that I can cite here so let's say this is hearsay)
- VAIO has problems, supposedly there's a flag to counter them
- SecureBoot is often cited as interfering or turning off hibernation
- Wake-on-LAN consumes power even with hibernation
- Number of modules (graphics especially) may be initialized BEFORE your system properly resumes from hibernation - this is usually the cause for black screen when resuming. Look at ArchLinux Wiki for tips on how to debug issues. I'd also suggest Ubuntu FAQ on hibernate issues. Browsing through Launchpad bugs may also yield results. IIRC, there's a kernel parameter specifying in seconds a delay before resume.
- Allowing hibernation procedure differs for different Polkit versions
Don't use BTRFS and hibernate: corrupted data will be the result.
I want to hibernate - swap partition
There are cases, when people forego swap file and go back to swap partition. After all, it worked on previous LTS. I did not try, so won't offer pointers.
I want to hibernate - with swap file
- Make sure you have enough space there. Ubuntu swap FAQ tells you how much you need, commands from above do so as well. If you need more info here, ask another question please, as this is a lengthy topic.
- Increase the swap file or create a new one with good enough size (preferred, I agree with @muru) and change in the
/etc/fstab
to new one. Reboot to see change is taken well (store backup of thefstab
so you can easily revert just in case. - Point your kernel at this with appropriate params, so it know where to resume from.
- Update/reconfigure your boot loader and reboot.
Kernel parameters? Scary!
Carefully read and decide if you wish to do that, but it's just a way to configure your kernel.
It may be easier to hibernate via systemd
and uswsusp
(see Interfaces, below). It may be, that you - like me - will ultimately decide suspend-to-RAM is enough and you don't want to have 32GB on a swap file (not so great for folks with one SSD in their laptops, for instance). But!
- hibernate to swap file requires
resume=
to know which partition your swap file is on andresume_offset=
to know where in swap file to start resuming from. - hibernate to partition requires
resume=
to point to swap partition. - resolving black screen issues may well require
resumedelay=
.
Kernel docs on delaying resuming from Hibernation:
resumedelay= [HIBERNATION] Delay (in seconds) to pause before
attempting to read the resume files
Required parameters for swap-file and hibernation:
resume= [SWSUSP]
Specify the partition device for software suspend
Format:
<int>:<int>
resume_offset= [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
For the resume=
choose the same style as root
element has in fstab
. So, either /dev/sdaX
or UUID
or LVM. For hibernating to file - provide partition where your file can be found.
Reading:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problem - swap header not found
Swap file needs to be formatted properly. If your logs tell you this, you either are trying to hibernate to a file, or your resume parameter is not right.
Switch to partition or fix the file or change interface used for hibernation.
See: https://unix.stackexchange.com/questions/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
is used to format file, read more on it here
Problem! Hibernation not allowed!
Test: pm-hibernate
(if pm-utils package is installed) or systemctl hibernate
tell you you are not allowed. Default setting in Ubuntu since IIRC 12.04.
Solution(s): depends on your Polkit version, your Ubuntu version and flavour... See this question. Also, ArchWiki on Polkit may help.
For Mint, see: https://forums.linuxmint.com/viewtopic.php?t=259912
Problem! Hibernation disabled by something in BIOS!
Test: cat /sys/power/disk
has disabled
. Logs show "Failed to hibernate system via logind: Sleep verb not supported".
Solution: search your BIOS and find the problematic thing. Turn it off.
Solution 2: try another hibernate interface.
See: How to activate hibernation in 16.04.1 ? (systemd).
Interfaces
- swsusp - low level kernel interface. See Prerequisites - kernel for which files. Writing to files directly may cause suspend (to RAM, to disk and hybrid). According to SwapFAQ problematic with hibernating to file.
- uswsusp - ArchWiki and Debian Wiki and nice AskUbuntu question with a write-up how to use it.
- systemd - ArchWiki on it
- pm-utils - AFAIK that's a collection of scripts originally from Debian - I'll gladly welcome more info myself.
Closing remarks
For me it was a matter of almost two days of work to compile that. Hopefully this will help you (and others) solve your issue faster. There are still points I missed but it's 2 AM and I don't feel like writing more now. I'm of course open to anybody's pointers to make this better, so comment away. I'll reply once I sleep, work etc. :-)
I'm not certain hibernating to disk is that great. I went with sleeping in the end. But for me issue was with having a 32GB file just to be able to do hibernation, since I'm usually avoiding swapping at all. My initial swap-file was at 2GB and it was mostly empty. YMMV. Nevertheless, good luck! And start with the logs!
Great answer! But what eventually solved my case was the linked Swap FAQ and it telling me to add "resume=UUID" to a variable in my grub config file and/or sth similar with initramfs-tools. For some reason I had a wrong UUID there which probably was the issue. So I suggest for someone with a similar issue to first check out what's written in the Swap FAQ under "How do I add or modify a swap partition?", and the third point about hibernation there.
– RimaNari
Aug 23 '18 at 10:40
1
"disk - Suspend To Disk (STD), hibernation. This - you want." Am I the only one who got a kick out of this? Thanks much.
– spakmad
Jan 12 at 10:19
great answer! one small remark: on one of my machines resume after hibernate worked after a second boot attempt only (nothing was displayed on the monitor on the first attempt). i could fix that installing a HWE-stack:$ sudo apt install linux-generic-hwe-18.04
(for some hardware evenlinux-generic-hwe-18.04-edge
might be worth a shot).
– hiro protagonist
Jan 22 at 6:16
add a comment |
There are changes done to default settings when compared to previous LTS (16.04). In my case hibernation didn't work until I've did several steps, among them increased the size of swap file, turned it on, made sure policies allowed it, etc.
This may easily be my lengthiest answer on entire StackExchange so I tried to make headers descriptive.
Boots as there was no hibernation
Would be prudent to take a look at your logs (dmesg
might help) and see if anything's there. There are reasons when despite you telling the system to hibernate, it actually won't, or it will suspend-to-RAM instead (sleep).
Taking a look at kern.log
and syslog
looking for any hibernate-related messages wouldn't hurt as well. Sections starting with "problem" may help you with specific issues.
Swap file or swap partition
One of crucial changes is that now you DO NOT HAVE a swap partition, but you have a swap FILE.
Swap file may not work for your blend of hardware/drivers/OS and hibernation.
Hibernation turned off
Policies may also turn off or disallow hibernation.
Jargon
Suspend to RAM - RAM keeps the data, computer goes to sleep faster, uses more energy when suspended, wakes up faster. Some call this sleep.
Suspend to disk - aka hibernation. RAM is saved to swap (partition or file), computer goes to sleep slower, uses less energy while hibernating, wakes up slower.
Prerequisites - do you have enough space?
To hibernate, you need to (simplification here) save your entire RAM to your hard drive. So, you need to set aside enough space to do so. If you don't, this will fail and you won't hibernate.
free -m
will tell you how much memory you have, use and how much is in your swap.df -h
will tell you how much disk space you have on each mount point and how much is used, free, etc. This is important since you may want to later specify where your swap file will be located, or which partition to "trim" to have enough space for your swap.cat fstab
should give you information if you have a swap partition or file. According to Ubuntu Hibernation FAQswapfile
may not always work with some combinations of hardware/drivers.
If you don't have enough space, follow Ubuntu swap FAQ. It tells you how to increase swap file, add another, check if it's used etc. With commands and explanations. Really nice resource.
I don't have enough space to fit my RAM!
Kernel docs say:
/sys/power/image_size controls the size of the image created by the
suspend-to-disk mechanism. It can be written a string representing a
non-negative integer that will be used as an upper limit of the image
size, in bytes. The suspend-to-disk mechanism will do its best to
ensure the image size will not exceed that number. However, if this
turns out to be impossible, it will try to suspend anyway using the
smallest image possible. In particular, if "0" is written to this
file, the suspend image will be as small as possible. Reading from
this file will display the current image size limit, which is set to
2/5 of available RAM by default.
So, try tweaking your image size. How - ask another question please.
Prerequisites - does your kernel support suspend-to-disk?
Kernel supports whatever is listed in /sys/power/state
, so:
cat /sys/power/state
Allowed (to my knowledge) entries there include: mem
, standby
, freeze
, disk
. Explanation:
mem
- has several meanings, which one exactly on your system you'll find out viacat /sys/power/mem_sleep
. I have:s2idle [deep]
standby
- Power-On Suspend (if supported)freeze
- Suspend To Idle (STI)disk
- Suspend To Disk (STD), hibernation. This - you want.
Then we need to check cat /sys/power/disk
. If you have there disabled
then dive in your BIOS looking for Secure Boot - that's the only idea I can offer and only thing I know may interfere and turn off hibernation. While I know only of SecureBoot, there may be other interferences, so taking a look at your BIOS is a good idea even if you don't have there any "secure boot".
Reading here:
- Kernel docs
- Debian Wiki on hibernation
TBH, even if your kernel does NOT support hibernation, you can try it in another way, scroll down to section Interfaces
.
Read this - warnings and problems - no BTRFS
In no particular order:
- Not all chipsets will work (don't have sources that I can cite here so let's say this is hearsay)
- VAIO has problems, supposedly there's a flag to counter them
- SecureBoot is often cited as interfering or turning off hibernation
- Wake-on-LAN consumes power even with hibernation
- Number of modules (graphics especially) may be initialized BEFORE your system properly resumes from hibernation - this is usually the cause for black screen when resuming. Look at ArchLinux Wiki for tips on how to debug issues. I'd also suggest Ubuntu FAQ on hibernate issues. Browsing through Launchpad bugs may also yield results. IIRC, there's a kernel parameter specifying in seconds a delay before resume.
- Allowing hibernation procedure differs for different Polkit versions
Don't use BTRFS and hibernate: corrupted data will be the result.
I want to hibernate - swap partition
There are cases, when people forego swap file and go back to swap partition. After all, it worked on previous LTS. I did not try, so won't offer pointers.
I want to hibernate - with swap file
- Make sure you have enough space there. Ubuntu swap FAQ tells you how much you need, commands from above do so as well. If you need more info here, ask another question please, as this is a lengthy topic.
- Increase the swap file or create a new one with good enough size (preferred, I agree with @muru) and change in the
/etc/fstab
to new one. Reboot to see change is taken well (store backup of thefstab
so you can easily revert just in case. - Point your kernel at this with appropriate params, so it know where to resume from.
- Update/reconfigure your boot loader and reboot.
Kernel parameters? Scary!
Carefully read and decide if you wish to do that, but it's just a way to configure your kernel.
It may be easier to hibernate via systemd
and uswsusp
(see Interfaces, below). It may be, that you - like me - will ultimately decide suspend-to-RAM is enough and you don't want to have 32GB on a swap file (not so great for folks with one SSD in their laptops, for instance). But!
- hibernate to swap file requires
resume=
to know which partition your swap file is on andresume_offset=
to know where in swap file to start resuming from. - hibernate to partition requires
resume=
to point to swap partition. - resolving black screen issues may well require
resumedelay=
.
Kernel docs on delaying resuming from Hibernation:
resumedelay= [HIBERNATION] Delay (in seconds) to pause before
attempting to read the resume files
Required parameters for swap-file and hibernation:
resume= [SWSUSP]
Specify the partition device for software suspend
Format:
<int>:<int>
resume_offset= [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
For the resume=
choose the same style as root
element has in fstab
. So, either /dev/sdaX
or UUID
or LVM. For hibernating to file - provide partition where your file can be found.
Reading:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problem - swap header not found
Swap file needs to be formatted properly. If your logs tell you this, you either are trying to hibernate to a file, or your resume parameter is not right.
Switch to partition or fix the file or change interface used for hibernation.
See: https://unix.stackexchange.com/questions/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
is used to format file, read more on it here
Problem! Hibernation not allowed!
Test: pm-hibernate
(if pm-utils package is installed) or systemctl hibernate
tell you you are not allowed. Default setting in Ubuntu since IIRC 12.04.
Solution(s): depends on your Polkit version, your Ubuntu version and flavour... See this question. Also, ArchWiki on Polkit may help.
For Mint, see: https://forums.linuxmint.com/viewtopic.php?t=259912
Problem! Hibernation disabled by something in BIOS!
Test: cat /sys/power/disk
has disabled
. Logs show "Failed to hibernate system via logind: Sleep verb not supported".
Solution: search your BIOS and find the problematic thing. Turn it off.
Solution 2: try another hibernate interface.
See: How to activate hibernation in 16.04.1 ? (systemd).
Interfaces
- swsusp - low level kernel interface. See Prerequisites - kernel for which files. Writing to files directly may cause suspend (to RAM, to disk and hybrid). According to SwapFAQ problematic with hibernating to file.
- uswsusp - ArchWiki and Debian Wiki and nice AskUbuntu question with a write-up how to use it.
- systemd - ArchWiki on it
- pm-utils - AFAIK that's a collection of scripts originally from Debian - I'll gladly welcome more info myself.
Closing remarks
For me it was a matter of almost two days of work to compile that. Hopefully this will help you (and others) solve your issue faster. There are still points I missed but it's 2 AM and I don't feel like writing more now. I'm of course open to anybody's pointers to make this better, so comment away. I'll reply once I sleep, work etc. :-)
I'm not certain hibernating to disk is that great. I went with sleeping in the end. But for me issue was with having a 32GB file just to be able to do hibernation, since I'm usually avoiding swapping at all. My initial swap-file was at 2GB and it was mostly empty. YMMV. Nevertheless, good luck! And start with the logs!
Great answer! But what eventually solved my case was the linked Swap FAQ and it telling me to add "resume=UUID" to a variable in my grub config file and/or sth similar with initramfs-tools. For some reason I had a wrong UUID there which probably was the issue. So I suggest for someone with a similar issue to first check out what's written in the Swap FAQ under "How do I add or modify a swap partition?", and the third point about hibernation there.
– RimaNari
Aug 23 '18 at 10:40
1
"disk - Suspend To Disk (STD), hibernation. This - you want." Am I the only one who got a kick out of this? Thanks much.
– spakmad
Jan 12 at 10:19
great answer! one small remark: on one of my machines resume after hibernate worked after a second boot attempt only (nothing was displayed on the monitor on the first attempt). i could fix that installing a HWE-stack:$ sudo apt install linux-generic-hwe-18.04
(for some hardware evenlinux-generic-hwe-18.04-edge
might be worth a shot).
– hiro protagonist
Jan 22 at 6:16
add a comment |
There are changes done to default settings when compared to previous LTS (16.04). In my case hibernation didn't work until I've did several steps, among them increased the size of swap file, turned it on, made sure policies allowed it, etc.
This may easily be my lengthiest answer on entire StackExchange so I tried to make headers descriptive.
Boots as there was no hibernation
Would be prudent to take a look at your logs (dmesg
might help) and see if anything's there. There are reasons when despite you telling the system to hibernate, it actually won't, or it will suspend-to-RAM instead (sleep).
Taking a look at kern.log
and syslog
looking for any hibernate-related messages wouldn't hurt as well. Sections starting with "problem" may help you with specific issues.
Swap file or swap partition
One of crucial changes is that now you DO NOT HAVE a swap partition, but you have a swap FILE.
Swap file may not work for your blend of hardware/drivers/OS and hibernation.
Hibernation turned off
Policies may also turn off or disallow hibernation.
Jargon
Suspend to RAM - RAM keeps the data, computer goes to sleep faster, uses more energy when suspended, wakes up faster. Some call this sleep.
Suspend to disk - aka hibernation. RAM is saved to swap (partition or file), computer goes to sleep slower, uses less energy while hibernating, wakes up slower.
Prerequisites - do you have enough space?
To hibernate, you need to (simplification here) save your entire RAM to your hard drive. So, you need to set aside enough space to do so. If you don't, this will fail and you won't hibernate.
free -m
will tell you how much memory you have, use and how much is in your swap.df -h
will tell you how much disk space you have on each mount point and how much is used, free, etc. This is important since you may want to later specify where your swap file will be located, or which partition to "trim" to have enough space for your swap.cat fstab
should give you information if you have a swap partition or file. According to Ubuntu Hibernation FAQswapfile
may not always work with some combinations of hardware/drivers.
If you don't have enough space, follow Ubuntu swap FAQ. It tells you how to increase swap file, add another, check if it's used etc. With commands and explanations. Really nice resource.
I don't have enough space to fit my RAM!
Kernel docs say:
/sys/power/image_size controls the size of the image created by the
suspend-to-disk mechanism. It can be written a string representing a
non-negative integer that will be used as an upper limit of the image
size, in bytes. The suspend-to-disk mechanism will do its best to
ensure the image size will not exceed that number. However, if this
turns out to be impossible, it will try to suspend anyway using the
smallest image possible. In particular, if "0" is written to this
file, the suspend image will be as small as possible. Reading from
this file will display the current image size limit, which is set to
2/5 of available RAM by default.
So, try tweaking your image size. How - ask another question please.
Prerequisites - does your kernel support suspend-to-disk?
Kernel supports whatever is listed in /sys/power/state
, so:
cat /sys/power/state
Allowed (to my knowledge) entries there include: mem
, standby
, freeze
, disk
. Explanation:
mem
- has several meanings, which one exactly on your system you'll find out viacat /sys/power/mem_sleep
. I have:s2idle [deep]
standby
- Power-On Suspend (if supported)freeze
- Suspend To Idle (STI)disk
- Suspend To Disk (STD), hibernation. This - you want.
Then we need to check cat /sys/power/disk
. If you have there disabled
then dive in your BIOS looking for Secure Boot - that's the only idea I can offer and only thing I know may interfere and turn off hibernation. While I know only of SecureBoot, there may be other interferences, so taking a look at your BIOS is a good idea even if you don't have there any "secure boot".
Reading here:
- Kernel docs
- Debian Wiki on hibernation
TBH, even if your kernel does NOT support hibernation, you can try it in another way, scroll down to section Interfaces
.
Read this - warnings and problems - no BTRFS
In no particular order:
- Not all chipsets will work (don't have sources that I can cite here so let's say this is hearsay)
- VAIO has problems, supposedly there's a flag to counter them
- SecureBoot is often cited as interfering or turning off hibernation
- Wake-on-LAN consumes power even with hibernation
- Number of modules (graphics especially) may be initialized BEFORE your system properly resumes from hibernation - this is usually the cause for black screen when resuming. Look at ArchLinux Wiki for tips on how to debug issues. I'd also suggest Ubuntu FAQ on hibernate issues. Browsing through Launchpad bugs may also yield results. IIRC, there's a kernel parameter specifying in seconds a delay before resume.
- Allowing hibernation procedure differs for different Polkit versions
Don't use BTRFS and hibernate: corrupted data will be the result.
I want to hibernate - swap partition
There are cases, when people forego swap file and go back to swap partition. After all, it worked on previous LTS. I did not try, so won't offer pointers.
I want to hibernate - with swap file
- Make sure you have enough space there. Ubuntu swap FAQ tells you how much you need, commands from above do so as well. If you need more info here, ask another question please, as this is a lengthy topic.
- Increase the swap file or create a new one with good enough size (preferred, I agree with @muru) and change in the
/etc/fstab
to new one. Reboot to see change is taken well (store backup of thefstab
so you can easily revert just in case. - Point your kernel at this with appropriate params, so it know where to resume from.
- Update/reconfigure your boot loader and reboot.
Kernel parameters? Scary!
Carefully read and decide if you wish to do that, but it's just a way to configure your kernel.
It may be easier to hibernate via systemd
and uswsusp
(see Interfaces, below). It may be, that you - like me - will ultimately decide suspend-to-RAM is enough and you don't want to have 32GB on a swap file (not so great for folks with one SSD in their laptops, for instance). But!
- hibernate to swap file requires
resume=
to know which partition your swap file is on andresume_offset=
to know where in swap file to start resuming from. - hibernate to partition requires
resume=
to point to swap partition. - resolving black screen issues may well require
resumedelay=
.
Kernel docs on delaying resuming from Hibernation:
resumedelay= [HIBERNATION] Delay (in seconds) to pause before
attempting to read the resume files
Required parameters for swap-file and hibernation:
resume= [SWSUSP]
Specify the partition device for software suspend
Format:
<int>:<int>
resume_offset= [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
For the resume=
choose the same style as root
element has in fstab
. So, either /dev/sdaX
or UUID
or LVM. For hibernating to file - provide partition where your file can be found.
Reading:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problem - swap header not found
Swap file needs to be formatted properly. If your logs tell you this, you either are trying to hibernate to a file, or your resume parameter is not right.
Switch to partition or fix the file or change interface used for hibernation.
See: https://unix.stackexchange.com/questions/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
is used to format file, read more on it here
Problem! Hibernation not allowed!
Test: pm-hibernate
(if pm-utils package is installed) or systemctl hibernate
tell you you are not allowed. Default setting in Ubuntu since IIRC 12.04.
Solution(s): depends on your Polkit version, your Ubuntu version and flavour... See this question. Also, ArchWiki on Polkit may help.
For Mint, see: https://forums.linuxmint.com/viewtopic.php?t=259912
Problem! Hibernation disabled by something in BIOS!
Test: cat /sys/power/disk
has disabled
. Logs show "Failed to hibernate system via logind: Sleep verb not supported".
Solution: search your BIOS and find the problematic thing. Turn it off.
Solution 2: try another hibernate interface.
See: How to activate hibernation in 16.04.1 ? (systemd).
Interfaces
- swsusp - low level kernel interface. See Prerequisites - kernel for which files. Writing to files directly may cause suspend (to RAM, to disk and hybrid). According to SwapFAQ problematic with hibernating to file.
- uswsusp - ArchWiki and Debian Wiki and nice AskUbuntu question with a write-up how to use it.
- systemd - ArchWiki on it
- pm-utils - AFAIK that's a collection of scripts originally from Debian - I'll gladly welcome more info myself.
Closing remarks
For me it was a matter of almost two days of work to compile that. Hopefully this will help you (and others) solve your issue faster. There are still points I missed but it's 2 AM and I don't feel like writing more now. I'm of course open to anybody's pointers to make this better, so comment away. I'll reply once I sleep, work etc. :-)
I'm not certain hibernating to disk is that great. I went with sleeping in the end. But for me issue was with having a 32GB file just to be able to do hibernation, since I'm usually avoiding swapping at all. My initial swap-file was at 2GB and it was mostly empty. YMMV. Nevertheless, good luck! And start with the logs!
There are changes done to default settings when compared to previous LTS (16.04). In my case hibernation didn't work until I've did several steps, among them increased the size of swap file, turned it on, made sure policies allowed it, etc.
This may easily be my lengthiest answer on entire StackExchange so I tried to make headers descriptive.
Boots as there was no hibernation
Would be prudent to take a look at your logs (dmesg
might help) and see if anything's there. There are reasons when despite you telling the system to hibernate, it actually won't, or it will suspend-to-RAM instead (sleep).
Taking a look at kern.log
and syslog
looking for any hibernate-related messages wouldn't hurt as well. Sections starting with "problem" may help you with specific issues.
Swap file or swap partition
One of crucial changes is that now you DO NOT HAVE a swap partition, but you have a swap FILE.
Swap file may not work for your blend of hardware/drivers/OS and hibernation.
Hibernation turned off
Policies may also turn off or disallow hibernation.
Jargon
Suspend to RAM - RAM keeps the data, computer goes to sleep faster, uses more energy when suspended, wakes up faster. Some call this sleep.
Suspend to disk - aka hibernation. RAM is saved to swap (partition or file), computer goes to sleep slower, uses less energy while hibernating, wakes up slower.
Prerequisites - do you have enough space?
To hibernate, you need to (simplification here) save your entire RAM to your hard drive. So, you need to set aside enough space to do so. If you don't, this will fail and you won't hibernate.
free -m
will tell you how much memory you have, use and how much is in your swap.df -h
will tell you how much disk space you have on each mount point and how much is used, free, etc. This is important since you may want to later specify where your swap file will be located, or which partition to "trim" to have enough space for your swap.cat fstab
should give you information if you have a swap partition or file. According to Ubuntu Hibernation FAQswapfile
may not always work with some combinations of hardware/drivers.
If you don't have enough space, follow Ubuntu swap FAQ. It tells you how to increase swap file, add another, check if it's used etc. With commands and explanations. Really nice resource.
I don't have enough space to fit my RAM!
Kernel docs say:
/sys/power/image_size controls the size of the image created by the
suspend-to-disk mechanism. It can be written a string representing a
non-negative integer that will be used as an upper limit of the image
size, in bytes. The suspend-to-disk mechanism will do its best to
ensure the image size will not exceed that number. However, if this
turns out to be impossible, it will try to suspend anyway using the
smallest image possible. In particular, if "0" is written to this
file, the suspend image will be as small as possible. Reading from
this file will display the current image size limit, which is set to
2/5 of available RAM by default.
So, try tweaking your image size. How - ask another question please.
Prerequisites - does your kernel support suspend-to-disk?
Kernel supports whatever is listed in /sys/power/state
, so:
cat /sys/power/state
Allowed (to my knowledge) entries there include: mem
, standby
, freeze
, disk
. Explanation:
mem
- has several meanings, which one exactly on your system you'll find out viacat /sys/power/mem_sleep
. I have:s2idle [deep]
standby
- Power-On Suspend (if supported)freeze
- Suspend To Idle (STI)disk
- Suspend To Disk (STD), hibernation. This - you want.
Then we need to check cat /sys/power/disk
. If you have there disabled
then dive in your BIOS looking for Secure Boot - that's the only idea I can offer and only thing I know may interfere and turn off hibernation. While I know only of SecureBoot, there may be other interferences, so taking a look at your BIOS is a good idea even if you don't have there any "secure boot".
Reading here:
- Kernel docs
- Debian Wiki on hibernation
TBH, even if your kernel does NOT support hibernation, you can try it in another way, scroll down to section Interfaces
.
Read this - warnings and problems - no BTRFS
In no particular order:
- Not all chipsets will work (don't have sources that I can cite here so let's say this is hearsay)
- VAIO has problems, supposedly there's a flag to counter them
- SecureBoot is often cited as interfering or turning off hibernation
- Wake-on-LAN consumes power even with hibernation
- Number of modules (graphics especially) may be initialized BEFORE your system properly resumes from hibernation - this is usually the cause for black screen when resuming. Look at ArchLinux Wiki for tips on how to debug issues. I'd also suggest Ubuntu FAQ on hibernate issues. Browsing through Launchpad bugs may also yield results. IIRC, there's a kernel parameter specifying in seconds a delay before resume.
- Allowing hibernation procedure differs for different Polkit versions
Don't use BTRFS and hibernate: corrupted data will be the result.
I want to hibernate - swap partition
There are cases, when people forego swap file and go back to swap partition. After all, it worked on previous LTS. I did not try, so won't offer pointers.
I want to hibernate - with swap file
- Make sure you have enough space there. Ubuntu swap FAQ tells you how much you need, commands from above do so as well. If you need more info here, ask another question please, as this is a lengthy topic.
- Increase the swap file or create a new one with good enough size (preferred, I agree with @muru) and change in the
/etc/fstab
to new one. Reboot to see change is taken well (store backup of thefstab
so you can easily revert just in case. - Point your kernel at this with appropriate params, so it know where to resume from.
- Update/reconfigure your boot loader and reboot.
Kernel parameters? Scary!
Carefully read and decide if you wish to do that, but it's just a way to configure your kernel.
It may be easier to hibernate via systemd
and uswsusp
(see Interfaces, below). It may be, that you - like me - will ultimately decide suspend-to-RAM is enough and you don't want to have 32GB on a swap file (not so great for folks with one SSD in their laptops, for instance). But!
- hibernate to swap file requires
resume=
to know which partition your swap file is on andresume_offset=
to know where in swap file to start resuming from. - hibernate to partition requires
resume=
to point to swap partition. - resolving black screen issues may well require
resumedelay=
.
Kernel docs on delaying resuming from Hibernation:
resumedelay= [HIBERNATION] Delay (in seconds) to pause before
attempting to read the resume files
Required parameters for swap-file and hibernation:
resume= [SWSUSP]
Specify the partition device for software suspend
Format:
<int>:<int>
resume_offset= [SWSUSP]
Specify the offset from the beginning of the partition
given by "resume=" at which the swap header is located,
in <PAGE_SIZE> units (needed only for swap files).
See Documentation/power/swsusp-and-swap-files.txt
For the resume=
choose the same style as root
element has in fstab
. So, either /dev/sdaX
or UUID
or LVM. For hibernating to file - provide partition where your file can be found.
Reading:
- https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
- https://wiki.archlinux.org/index.php/Kernel_parameters
Problem - swap header not found
Swap file needs to be formatted properly. If your logs tell you this, you either are trying to hibernate to a file, or your resume parameter is not right.
Switch to partition or fix the file or change interface used for hibernation.
See: https://unix.stackexchange.com/questions/43508/debian-hibernate-problem-pm-swap-header-not-found
mkswap
is used to format file, read more on it here
Problem! Hibernation not allowed!
Test: pm-hibernate
(if pm-utils package is installed) or systemctl hibernate
tell you you are not allowed. Default setting in Ubuntu since IIRC 12.04.
Solution(s): depends on your Polkit version, your Ubuntu version and flavour... See this question. Also, ArchWiki on Polkit may help.
For Mint, see: https://forums.linuxmint.com/viewtopic.php?t=259912
Problem! Hibernation disabled by something in BIOS!
Test: cat /sys/power/disk
has disabled
. Logs show "Failed to hibernate system via logind: Sleep verb not supported".
Solution: search your BIOS and find the problematic thing. Turn it off.
Solution 2: try another hibernate interface.
See: How to activate hibernation in 16.04.1 ? (systemd).
Interfaces
- swsusp - low level kernel interface. See Prerequisites - kernel for which files. Writing to files directly may cause suspend (to RAM, to disk and hybrid). According to SwapFAQ problematic with hibernating to file.
- uswsusp - ArchWiki and Debian Wiki and nice AskUbuntu question with a write-up how to use it.
- systemd - ArchWiki on it
- pm-utils - AFAIK that's a collection of scripts originally from Debian - I'll gladly welcome more info myself.
Closing remarks
For me it was a matter of almost two days of work to compile that. Hopefully this will help you (and others) solve your issue faster. There are still points I missed but it's 2 AM and I don't feel like writing more now. I'm of course open to anybody's pointers to make this better, so comment away. I'll reply once I sleep, work etc. :-)
I'm not certain hibernating to disk is that great. I went with sleeping in the end. But for me issue was with having a 32GB file just to be able to do hibernation, since I'm usually avoiding swapping at all. My initial swap-file was at 2GB and it was mostly empty. YMMV. Nevertheless, good luck! And start with the logs!
answered May 22 '18 at 0:18
LIttle Ancient Forest KamiLIttle Ancient Forest Kami
9571029
9571029
Great answer! But what eventually solved my case was the linked Swap FAQ and it telling me to add "resume=UUID" to a variable in my grub config file and/or sth similar with initramfs-tools. For some reason I had a wrong UUID there which probably was the issue. So I suggest for someone with a similar issue to first check out what's written in the Swap FAQ under "How do I add or modify a swap partition?", and the third point about hibernation there.
– RimaNari
Aug 23 '18 at 10:40
1
"disk - Suspend To Disk (STD), hibernation. This - you want." Am I the only one who got a kick out of this? Thanks much.
– spakmad
Jan 12 at 10:19
great answer! one small remark: on one of my machines resume after hibernate worked after a second boot attempt only (nothing was displayed on the monitor on the first attempt). i could fix that installing a HWE-stack:$ sudo apt install linux-generic-hwe-18.04
(for some hardware evenlinux-generic-hwe-18.04-edge
might be worth a shot).
– hiro protagonist
Jan 22 at 6:16
add a comment |
Great answer! But what eventually solved my case was the linked Swap FAQ and it telling me to add "resume=UUID" to a variable in my grub config file and/or sth similar with initramfs-tools. For some reason I had a wrong UUID there which probably was the issue. So I suggest for someone with a similar issue to first check out what's written in the Swap FAQ under "How do I add or modify a swap partition?", and the third point about hibernation there.
– RimaNari
Aug 23 '18 at 10:40
1
"disk - Suspend To Disk (STD), hibernation. This - you want." Am I the only one who got a kick out of this? Thanks much.
– spakmad
Jan 12 at 10:19
great answer! one small remark: on one of my machines resume after hibernate worked after a second boot attempt only (nothing was displayed on the monitor on the first attempt). i could fix that installing a HWE-stack:$ sudo apt install linux-generic-hwe-18.04
(for some hardware evenlinux-generic-hwe-18.04-edge
might be worth a shot).
– hiro protagonist
Jan 22 at 6:16
Great answer! But what eventually solved my case was the linked Swap FAQ and it telling me to add "resume=UUID" to a variable in my grub config file and/or sth similar with initramfs-tools. For some reason I had a wrong UUID there which probably was the issue. So I suggest for someone with a similar issue to first check out what's written in the Swap FAQ under "How do I add or modify a swap partition?", and the third point about hibernation there.
– RimaNari
Aug 23 '18 at 10:40
Great answer! But what eventually solved my case was the linked Swap FAQ and it telling me to add "resume=UUID" to a variable in my grub config file and/or sth similar with initramfs-tools. For some reason I had a wrong UUID there which probably was the issue. So I suggest for someone with a similar issue to first check out what's written in the Swap FAQ under "How do I add or modify a swap partition?", and the third point about hibernation there.
– RimaNari
Aug 23 '18 at 10:40
1
1
"disk - Suspend To Disk (STD), hibernation. This - you want." Am I the only one who got a kick out of this? Thanks much.
– spakmad
Jan 12 at 10:19
"disk - Suspend To Disk (STD), hibernation. This - you want." Am I the only one who got a kick out of this? Thanks much.
– spakmad
Jan 12 at 10:19
great answer! one small remark: on one of my machines resume after hibernate worked after a second boot attempt only (nothing was displayed on the monitor on the first attempt). i could fix that installing a HWE-stack:
$ sudo apt install linux-generic-hwe-18.04
(for some hardware even linux-generic-hwe-18.04-edge
might be worth a shot).– hiro protagonist
Jan 22 at 6:16
great answer! one small remark: on one of my machines resume after hibernate worked after a second boot attempt only (nothing was displayed on the monitor on the first attempt). i could fix that installing a HWE-stack:
$ sudo apt install linux-generic-hwe-18.04
(for some hardware even linux-generic-hwe-18.04-edge
might be worth a shot).– hiro protagonist
Jan 22 at 6:16
add a comment |
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)
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.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
[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes
After that 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
add a comment |
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)
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.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
[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes
After that 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
add a comment |
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)
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.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
[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes
After that 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
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)
sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.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
[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes
After that 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
edited Oct 25 '18 at 2:03
Sam73
235
235
answered Aug 10 '18 at 10:28
RoeyRoey
193210
193210
add a comment |
add a comment |
I hope this helps
For me it has always worked until 18.04 and after 18.04 I enabled it as is in many articles, but it suddenly stopped working just yesterday (working fine for 4-5 months),
and here is the ... ONE THING that got it working again ...
Tell grub 2 where the swap partition is:
First find out which partition it is on: using the below commandcat /etc/fstab
Mine is on sda7 as is the following output
swap was on /dev/sda7 during installation
Then, add in Grub 2 the following addition to the following line, using the following command:
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable resume=/dev/sda7"
The important part is "resume=/dev/sda7"
/dev/sda7 in my case
Then Update Grub with the following command, and after this it started working perfectly again
sudo update-grub
After many attempts this was the one thing worked, perhaps it was just because of an update to the kernel that screwed it up, never the less this worked ... I hope it helps
Cheers, Mark
add a comment |
I hope this helps
For me it has always worked until 18.04 and after 18.04 I enabled it as is in many articles, but it suddenly stopped working just yesterday (working fine for 4-5 months),
and here is the ... ONE THING that got it working again ...
Tell grub 2 where the swap partition is:
First find out which partition it is on: using the below commandcat /etc/fstab
Mine is on sda7 as is the following output
swap was on /dev/sda7 during installation
Then, add in Grub 2 the following addition to the following line, using the following command:
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable resume=/dev/sda7"
The important part is "resume=/dev/sda7"
/dev/sda7 in my case
Then Update Grub with the following command, and after this it started working perfectly again
sudo update-grub
After many attempts this was the one thing worked, perhaps it was just because of an update to the kernel that screwed it up, never the less this worked ... I hope it helps
Cheers, Mark
add a comment |
I hope this helps
For me it has always worked until 18.04 and after 18.04 I enabled it as is in many articles, but it suddenly stopped working just yesterday (working fine for 4-5 months),
and here is the ... ONE THING that got it working again ...
Tell grub 2 where the swap partition is:
First find out which partition it is on: using the below commandcat /etc/fstab
Mine is on sda7 as is the following output
swap was on /dev/sda7 during installation
Then, add in Grub 2 the following addition to the following line, using the following command:
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable resume=/dev/sda7"
The important part is "resume=/dev/sda7"
/dev/sda7 in my case
Then Update Grub with the following command, and after this it started working perfectly again
sudo update-grub
After many attempts this was the one thing worked, perhaps it was just because of an update to the kernel that screwed it up, never the less this worked ... I hope it helps
Cheers, Mark
I hope this helps
For me it has always worked until 18.04 and after 18.04 I enabled it as is in many articles, but it suddenly stopped working just yesterday (working fine for 4-5 months),
and here is the ... ONE THING that got it working again ...
Tell grub 2 where the swap partition is:
First find out which partition it is on: using the below commandcat /etc/fstab
Mine is on sda7 as is the following output
swap was on /dev/sda7 during installation
Then, add in Grub 2 the following addition to the following line, using the following command:
sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable resume=/dev/sda7"
The important part is "resume=/dev/sda7"
/dev/sda7 in my case
Then Update Grub with the following command, and after this it started working perfectly again
sudo update-grub
After many attempts this was the one thing worked, perhaps it was just because of an update to the kernel that screwed it up, never the less this worked ... I hope it helps
Cheers, Mark
answered Jul 15 '18 at 17:05
markackerman8-gmail.commarkackerman8-gmail.com
787612
787612
add a comment |
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1034185%2fubuntu-18-04-cant-resume-after-hibernate%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I have the same problem with 18.04, I thik the solution must be in specifying right partition for resume but still couldn't find the way to do this. All I found I Google didn't work for me.
– user2819650
May 12 '18 at 7:00
The partition is set correctly in /etc/initramfs-tools/conf.d/resume to my swap. I suspect that either hibernation isn't done correctly or resume during boot doesn't work. But I don't know how to debug it further. Syslog and dmesg don't give any clues what is the problem.
– Kamil
May 13 '18 at 17:28