Kubuntu 20.04 中的休眠

Kubuntu 20.04 中的休眠

在“系统设置”->“电源管理器”->“节能”中没有“休眠”选项。

创建的文件/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-utilsuswsusp安装。通过pm-hibernation成功进入休眠模式。

答案1

这是我在 Kubuntu 20.04 和与可用 RAM 大小相同的交换分区上工作的方法。这在某种程度上是对此处和此处看到的其他答案的简化Ubuntu 20.04 的另一个答案

首先:不需要安装pm-utils或:我的系统中没有它们,但是休眠功能可以与两者配合使用,uswsusp并且可以使用 KDE 菜单中的休眠按钮。hibernatesudo systemctl hibernate

整个过程如下:

  1. 找到交换分区的名称和 UUID

    sudo swapon --show=NAME,UUID

    (就我而言/dev/dm-2- 它必须以 /dev 开头,否则您将使用交换文件)

  2. 通过在行末尾(在内)添加以下内容来编辑/etc/default/grub并更改的值:GRUB_CMDLINE_LINUX_DEFAULT"

    resume=UUID=<UUID>

    <UUID>用之前找到的 UUID 替换)

  3. 运行update-grub以更新实际的 grub 配置/etc/default/grub

  4. 写入以下命令:

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
  1. 注销和登录

现在您可以使用sudo systemctl hibernateKDE 菜单中的休眠按钮或休眠模式进入休眠状态。

答案2

/home我已经在分区中创建了一个交换文件。

  1. 安装 pm-utils 和 uswsusp。

    sudo apt install pm-utils uswsusp
    
  2. 创建交换文件并赋予必要的权限:

    fallocate -l 8G /home/swapfile && chmod 600 /home/swapfile && \
    mkswap /home/swapfile && swapon /home/swapfile
    
  3. 编辑/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
    
  4. 获取交换偏移量:

    swap-offset /home/swapfile
    
  5. 获取 /home/swapfile 的 UUID:

    findmnt -no SOURCE,UUID -T /home/swapfile
    
  6. 编辑/etc/default/grub和添加

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=861920c2-557d-4910-9b3e-b8a7be8f4fae resume_offset=12900352"
    
  7. 编辑服务 systemd-logind.service:

    systemct edit systemd-logind.service
    

    并添加

    [Service] 
    
    ProtectHome=read-only
    
  8. 使用以下方法更新 GRUBupdate-grub

  9. 重启

答案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

因此,休眠按钮工作正常。

相关内容