systemctl 休眠并重新启动?

use*_*388 5 linux grub2 systemd

我在不同的卷上有两个 Linux 映像,以及一个与它们分开的 /boot 分区。我希望我的用户能够在晚上休眠他们的“桌面 Linux 操作系统”,重新启动到“渲染场 Linux 操作系统”。

早上,“渲染场操作系统”将关闭并将系统引导回休眠的桌面 Linux 会话。

我想我可以使用一个脚本来启用此功能,该脚本修改 grub2 配置然后运行systemctl hibernate​​,这让我完成了大部分工作,但实际上我需要系统不仅仅是休眠正在运行的操作系统;我需要它来休眠正在运行的操作系统,然后重新启动。

似乎没有任何规定让 systemctl 休眠然后重新启动。它可以做其中之一或另一个。

我怎样才能做到这一点?

use*_*686 3

您可以重新配置现有的“休眠”模式以重新启动而不是关闭电源/etc/systemd/sleep.conf

[Sleep]
HibernateMode=reboot
Run Code Online (Sandbox Code Playgroud)

或者您可以对“混合睡眠”模式(即休眠+挂起)执行相同的操作:

[Sleep]
HybridSleepMode=reboot
Run Code Online (Sandbox Code Playgroud)

该值直接对应于 systemd 将写入的文本/sys/power/disk


背景:systemd 实际上并不执行休眠,它只是告诉内核这样做:

  1. systemd 将所需的休眠后模式(用于 S4 关闭的“平台”、用于混合睡眠的“挂起”或用于自定义的“重新启动”)写入到文件中/sys/power/disk
  2. systemd 将休眠命令“disk”写入文件/sys/power/state
  3. 内核会完成剩下的工作,并且在计算机唤醒之前不会返回到 systemd。