How can I hibernate on Ubuntu 17.10 or save my session?
I want to store my session or hibernate on Ubuntu 17.10, to avoid always having to reopen the same applications.
How can I do that?
17.10 hibernate
|
show 4 more comments
I want to store my session or hibernate on Ubuntu 17.10, to avoid always having to reopen the same applications.
How can I do that?
17.10 hibernate
These answers may help you: unix.stackexchange.com/questions/13725/…
– user68186
Dec 17 '17 at 19:24
2
Possible duplicate of How to enable hibernation?
– Fabby
Dec 17 '17 at 19:43
I think hibernation requires the a swap to be enabled and ubuntu 17.10 only uses swap files
– mrkaspa
Dec 17 '17 at 22:32
Also enabled the auto save sessions on gnome using dconf but it does not work
– mrkaspa
Dec 17 '17 at 22:34
@mrkaspa, I think you want to say "I think hibernation requires a swap partition to be enabled and ubuntu 17.10 only uses swap files"
– jpezz
Dec 17 '17 at 23:00
|
show 4 more comments
I want to store my session or hibernate on Ubuntu 17.10, to avoid always having to reopen the same applications.
How can I do that?
17.10 hibernate
I want to store my session or hibernate on Ubuntu 17.10, to avoid always having to reopen the same applications.
How can I do that?
17.10 hibernate
17.10 hibernate
edited Dec 18 '17 at 22:15
Zanna
51.1k13138242
51.1k13138242
asked Dec 17 '17 at 19:12
mrkaspamrkaspa
164
164
These answers may help you: unix.stackexchange.com/questions/13725/…
– user68186
Dec 17 '17 at 19:24
2
Possible duplicate of How to enable hibernation?
– Fabby
Dec 17 '17 at 19:43
I think hibernation requires the a swap to be enabled and ubuntu 17.10 only uses swap files
– mrkaspa
Dec 17 '17 at 22:32
Also enabled the auto save sessions on gnome using dconf but it does not work
– mrkaspa
Dec 17 '17 at 22:34
@mrkaspa, I think you want to say "I think hibernation requires a swap partition to be enabled and ubuntu 17.10 only uses swap files"
– jpezz
Dec 17 '17 at 23:00
|
show 4 more comments
These answers may help you: unix.stackexchange.com/questions/13725/…
– user68186
Dec 17 '17 at 19:24
2
Possible duplicate of How to enable hibernation?
– Fabby
Dec 17 '17 at 19:43
I think hibernation requires the a swap to be enabled and ubuntu 17.10 only uses swap files
– mrkaspa
Dec 17 '17 at 22:32
Also enabled the auto save sessions on gnome using dconf but it does not work
– mrkaspa
Dec 17 '17 at 22:34
@mrkaspa, I think you want to say "I think hibernation requires a swap partition to be enabled and ubuntu 17.10 only uses swap files"
– jpezz
Dec 17 '17 at 23:00
These answers may help you: unix.stackexchange.com/questions/13725/…
– user68186
Dec 17 '17 at 19:24
These answers may help you: unix.stackexchange.com/questions/13725/…
– user68186
Dec 17 '17 at 19:24
2
2
Possible duplicate of How to enable hibernation?
– Fabby
Dec 17 '17 at 19:43
Possible duplicate of How to enable hibernation?
– Fabby
Dec 17 '17 at 19:43
I think hibernation requires the a swap to be enabled and ubuntu 17.10 only uses swap files
– mrkaspa
Dec 17 '17 at 22:32
I think hibernation requires the a swap to be enabled and ubuntu 17.10 only uses swap files
– mrkaspa
Dec 17 '17 at 22:32
Also enabled the auto save sessions on gnome using dconf but it does not work
– mrkaspa
Dec 17 '17 at 22:34
Also enabled the auto save sessions on gnome using dconf but it does not work
– mrkaspa
Dec 17 '17 at 22:34
@mrkaspa, I think you want to say "I think hibernation requires a swap partition to be enabled and ubuntu 17.10 only uses swap files"
– jpezz
Dec 17 '17 at 23:00
@mrkaspa, I think you want to say "I think hibernation requires a swap partition to be enabled and ubuntu 17.10 only uses swap files"
– jpezz
Dec 17 '17 at 23:00
|
show 4 more comments
3 Answers
3
active
oldest
votes
The main source for this answer (aside from my own experience) is this page on the Arch Linux wiki.
In this answer I use sudoedit
to make changes to root-owned files. If you prefer, you can just call your favourite text editor with root permissions, but if you want to use a GUI editor and are using Wayland, see Why don't gksu/gksudo or launching a graphical application with sudo work with Wayland?).
If you cannot hibernate, be aware that you can still (probably) save power by using the suspend state, where the state of RAM is maintained. The systemd command for this is systemctl suspend
, and it's somewhat more likely to work than hibernation.
It should be said that hibernation is not guaranteed to work; that's why initiating hibernation via the GUI is disabled by default. Even if you do everything right, you may still have problems. Your system may crash, your machine state may not be recoverable (you may lose unsaved work, for example) and you may find yourself in the sad situation of holding-down-the-power-button-for-a-very-long-time. I recommend only attempting to test hibernation after saving all of your work, and leaving only some idle application open (such as a terminal emulator that isn't doing anything).
Hibernation involves writing the state of RAM to an area of the disk. The swap space is used for this purpose. Whether it is a file or a partition, it should work in the same way. The Arch Wiki says that you should be able to hibernate if your swap is at least 2/5 of the size of RAM. Redhat provide this guidance on swap size needed for hibernation which totally contradicts the Arch Wiki! But I recommend other debugging steps before you attempt to increase the size of swap space.
If you are using Btrfs you may not be able to hibernate and Btrfs does not support swap files, according to the Arch Wiki. The default format for main partitions on Ubuntu 17.10 (and all other currently supported versions) is ext4, not Btrfs, so most users won't need to worry about this.
NirajW's answer here explains how to test and enable hibernation if it works. The command it suggests is
sudo pm-hibernate
This fails for me no matter what other adjustments I make (my system instantly hangs and never recovers). Instead I use
sudo systemctl hibernate
You may also try
echo disk | sudo tee /sys/power/state
Hibernation is the lowest possible power state (ACPI S4). What should happen is that the system shuts down, the machine is off and can be left off indefinitely, and when you turn it back on, instead of a clean boot, you log in and resume your session.
If you get a clean boot when you try to hibernate, the first thing to try is to set a boot parameter so that GRUB knows where to find the machine state to load back into RAM on resume (at least, that's how I understand the process. If this isn't accurate, please correct me).
Setting boot parameters for resume
Fresh installations of Ubuntu 17.04 and 17.10 have a swap file. If you have upgraded from an earlier installation, you will still have a swap partition. The procedure for setting up resume parameters is different if you have a swap file. Check your configuration by running
grep swap /etc/fstab
If you have a swap partition, the output will show the partition label, for example
# swap was on /dev/sda3 during installation
If there is no output, run
ls /
and look for /swapfile
.
If you have a swap partition
To add the resume parameter, you would run
sudoedit /etc/default/grub
Find the line that begins GRUB_CMDLINE_LINUX_DEFAULT=
and add to the parameters between the double quotes the string resume=/Your/Swap/Partition
, replacing /Your/Swap/Partition
with the device file path you found in /etc/fstab
. In the example I have given, the full line would probably be (depending on what other parameters were being used - quiet
and splash
are the default parameters on a desktop Ubuntu installation):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda3"
After editing this file, you must run
sudo update-grub
to write the configuration to the file GRUB reads on boot. If you forget to do this, your changes will have no effect ;) You are also advised to reboot after this before attempting hibernation.
If you have a swap file
You need to set a parameter for resume from hibernation. Your /swapfile
should be in your root partition, so set a boot parameter resume=/Your/Root/Partition
where /Your/Root/Partition
is the device file path for your root partition, for example, /dev/sda2
. If you are not sure, check the contents of /etc/fstab
to see which partition is mounted on /
You also need to set a boot parameter for the offset of the swap file. You can find the value for this parameter by running the command sudo filefrag -v /swapfile
. Here is the start of this command's output on my system (it's exactly the same as the output I got on 17.04, but I'm now using Ubuntu MATE 17.10):
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
...
The number for the offset parameter is the first number in the physical_offset
column. In my example, it's 34816
. That means that the boot parameter I'd set would be resume_offset=34816
.
To add the two boot parameters, edit the configuration file for GRUB:
sudoedit /etc/default/grub
Find the line beginning GRUB_CMDLINE_LINUX_DEFAULT=
and add the two boot parameters, to that after your changes, the line reads something like
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda2 resume_offset=34816"
but replace /dev/sda2
and 34816
with the values for your system.
Save the file, exit, and run
sudo update-grub
to write the configuration to the file GRUB reads when it is loaded. Reboot, and try hibernation again.
If you still cannot hibernate, try disabling Secure Boot in your UEFI (or BIOS) settings, if not already done.
If you still cannot hibernate, you can attempt to debug the process by setting some additional boot parameters, as explained in detail in this post on debugging sleep states. Edit /etc/default/grub
again, remove the parameters quiet
and splash
and add the debug parameters you want to try (for example, I use initctl_debug
and no_console_suspend
), run sudo update-grub
, reboot, and try again.
Information made available by the debug parameters may lead you to figure out what is going wrong and might enable you to come up with a solution. I use my own system as a case study in my answer to another question on hibernation. In my case, the problem is always buggy drivers. In every version of Ubuntu I have used, I have needed to unload the brcmfmac
module from the kernel before hibernation and reinsert it on resume. If more essential modules need to be unloaded, I use a sort of script (run with sudo bash filename
) for hibernation (replacing list of buggy modules
with the names of the actual modules that need to be pulled out):
modprobe -r list of buggy modules &&
echo disk > /sys/power/state
modprobe list of buggy modules
I use the &&
operator so that hibernation isn't attempted if unloading fails for some reason. If resume succeeds, the modules are immediately reloaded into the kernel, so the system should stay up.
You may well find different steps are needed for your particular system.
Good description but I wouldn't attempt to try it. Ubuntu needs a supported Hibernation.
– jpezz
Dec 18 '17 at 23:50
add a comment |
All of this works well for me for hibernating to file, thanks for the instructions! In my case I also had to get the latest stable kernel for hibernate to work, i.e. Ubuntu 17.10 and a dell xps 9370, I had to upgrade the kernel to 4.16.0rc
add a comment |
In my case this procedure did not work as described.
I had to replace /dev/sdaXX with the UUID for /dev/sdaXX. Its UUID was
d2175d30-aee3-418b-8c3f-d4ae61d13b3f
so the editid line in GRUB2 looked like this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=d2175d30-aee3-418b-8c3f-d4ae61d13b3f resume_offset=2367488"
After that it worked.
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%2f987197%2fhow-can-i-hibernate-on-ubuntu-17-10-or-save-my-session%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
The main source for this answer (aside from my own experience) is this page on the Arch Linux wiki.
In this answer I use sudoedit
to make changes to root-owned files. If you prefer, you can just call your favourite text editor with root permissions, but if you want to use a GUI editor and are using Wayland, see Why don't gksu/gksudo or launching a graphical application with sudo work with Wayland?).
If you cannot hibernate, be aware that you can still (probably) save power by using the suspend state, where the state of RAM is maintained. The systemd command for this is systemctl suspend
, and it's somewhat more likely to work than hibernation.
It should be said that hibernation is not guaranteed to work; that's why initiating hibernation via the GUI is disabled by default. Even if you do everything right, you may still have problems. Your system may crash, your machine state may not be recoverable (you may lose unsaved work, for example) and you may find yourself in the sad situation of holding-down-the-power-button-for-a-very-long-time. I recommend only attempting to test hibernation after saving all of your work, and leaving only some idle application open (such as a terminal emulator that isn't doing anything).
Hibernation involves writing the state of RAM to an area of the disk. The swap space is used for this purpose. Whether it is a file or a partition, it should work in the same way. The Arch Wiki says that you should be able to hibernate if your swap is at least 2/5 of the size of RAM. Redhat provide this guidance on swap size needed for hibernation which totally contradicts the Arch Wiki! But I recommend other debugging steps before you attempt to increase the size of swap space.
If you are using Btrfs you may not be able to hibernate and Btrfs does not support swap files, according to the Arch Wiki. The default format for main partitions on Ubuntu 17.10 (and all other currently supported versions) is ext4, not Btrfs, so most users won't need to worry about this.
NirajW's answer here explains how to test and enable hibernation if it works. The command it suggests is
sudo pm-hibernate
This fails for me no matter what other adjustments I make (my system instantly hangs and never recovers). Instead I use
sudo systemctl hibernate
You may also try
echo disk | sudo tee /sys/power/state
Hibernation is the lowest possible power state (ACPI S4). What should happen is that the system shuts down, the machine is off and can be left off indefinitely, and when you turn it back on, instead of a clean boot, you log in and resume your session.
If you get a clean boot when you try to hibernate, the first thing to try is to set a boot parameter so that GRUB knows where to find the machine state to load back into RAM on resume (at least, that's how I understand the process. If this isn't accurate, please correct me).
Setting boot parameters for resume
Fresh installations of Ubuntu 17.04 and 17.10 have a swap file. If you have upgraded from an earlier installation, you will still have a swap partition. The procedure for setting up resume parameters is different if you have a swap file. Check your configuration by running
grep swap /etc/fstab
If you have a swap partition, the output will show the partition label, for example
# swap was on /dev/sda3 during installation
If there is no output, run
ls /
and look for /swapfile
.
If you have a swap partition
To add the resume parameter, you would run
sudoedit /etc/default/grub
Find the line that begins GRUB_CMDLINE_LINUX_DEFAULT=
and add to the parameters between the double quotes the string resume=/Your/Swap/Partition
, replacing /Your/Swap/Partition
with the device file path you found in /etc/fstab
. In the example I have given, the full line would probably be (depending on what other parameters were being used - quiet
and splash
are the default parameters on a desktop Ubuntu installation):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda3"
After editing this file, you must run
sudo update-grub
to write the configuration to the file GRUB reads on boot. If you forget to do this, your changes will have no effect ;) You are also advised to reboot after this before attempting hibernation.
If you have a swap file
You need to set a parameter for resume from hibernation. Your /swapfile
should be in your root partition, so set a boot parameter resume=/Your/Root/Partition
where /Your/Root/Partition
is the device file path for your root partition, for example, /dev/sda2
. If you are not sure, check the contents of /etc/fstab
to see which partition is mounted on /
You also need to set a boot parameter for the offset of the swap file. You can find the value for this parameter by running the command sudo filefrag -v /swapfile
. Here is the start of this command's output on my system (it's exactly the same as the output I got on 17.04, but I'm now using Ubuntu MATE 17.10):
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
...
The number for the offset parameter is the first number in the physical_offset
column. In my example, it's 34816
. That means that the boot parameter I'd set would be resume_offset=34816
.
To add the two boot parameters, edit the configuration file for GRUB:
sudoedit /etc/default/grub
Find the line beginning GRUB_CMDLINE_LINUX_DEFAULT=
and add the two boot parameters, to that after your changes, the line reads something like
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda2 resume_offset=34816"
but replace /dev/sda2
and 34816
with the values for your system.
Save the file, exit, and run
sudo update-grub
to write the configuration to the file GRUB reads when it is loaded. Reboot, and try hibernation again.
If you still cannot hibernate, try disabling Secure Boot in your UEFI (or BIOS) settings, if not already done.
If you still cannot hibernate, you can attempt to debug the process by setting some additional boot parameters, as explained in detail in this post on debugging sleep states. Edit /etc/default/grub
again, remove the parameters quiet
and splash
and add the debug parameters you want to try (for example, I use initctl_debug
and no_console_suspend
), run sudo update-grub
, reboot, and try again.
Information made available by the debug parameters may lead you to figure out what is going wrong and might enable you to come up with a solution. I use my own system as a case study in my answer to another question on hibernation. In my case, the problem is always buggy drivers. In every version of Ubuntu I have used, I have needed to unload the brcmfmac
module from the kernel before hibernation and reinsert it on resume. If more essential modules need to be unloaded, I use a sort of script (run with sudo bash filename
) for hibernation (replacing list of buggy modules
with the names of the actual modules that need to be pulled out):
modprobe -r list of buggy modules &&
echo disk > /sys/power/state
modprobe list of buggy modules
I use the &&
operator so that hibernation isn't attempted if unloading fails for some reason. If resume succeeds, the modules are immediately reloaded into the kernel, so the system should stay up.
You may well find different steps are needed for your particular system.
Good description but I wouldn't attempt to try it. Ubuntu needs a supported Hibernation.
– jpezz
Dec 18 '17 at 23:50
add a comment |
The main source for this answer (aside from my own experience) is this page on the Arch Linux wiki.
In this answer I use sudoedit
to make changes to root-owned files. If you prefer, you can just call your favourite text editor with root permissions, but if you want to use a GUI editor and are using Wayland, see Why don't gksu/gksudo or launching a graphical application with sudo work with Wayland?).
If you cannot hibernate, be aware that you can still (probably) save power by using the suspend state, where the state of RAM is maintained. The systemd command for this is systemctl suspend
, and it's somewhat more likely to work than hibernation.
It should be said that hibernation is not guaranteed to work; that's why initiating hibernation via the GUI is disabled by default. Even if you do everything right, you may still have problems. Your system may crash, your machine state may not be recoverable (you may lose unsaved work, for example) and you may find yourself in the sad situation of holding-down-the-power-button-for-a-very-long-time. I recommend only attempting to test hibernation after saving all of your work, and leaving only some idle application open (such as a terminal emulator that isn't doing anything).
Hibernation involves writing the state of RAM to an area of the disk. The swap space is used for this purpose. Whether it is a file or a partition, it should work in the same way. The Arch Wiki says that you should be able to hibernate if your swap is at least 2/5 of the size of RAM. Redhat provide this guidance on swap size needed for hibernation which totally contradicts the Arch Wiki! But I recommend other debugging steps before you attempt to increase the size of swap space.
If you are using Btrfs you may not be able to hibernate and Btrfs does not support swap files, according to the Arch Wiki. The default format for main partitions on Ubuntu 17.10 (and all other currently supported versions) is ext4, not Btrfs, so most users won't need to worry about this.
NirajW's answer here explains how to test and enable hibernation if it works. The command it suggests is
sudo pm-hibernate
This fails for me no matter what other adjustments I make (my system instantly hangs and never recovers). Instead I use
sudo systemctl hibernate
You may also try
echo disk | sudo tee /sys/power/state
Hibernation is the lowest possible power state (ACPI S4). What should happen is that the system shuts down, the machine is off and can be left off indefinitely, and when you turn it back on, instead of a clean boot, you log in and resume your session.
If you get a clean boot when you try to hibernate, the first thing to try is to set a boot parameter so that GRUB knows where to find the machine state to load back into RAM on resume (at least, that's how I understand the process. If this isn't accurate, please correct me).
Setting boot parameters for resume
Fresh installations of Ubuntu 17.04 and 17.10 have a swap file. If you have upgraded from an earlier installation, you will still have a swap partition. The procedure for setting up resume parameters is different if you have a swap file. Check your configuration by running
grep swap /etc/fstab
If you have a swap partition, the output will show the partition label, for example
# swap was on /dev/sda3 during installation
If there is no output, run
ls /
and look for /swapfile
.
If you have a swap partition
To add the resume parameter, you would run
sudoedit /etc/default/grub
Find the line that begins GRUB_CMDLINE_LINUX_DEFAULT=
and add to the parameters between the double quotes the string resume=/Your/Swap/Partition
, replacing /Your/Swap/Partition
with the device file path you found in /etc/fstab
. In the example I have given, the full line would probably be (depending on what other parameters were being used - quiet
and splash
are the default parameters on a desktop Ubuntu installation):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda3"
After editing this file, you must run
sudo update-grub
to write the configuration to the file GRUB reads on boot. If you forget to do this, your changes will have no effect ;) You are also advised to reboot after this before attempting hibernation.
If you have a swap file
You need to set a parameter for resume from hibernation. Your /swapfile
should be in your root partition, so set a boot parameter resume=/Your/Root/Partition
where /Your/Root/Partition
is the device file path for your root partition, for example, /dev/sda2
. If you are not sure, check the contents of /etc/fstab
to see which partition is mounted on /
You also need to set a boot parameter for the offset of the swap file. You can find the value for this parameter by running the command sudo filefrag -v /swapfile
. Here is the start of this command's output on my system (it's exactly the same as the output I got on 17.04, but I'm now using Ubuntu MATE 17.10):
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
...
The number for the offset parameter is the first number in the physical_offset
column. In my example, it's 34816
. That means that the boot parameter I'd set would be resume_offset=34816
.
To add the two boot parameters, edit the configuration file for GRUB:
sudoedit /etc/default/grub
Find the line beginning GRUB_CMDLINE_LINUX_DEFAULT=
and add the two boot parameters, to that after your changes, the line reads something like
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda2 resume_offset=34816"
but replace /dev/sda2
and 34816
with the values for your system.
Save the file, exit, and run
sudo update-grub
to write the configuration to the file GRUB reads when it is loaded. Reboot, and try hibernation again.
If you still cannot hibernate, try disabling Secure Boot in your UEFI (or BIOS) settings, if not already done.
If you still cannot hibernate, you can attempt to debug the process by setting some additional boot parameters, as explained in detail in this post on debugging sleep states. Edit /etc/default/grub
again, remove the parameters quiet
and splash
and add the debug parameters you want to try (for example, I use initctl_debug
and no_console_suspend
), run sudo update-grub
, reboot, and try again.
Information made available by the debug parameters may lead you to figure out what is going wrong and might enable you to come up with a solution. I use my own system as a case study in my answer to another question on hibernation. In my case, the problem is always buggy drivers. In every version of Ubuntu I have used, I have needed to unload the brcmfmac
module from the kernel before hibernation and reinsert it on resume. If more essential modules need to be unloaded, I use a sort of script (run with sudo bash filename
) for hibernation (replacing list of buggy modules
with the names of the actual modules that need to be pulled out):
modprobe -r list of buggy modules &&
echo disk > /sys/power/state
modprobe list of buggy modules
I use the &&
operator so that hibernation isn't attempted if unloading fails for some reason. If resume succeeds, the modules are immediately reloaded into the kernel, so the system should stay up.
You may well find different steps are needed for your particular system.
Good description but I wouldn't attempt to try it. Ubuntu needs a supported Hibernation.
– jpezz
Dec 18 '17 at 23:50
add a comment |
The main source for this answer (aside from my own experience) is this page on the Arch Linux wiki.
In this answer I use sudoedit
to make changes to root-owned files. If you prefer, you can just call your favourite text editor with root permissions, but if you want to use a GUI editor and are using Wayland, see Why don't gksu/gksudo or launching a graphical application with sudo work with Wayland?).
If you cannot hibernate, be aware that you can still (probably) save power by using the suspend state, where the state of RAM is maintained. The systemd command for this is systemctl suspend
, and it's somewhat more likely to work than hibernation.
It should be said that hibernation is not guaranteed to work; that's why initiating hibernation via the GUI is disabled by default. Even if you do everything right, you may still have problems. Your system may crash, your machine state may not be recoverable (you may lose unsaved work, for example) and you may find yourself in the sad situation of holding-down-the-power-button-for-a-very-long-time. I recommend only attempting to test hibernation after saving all of your work, and leaving only some idle application open (such as a terminal emulator that isn't doing anything).
Hibernation involves writing the state of RAM to an area of the disk. The swap space is used for this purpose. Whether it is a file or a partition, it should work in the same way. The Arch Wiki says that you should be able to hibernate if your swap is at least 2/5 of the size of RAM. Redhat provide this guidance on swap size needed for hibernation which totally contradicts the Arch Wiki! But I recommend other debugging steps before you attempt to increase the size of swap space.
If you are using Btrfs you may not be able to hibernate and Btrfs does not support swap files, according to the Arch Wiki. The default format for main partitions on Ubuntu 17.10 (and all other currently supported versions) is ext4, not Btrfs, so most users won't need to worry about this.
NirajW's answer here explains how to test and enable hibernation if it works. The command it suggests is
sudo pm-hibernate
This fails for me no matter what other adjustments I make (my system instantly hangs and never recovers). Instead I use
sudo systemctl hibernate
You may also try
echo disk | sudo tee /sys/power/state
Hibernation is the lowest possible power state (ACPI S4). What should happen is that the system shuts down, the machine is off and can be left off indefinitely, and when you turn it back on, instead of a clean boot, you log in and resume your session.
If you get a clean boot when you try to hibernate, the first thing to try is to set a boot parameter so that GRUB knows where to find the machine state to load back into RAM on resume (at least, that's how I understand the process. If this isn't accurate, please correct me).
Setting boot parameters for resume
Fresh installations of Ubuntu 17.04 and 17.10 have a swap file. If you have upgraded from an earlier installation, you will still have a swap partition. The procedure for setting up resume parameters is different if you have a swap file. Check your configuration by running
grep swap /etc/fstab
If you have a swap partition, the output will show the partition label, for example
# swap was on /dev/sda3 during installation
If there is no output, run
ls /
and look for /swapfile
.
If you have a swap partition
To add the resume parameter, you would run
sudoedit /etc/default/grub
Find the line that begins GRUB_CMDLINE_LINUX_DEFAULT=
and add to the parameters between the double quotes the string resume=/Your/Swap/Partition
, replacing /Your/Swap/Partition
with the device file path you found in /etc/fstab
. In the example I have given, the full line would probably be (depending on what other parameters were being used - quiet
and splash
are the default parameters on a desktop Ubuntu installation):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda3"
After editing this file, you must run
sudo update-grub
to write the configuration to the file GRUB reads on boot. If you forget to do this, your changes will have no effect ;) You are also advised to reboot after this before attempting hibernation.
If you have a swap file
You need to set a parameter for resume from hibernation. Your /swapfile
should be in your root partition, so set a boot parameter resume=/Your/Root/Partition
where /Your/Root/Partition
is the device file path for your root partition, for example, /dev/sda2
. If you are not sure, check the contents of /etc/fstab
to see which partition is mounted on /
You also need to set a boot parameter for the offset of the swap file. You can find the value for this parameter by running the command sudo filefrag -v /swapfile
. Here is the start of this command's output on my system (it's exactly the same as the output I got on 17.04, but I'm now using Ubuntu MATE 17.10):
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
...
The number for the offset parameter is the first number in the physical_offset
column. In my example, it's 34816
. That means that the boot parameter I'd set would be resume_offset=34816
.
To add the two boot parameters, edit the configuration file for GRUB:
sudoedit /etc/default/grub
Find the line beginning GRUB_CMDLINE_LINUX_DEFAULT=
and add the two boot parameters, to that after your changes, the line reads something like
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda2 resume_offset=34816"
but replace /dev/sda2
and 34816
with the values for your system.
Save the file, exit, and run
sudo update-grub
to write the configuration to the file GRUB reads when it is loaded. Reboot, and try hibernation again.
If you still cannot hibernate, try disabling Secure Boot in your UEFI (or BIOS) settings, if not already done.
If you still cannot hibernate, you can attempt to debug the process by setting some additional boot parameters, as explained in detail in this post on debugging sleep states. Edit /etc/default/grub
again, remove the parameters quiet
and splash
and add the debug parameters you want to try (for example, I use initctl_debug
and no_console_suspend
), run sudo update-grub
, reboot, and try again.
Information made available by the debug parameters may lead you to figure out what is going wrong and might enable you to come up with a solution. I use my own system as a case study in my answer to another question on hibernation. In my case, the problem is always buggy drivers. In every version of Ubuntu I have used, I have needed to unload the brcmfmac
module from the kernel before hibernation and reinsert it on resume. If more essential modules need to be unloaded, I use a sort of script (run with sudo bash filename
) for hibernation (replacing list of buggy modules
with the names of the actual modules that need to be pulled out):
modprobe -r list of buggy modules &&
echo disk > /sys/power/state
modprobe list of buggy modules
I use the &&
operator so that hibernation isn't attempted if unloading fails for some reason. If resume succeeds, the modules are immediately reloaded into the kernel, so the system should stay up.
You may well find different steps are needed for your particular system.
The main source for this answer (aside from my own experience) is this page on the Arch Linux wiki.
In this answer I use sudoedit
to make changes to root-owned files. If you prefer, you can just call your favourite text editor with root permissions, but if you want to use a GUI editor and are using Wayland, see Why don't gksu/gksudo or launching a graphical application with sudo work with Wayland?).
If you cannot hibernate, be aware that you can still (probably) save power by using the suspend state, where the state of RAM is maintained. The systemd command for this is systemctl suspend
, and it's somewhat more likely to work than hibernation.
It should be said that hibernation is not guaranteed to work; that's why initiating hibernation via the GUI is disabled by default. Even if you do everything right, you may still have problems. Your system may crash, your machine state may not be recoverable (you may lose unsaved work, for example) and you may find yourself in the sad situation of holding-down-the-power-button-for-a-very-long-time. I recommend only attempting to test hibernation after saving all of your work, and leaving only some idle application open (such as a terminal emulator that isn't doing anything).
Hibernation involves writing the state of RAM to an area of the disk. The swap space is used for this purpose. Whether it is a file or a partition, it should work in the same way. The Arch Wiki says that you should be able to hibernate if your swap is at least 2/5 of the size of RAM. Redhat provide this guidance on swap size needed for hibernation which totally contradicts the Arch Wiki! But I recommend other debugging steps before you attempt to increase the size of swap space.
If you are using Btrfs you may not be able to hibernate and Btrfs does not support swap files, according to the Arch Wiki. The default format for main partitions on Ubuntu 17.10 (and all other currently supported versions) is ext4, not Btrfs, so most users won't need to worry about this.
NirajW's answer here explains how to test and enable hibernation if it works. The command it suggests is
sudo pm-hibernate
This fails for me no matter what other adjustments I make (my system instantly hangs and never recovers). Instead I use
sudo systemctl hibernate
You may also try
echo disk | sudo tee /sys/power/state
Hibernation is the lowest possible power state (ACPI S4). What should happen is that the system shuts down, the machine is off and can be left off indefinitely, and when you turn it back on, instead of a clean boot, you log in and resume your session.
If you get a clean boot when you try to hibernate, the first thing to try is to set a boot parameter so that GRUB knows where to find the machine state to load back into RAM on resume (at least, that's how I understand the process. If this isn't accurate, please correct me).
Setting boot parameters for resume
Fresh installations of Ubuntu 17.04 and 17.10 have a swap file. If you have upgraded from an earlier installation, you will still have a swap partition. The procedure for setting up resume parameters is different if you have a swap file. Check your configuration by running
grep swap /etc/fstab
If you have a swap partition, the output will show the partition label, for example
# swap was on /dev/sda3 during installation
If there is no output, run
ls /
and look for /swapfile
.
If you have a swap partition
To add the resume parameter, you would run
sudoedit /etc/default/grub
Find the line that begins GRUB_CMDLINE_LINUX_DEFAULT=
and add to the parameters between the double quotes the string resume=/Your/Swap/Partition
, replacing /Your/Swap/Partition
with the device file path you found in /etc/fstab
. In the example I have given, the full line would probably be (depending on what other parameters were being used - quiet
and splash
are the default parameters on a desktop Ubuntu installation):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda3"
After editing this file, you must run
sudo update-grub
to write the configuration to the file GRUB reads on boot. If you forget to do this, your changes will have no effect ;) You are also advised to reboot after this before attempting hibernation.
If you have a swap file
You need to set a parameter for resume from hibernation. Your /swapfile
should be in your root partition, so set a boot parameter resume=/Your/Root/Partition
where /Your/Root/Partition
is the device file path for your root partition, for example, /dev/sda2
. If you are not sure, check the contents of /etc/fstab
to see which partition is mounted on /
You also need to set a boot parameter for the offset of the swap file. You can find the value for this parameter by running the command sudo filefrag -v /swapfile
. Here is the start of this command's output on my system (it's exactly the same as the output I got on 17.04, but I'm now using Ubuntu MATE 17.10):
$ sudo filefrag -v /swapfile
Filesystem type is: ef53
File size of /swapfile is 1425873920 (348114 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 32767: 34816.. 67583: 32768:
1: 32768.. 63487: 67584.. 98303: 30720:
...
The number for the offset parameter is the first number in the physical_offset
column. In my example, it's 34816
. That means that the boot parameter I'd set would be resume_offset=34816
.
To add the two boot parameters, edit the configuration file for GRUB:
sudoedit /etc/default/grub
Find the line beginning GRUB_CMDLINE_LINUX_DEFAULT=
and add the two boot parameters, to that after your changes, the line reads something like
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=/dev/sda2 resume_offset=34816"
but replace /dev/sda2
and 34816
with the values for your system.
Save the file, exit, and run
sudo update-grub
to write the configuration to the file GRUB reads when it is loaded. Reboot, and try hibernation again.
If you still cannot hibernate, try disabling Secure Boot in your UEFI (or BIOS) settings, if not already done.
If you still cannot hibernate, you can attempt to debug the process by setting some additional boot parameters, as explained in detail in this post on debugging sleep states. Edit /etc/default/grub
again, remove the parameters quiet
and splash
and add the debug parameters you want to try (for example, I use initctl_debug
and no_console_suspend
), run sudo update-grub
, reboot, and try again.
Information made available by the debug parameters may lead you to figure out what is going wrong and might enable you to come up with a solution. I use my own system as a case study in my answer to another question on hibernation. In my case, the problem is always buggy drivers. In every version of Ubuntu I have used, I have needed to unload the brcmfmac
module from the kernel before hibernation and reinsert it on resume. If more essential modules need to be unloaded, I use a sort of script (run with sudo bash filename
) for hibernation (replacing list of buggy modules
with the names of the actual modules that need to be pulled out):
modprobe -r list of buggy modules &&
echo disk > /sys/power/state
modprobe list of buggy modules
I use the &&
operator so that hibernation isn't attempted if unloading fails for some reason. If resume succeeds, the modules are immediately reloaded into the kernel, so the system should stay up.
You may well find different steps are needed for your particular system.
edited Dec 21 '17 at 20:39
answered Dec 18 '17 at 22:13
ZannaZanna
51.1k13138242
51.1k13138242
Good description but I wouldn't attempt to try it. Ubuntu needs a supported Hibernation.
– jpezz
Dec 18 '17 at 23:50
add a comment |
Good description but I wouldn't attempt to try it. Ubuntu needs a supported Hibernation.
– jpezz
Dec 18 '17 at 23:50
Good description but I wouldn't attempt to try it. Ubuntu needs a supported Hibernation.
– jpezz
Dec 18 '17 at 23:50
Good description but I wouldn't attempt to try it. Ubuntu needs a supported Hibernation.
– jpezz
Dec 18 '17 at 23:50
add a comment |
All of this works well for me for hibernating to file, thanks for the instructions! In my case I also had to get the latest stable kernel for hibernate to work, i.e. Ubuntu 17.10 and a dell xps 9370, I had to upgrade the kernel to 4.16.0rc
add a comment |
All of this works well for me for hibernating to file, thanks for the instructions! In my case I also had to get the latest stable kernel for hibernate to work, i.e. Ubuntu 17.10 and a dell xps 9370, I had to upgrade the kernel to 4.16.0rc
add a comment |
All of this works well for me for hibernating to file, thanks for the instructions! In my case I also had to get the latest stable kernel for hibernate to work, i.e. Ubuntu 17.10 and a dell xps 9370, I had to upgrade the kernel to 4.16.0rc
All of this works well for me for hibernating to file, thanks for the instructions! In my case I also had to get the latest stable kernel for hibernate to work, i.e. Ubuntu 17.10 and a dell xps 9370, I had to upgrade the kernel to 4.16.0rc
answered Mar 20 '18 at 11:08
user2003706user2003706
1
1
add a comment |
add a comment |
In my case this procedure did not work as described.
I had to replace /dev/sdaXX with the UUID for /dev/sdaXX. Its UUID was
d2175d30-aee3-418b-8c3f-d4ae61d13b3f
so the editid line in GRUB2 looked like this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=d2175d30-aee3-418b-8c3f-d4ae61d13b3f resume_offset=2367488"
After that it worked.
add a comment |
In my case this procedure did not work as described.
I had to replace /dev/sdaXX with the UUID for /dev/sdaXX. Its UUID was
d2175d30-aee3-418b-8c3f-d4ae61d13b3f
so the editid line in GRUB2 looked like this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=d2175d30-aee3-418b-8c3f-d4ae61d13b3f resume_offset=2367488"
After that it worked.
add a comment |
In my case this procedure did not work as described.
I had to replace /dev/sdaXX with the UUID for /dev/sdaXX. Its UUID was
d2175d30-aee3-418b-8c3f-d4ae61d13b3f
so the editid line in GRUB2 looked like this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=d2175d30-aee3-418b-8c3f-d4ae61d13b3f resume_offset=2367488"
After that it worked.
In my case this procedure did not work as described.
I had to replace /dev/sdaXX with the UUID for /dev/sdaXX. Its UUID was
d2175d30-aee3-418b-8c3f-d4ae61d13b3f
so the editid line in GRUB2 looked like this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=d2175d30-aee3-418b-8c3f-d4ae61d13b3f resume_offset=2367488"
After that it worked.
edited Jan 31 at 21:33
K7AAY
4,01921744
4,01921744
answered Jan 31 at 13:55
Martin EcheniqueMartin Echenique
1
1
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%2f987197%2fhow-can-i-hibernate-on-ubuntu-17-10-or-save-my-session%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
These answers may help you: unix.stackexchange.com/questions/13725/…
– user68186
Dec 17 '17 at 19:24
2
Possible duplicate of How to enable hibernation?
– Fabby
Dec 17 '17 at 19:43
I think hibernation requires the a swap to be enabled and ubuntu 17.10 only uses swap files
– mrkaspa
Dec 17 '17 at 22:32
Also enabled the auto save sessions on gnome using dconf but it does not work
– mrkaspa
Dec 17 '17 at 22:34
@mrkaspa, I think you want to say "I think hibernation requires a swap partition to be enabled and ubuntu 17.10 only uses swap files"
– jpezz
Dec 17 '17 at 23:00