无法将系统设置为在合上盖子时自动挂起然后休眠

无法将系统设置为在合上盖子时自动挂起然后休眠

当我合上盖子时,系统进入“挂起”模式,但休眠状态从未发生。

我知道挂起然后休眠可以正常工作,因为以下命令可以使其正常工作(挂起,然后在一段时间后休眠):

sudo /usr/lib/systemd/systemd-sleep suspend-then-hibernate

问题是它在关闭盖子时没有执行所需的顺序。就像 systemd 一样,在关闭盖子时,它会进入“挂起”而不是“挂起然后休眠”,但不知道如何/在哪里修复它。

使用当前配置,syslog 的相关部分(我认为)是:

Feb 15 20:46:52 antorcha systemd[1]: Reached target Sleep.
Feb 15 20:46:52 antorcha systemd[1]: Starting Suspend...
Feb 15 20:46:52 antorcha systemd-sleep[10863]: Suspending system...
Feb 15 20:59:19 antorcha systemd-sleep[10863]: System resumed.

(这表明它进入“暂停”状态,而不是“暂停然后休眠”状态。

这是我的 sleep.conf:

[Sleep]
HibernateDelaySec=20
HibernateState=disk

#AllowHibernation=yes
#AllowHybridSleep=yes
#AllowSuspend=yes
#AllowSuspendThenHibernate=yes
#HibernateMode=platform shutdown
#HybridSleepMode=suspend platform shutdown
#HybridSleepState=disk
#SuspendMode=suspend-then-hibernate
#SuspendState=mem standby freeze

(等待时间设置为20秒只是为了调试)

这是我的 logind.conf (全部注释掉):

[Login]
HandleLidSwitch=suspend-then-hibernate
HandleSuspendKey=suspend-then-hibernate

#HandleHibernateKey=hibernate
#HandleLidSwitchDocked=ignore
#HandleLidSwitchExternalPower=suspend
#HandlePowerKey=poweroff
#HibernateKeyIgnoreInhibited=no
#HoldoffTimeoutSec=30s
#IdleAction=ignore
#IdleActionSec=30min
#InhibitDelayMaxSec=5
#InhibitorsMax=8192
#KillExcludeUsers=root
#KillOnlyUsers=
#KillUserProcesses=no
#LidSwitchIgnoreInhibited=yes
#NAutoVTs=6
#PowerKeyIgnoreInhibited=no
#RemoveIPC=yes
#ReserveVT=6
#RuntimeDirectoryInodes=400k
#RuntimeDirectorySize=10%
#SessionsMax=8192
#SuspendKeyIgnoreInhibited=no

这是我的系统:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.10
Release:        20.10
Codename:       groovy

$ uname -a
Linux antorcha 5.8.0-40-generic #45-Ubuntu SMP Fri Jan 15 11:05:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

谢谢您的帮助。

答案1

服务 suspend-then-hibernate 已存在于 Ubuntu 中,但无论出于何种原因,系统挂起仍被调用。这可能是由于 GRUB 配置问题(启动时)或符号链接造成的。在 /etc/systemd/logind.conf 中将 suspend 改为 suspend-then-hibernate,然后取消注释修改的行。

接下来,在删除 systemd-service 链接的同时,创建调用 suspend-then-hibernate.service 所需的符号链接。

sudo rm -f /etc/systemd/system/systemd-suspend.service

sudo ln -s /usr/lib/systemd/system/systemd-suspend-then-hibernate.service /etc/systemd/system/systemd-suspend.service

接下来,通过以下方式找到 Linux Swap 驱动器的 UUID
sudo blkid /dev/sda'x':(x 是 SWAP 的分区

复制 UUID 并打开 /etc/default/grub(以 root 身份打开 nano),然后添加或更新以下内容GRUB_CMDLINE_LINUX_DEFAULT条目,因此它看起来像以下 >>>>> GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash resume=UUID=5c03967e-b9fe-4a2e-8501–05002aa51dd6"(或任何唯一唯一标识符是)

现在运行以下命令来使用新的更改更新 grub
sudo update-initramfs -u -k all
sudo update-grub
(然后重新启动)

这里有一些有用的来源和链接来研究可能的问题。
2019 关于如何正确配置挂起然后休眠的文章
有关 Ubuntu 20.10 中的睡眠然后休眠以及如何在 RAM 中保存状态的文档

相关内容