sudo dpkg-reconfigure -pmedium uswsusp
# Answer "Yes" to continue without swap space
# Select "/dev/disk/by-uuid/20562a02-cfa6-42e0-bb9f-5e936ea763d0" replace the UUID with the result from the previous findmnt command
# Encrypt: "No"
[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep
[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
这是我为使其与 Ubuntu 18.04 一起工作所做的工作。
/swapfile
至少拥有 RAM 的大小/swapfile
:uswsusp
以正确使用交换文件:sudo systemctl edit systemd-hibernate.service
使用以下内容编辑 SystemD hibernate 服务并填充它:/swapfile
:/etc/default/grub
通过编辑和修改以下行,将 Grub 配置为从交换文件恢复:/etc/initramfs-tools/conf.d/resume
:现在您可以使用
sudo systemctl hibernate
.也可以创建这些脚本:
因此,您可以
gotosleep
使用gotohibernation
.您必须能够执行
sudo s2both
,sudo s2ram
并且sudo systemctl hibernate
无需输入密码才能使之前的脚本正常工作。例如,您可以通过创建一个
powerdev
组、将当前用户添加到其中并配置以下 sudoers 配置(使用 编辑它sudo visudo -f /etc/sudoers.d/powerdev
)来做到这一点:使用的文档:
使用 uswusp 使用交换文件休眠
尽管可以休眠以交换文件,并且可以通过设置内核参数与 systemd hibernate 一起使用。但是,我无法让它恢复,所以转而使用uswsusp (userspace software suspend)。以下是我在 Ubuntu 17.04/17.10 上使用的步骤。
创建交换文件
创建格式化的 4GiB 交换文件的命令,安装并添加到
/etc/fstab
:验证交换文件分区
安装用户空间软件挂起(uswsusp)
配置 uswsusp
创建
/etc/uswsusp.conf
和重新创建initramfs
:Yes
to '在没有有效交换空间的情况下继续?' (向导尚未设置交换文件。)findmnt
。(注意:不是交换文件本身)注意:手动进行的任何更改
/etc/uswsusp.conf
都需要initramfs
使用以下命令重新创建:测试uswusp休眠
屏幕上应该有
snapshot
关于休眠和恢复的消息。将 s2disk 与 systemd 休眠一起使用
默认情况下,systemd 将使用它自己的休眠命令,因此通过覆盖以下命令将它们替换为 uswusp 命令
systemd-hibernate.service
:在打开的文本编辑器中输入以下文本(需要空白的 ExecStart)。然后保存退出:
这将创建
/etc/systemd/system/systemd-hibernate.service.d/override.conf
具有覆盖详细信息的文件。测试 systemd 休眠:
注意:要检查 systemd
override.conf
是否已创建、加载且没有错误,请运行:参考:
我已经快速阅读了本教程,如果我理解正确,您只需指定
resume
Linux 命令行的选项。使用 Grub2 非常简单,并且您的更改将始终保留。您需要编辑/etc/default/grub
文件,特别是这一行:之后,运行
sudo update-grub
以使更改生效。更改
GRUB_CMDLINE_LINUX
不会影响您拥有的其他 Linux 安装(因为/etc/grub.d/30_os-prober
不使用此变量)。关于您遇到的问题:交换文件的分区是否加密?如果是这样,休眠将不起作用。如果没有,那么 的输出
filefrag -v /swapfile
可能会有所帮助。Ubuntu 22.04
uswusp已弃用。你仍然可以将它用于Ubuntu <= 20.04。要在 Ubuntu 22.04 上查找交换偏移量:
Run sudo filefrag -v /swapfile
"physical_offset"
列中,复制第一行号(不带点!)。值示例:1234567
。来源:如何在 Ubuntu 上启用休眠(使用交换文件时)
对于 Ubuntu 22.04,所有其他步骤保持不变,因此除了安装和使用uswusp之外,您可以遵循其他答案。
我花了几个小时在关机菜单上获得带有休眠选项的 KDE(霓虹灯),既然我已经解决了,我决定在这里分享它。如果你使用 KDE,你应该创建一个文件“/etc/polkit-1/localauthority/10-vendor.d/hibernate.pkla”,内容如下:
我在这里:https ://forum.kde.org/viewtopic.php?f=309&t=135294