
我在不同的磁碟區上有兩個 Linux 映像,以及一個與它們分開的 /boot 分割區。我希望我的用戶能夠在晚上休眠他們的“桌面 Linux 作業系統”,重新啟動到“渲染場 Linux 作業系統”。
早上,「渲染場作業系統」將關閉並將系統引導回休眠的桌面 Linux 會話。
我想我可以使用腳本來啟用此功能,該腳本修改 grub2 配置然後運行systemctl hibernate
,這讓我完成了大部分工作,但實際上我需要係統不僅僅是休眠正在運行的作業系統;我需要它來休眠正在運行的作業系統,然後重新啟動。
沒有似乎可以為 systemctl 提供休眠然後重新啟動的任何設定。它可以做其中一個或另一個。
我怎樣才能做到這一點?
答案1
您可以重新配置現有的「休眠」模式以重新啟動,而不是關閉電源/etc/systemd/sleep.conf
:
[Sleep]
HibernateMode=reboot
或者您可以對「混合睡眠」模式(即休眠+掛起)執行相同的操作:
[Sleep]
HybridSleepMode=reboot
該值直接對應於 systemd 將寫入的文字/sys/power/disk
。
背景:systemd 其實不會執行休眠,它只是告訴核心這樣做:
- systemd 將所需的休眠後模式(用於 S4 關閉的「平台」、用於混合睡眠的「掛起」或用於自訂的「重新啟動」)寫入到檔案中
/sys/power/disk
。 - systemd 將休眠指令「disk」寫入檔案
/sys/power/state
。 - 核心會完成剩下的工作,並且在電腦喚醒之前不會返回到 systemd。