如何调试为什么“systemctl hibernate”有效,但“systemctl suspend-then-hibernate”无效?

如何调试为什么“systemctl hibernate”有效,但“systemctl suspend-then-hibernate”无效?

我当前的设置:

  • Ubuntu 18.04.1
  • 带有 LVM2 的加密分区。
  • 滨海机动车
    • 根 (/dev/mapper/it--vg-root)
    • 交换(/dev/mapper/it--vg-swap_1)
  • 映射到 /dev/dm-3 的随机 cryptswap,无论它是什么,现在似乎已经消失了。

我做了什么:

  • /dev/mapper/it--vg-swap_1通过 fstab更改系统的交换分区
  • 将 UUID 更改/etc/initramfs-tools/conf.d/resume为新的交换分区并运行sudo update-initramfs -u
  • 将新交换分区的 UUID添加resume=UUID=XXXXXXX到变量并运行GRUB_CMDLINE_LINUX_DEFAULT=sudo update-grub
  • /etc/systemd/sleep.conf我创建了一个包含以下内容的 文件:
    [Sleep]
    HibernateDelaySec=10
    
  • 我重启了整个系统

然后我测试了两种情况:

  1. systemctl hibernate

系统正常进入休眠状态。系统重新启动,要求我输入解密密码,并打开我之前打开的所有窗口和应用程序。

  1. systemctl suspend-then-hibernate

systemd 进入挂起模式。我的电源键通过闪烁来表示。大约十秒钟后(注意配置sleep.conf),它重新打开,屏幕上显示闪烁的终端光标。然后它进入休眠状态。

没有迹象表明系统仍在运行。按下电源按钮后,系统重新启动,要求输入加密密钥,并在我输入后继续启动。

登录后,所有之前打开的应用程序都不再打开。一切都关闭并丢失。

看起来好像计算机要么完全关闭,要么暂停后转储的内存实际上是空的,因为暂停已经将其转储到交换分区。

但这些只是随机理论。

我的问题是:我如何调试这个问题并找到问题所在?

如果你知道为什么会发生这种情况,我也会接受 :)

答案1

与 Ubuntu 20.04(systemd 245)一样,您还必须在睡眠部分下包含以下行:

AllowSuspend=yes
AllowHibernation=yes
AllowSuspendThenHibernate=yes

另外,您确定要在挂起状态 10 秒后进入休眠状态吗?

相关内容