在“系统设置”->“电源管理器”->“节能”中没有“休眠”选项。
创建的文件/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
内容为:
[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-m$
ResultActive=yes
软件包pm-utils
和uswsusp
安装。通过pm-hibernation
成功进入休眠模式。
答案1
这是我在 Kubuntu 20.04 和与可用 RAM 大小相同的交换分区上工作的方法。这在某种程度上是对此处和此处看到的其他答案的简化Ubuntu 20.04 的另一个答案。
首先:不需要安装pm-utils
或:我的系统中没有它们,但是休眠功能可以与两者配合使用,uswsusp
并且可以使用 KDE 菜单中的休眠按钮。hibernate
sudo systemctl hibernate
整个过程如下:
找到交换分区的名称和 UUID
sudo swapon --show=NAME,UUID
(就我而言
/dev/dm-2
- 它必须以 /dev 开头,否则您将使用交换文件)通过在行末尾(在内)添加以下内容来编辑
/etc/default/grub
并更改的值:GRUB_CMDLINE_LINUX_DEFAULT
"
resume=UUID=<UUID>
(
<UUID>
用之前找到的 UUID 替换)运行
update-grub
以更新实际的 grub 配置/etc/default/grub
写入以下命令:
cat << "EOF" > /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
[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
EOF
- 注销和登录
现在您可以使用sudo systemctl hibernate
KDE 菜单中的休眠按钮或休眠模式进入休眠状态。
答案2
/home
我已经在分区中创建了一个交换文件。
安装 pm-utils 和 uswsusp。
sudo apt install pm-utils uswsusp
创建交换文件并赋予必要的权限:
fallocate -l 8G /home/swapfile && chmod 600 /home/swapfile && \ mkswap /home/swapfile && swapon /home/swapfile
编辑
/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
:cat << "EOF" > /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla [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 EOF
获取交换偏移量:
swap-offset /home/swapfile
获取 /home/swapfile 的 UUID:
findmnt -no SOURCE,UUID -T /home/swapfile
编辑
/etc/default/grub
和添加GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=861920c2-557d-4910-9b3e-b8a7be8f4fae resume_offset=12900352"
编辑服务 systemd-logind.service:
systemct edit systemd-logind.service
并添加
[Service] ProtectHome=read-only
使用以下方法更新 GRUB
update-grub
- 重启
答案3
我已经在配备 USB3 扩展坞的 Dell Precsion 5550、Ubuntu 20.04 上测试了此解决方案(新按钮)。结果:在对接时,它会进入休眠状态,但在恢复时会冻结。如果在休眠之前断开对接,它会恢复。结论:不够坚固。
我坚持的sudo systemctl hibernate
解决方案如何在 Ubuntu 20.04 中启用休眠选项?
它看起来很坚固,并且无论在对接还是非对接的情况下都可以工作。
附言:如果 Ubuntu 默认有一个完善的休眠选项就好了。(另外,如果能在 Dell Precision 5550 上实现真正的 S3 睡眠功能就好了,目前的 S1/S2 选项很耗电)
答案4
我不得不修改Mauro 的解决方案在我的 Kubuntu 22.04 上,需要做一些工作才能使休眠功能完全正常工作:
第四步替换/etc
为/var/lib
:
~$ sudo nano /var/lib/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
然后将以下内容写入文件:
[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.free>
ResultActive=yes
因此,休眠按钮工作正常。