系统的电源状态一共分为:s0-s5六种状态,其中s0是启动状态,s1-s4是睡眠状态,s5是关闭状态。而我们说的休眠实际是s1-s4中的,虽然统称睡眠,级别却有着差异。具体了解可参考微软官方电源部分文章:系统电源状态
我的电脑是Thinkpad x1 carbon gen10,系统为ubuntu 22.04,目前已经升级为pro。默认电源状态为suspend,现在需要改为hibernation。
通过以下命令找到swapfile的UUID,
1
2
|
digops@digops:~$ findmnt -no UUID -T /swapfile
1db0f23d-a4b0-4c0c-812f-d3b66531a3d0
|
通过以下命令找到swapfile的offset
1
2
3
4
5
6
7
8
9
10
11
|
digops@digops:~$ sudo filefrag -v /swapfile|head -n 10
Filesystem type is: ef53
File size of /swapfile is 16384000000 (4000000 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 10239: 28968960.. 28979199: 10240:
1: 10240.. 30719: 38252544.. 38273023: 20480: 28979200:
2: 30720.. 63487: 38207488.. 38240255: 32768: 38273024:
3: 63488.. 96255: 38174720.. 38207487: 32768: 38240256:
4: 96256.. 129023: 38141952.. 38174719: 32768: 38207488:
5: 129024.. 161791: 38109184.. 38141951: 32768: 38174720:
6: 161792.. 194559: 38076416.. 38109183: 32768: 38141952:
|
复制 physical_offset: 中第一行第一列(0:)的值,不含后面的两个“.”,在此示例中是 28968960 。
将以上swap的信息编写到 /etc/default/grub

更新grub配置
1
2
3
4
5
|
sudo vim /etc/initramfs-tools/conf.d/resume
## 添加如下行,文件有可能不存在,直接新建即可。
resume=UUID=1db0f23d-a4b0-4c0c-812f-d3b66531a3d0 resume_offset=28968960"
sudo update-initramfs -c -k all
|
1
|
sudo systemctl hibernate
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
sudo vim /usr/share/applications/hibernation-mode.desktop
## 添加如下内容
[Desktop Entry]
Type=Application
Name=Hibernation Mode
GenericName=Hibernation Mode
Comment=Enter Hibernation Mode
NoDisplay=false
Icon=drive-multidisk
Exec=systemctl hibernate
Terminal=true
Categories=System;Utility;Settings;
|
一旦您在 Ubuntu 22.04 LTS 的系统托盘关闭/注销菜单中添加休眠选项,只需单击几下,您就可以轻松地休眠 Ubuntu 22.04 LTS。
为此,请在 /etc/polkit-1/localauthority/50-local.d/ 目录中创建一个新文件 com.ubuntu.enable-hibernate.pkla 并使用“gedit”文本编辑器打开它,如下所示:
1
|
$sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
|
在 com.ubuntu.enable-hibernate.pkla 文件中键入以下代码行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[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
|
完成后,按 + S 保存文件。
现在,使用以下命令更新 APT 包存储库缓存:
使用以下命令安装 GNOME 扩展管理器应用程序:
1
|
$ sudo apt install gnome-shell-extension-manager
|
要确认安装,请按Y,然后按。
应安装 GNOME 扩展管理器应用程序。
安装 GNOME Extension Manager 应用程序后,从 Ubuntu 22.04 LTS 的“应用程序菜单”将其打开。
导航至 GNOME Extension Manager 应用程序的“浏览”部分**[1],搜索 hibernate[2],然后单击“休眠状态按钮[3]”**,如以下屏幕截图所示:
单击“安装”。
单击“安装”。
应安装“休眠状态按钮”扩展。

1
|
systemctl status sleep.target sleep.target - Sleep
|
1
|
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
|
1
|
systemctl status sleep.target
|