Systemd
重啟前安全暫停
我有一台 kiosk Linux Debian 電腦。
這台電腦沒有物理電源按鈕,也沒有鍵盤。
我希望允許使用者在不破壞文件系統的情況下停止和/或重新啟動這台電腦,同時仍然能夠使用 ssh 遠端執行此操作。
我的想法:
- 在圖形應用程序中創建停止/重啟按鈕
- 按下按鈕時,電腦啟動關機
- 當電腦準備好關閉電源時(每個文件系統都已解除安裝或只讀),將顯示一條消息:“您現在可以拔掉電源線,或等待 30 秒自動重啟”
- 使用 ssh 遠端執行此操作時,無需親自到場即可完成重啟
想法:
- 依賴於每個文件系統處於穩定狀態時觸發的 systemd 功能。哪一個?
- 按下軟體按鈕時使根分區只讀,因此可以安全地關閉電腦。但這不需要那麼容易的改變
- 依賴 GRUB2:從軟體啟動的關機和重新啟動都導致電腦重新啟動,並使用顯示消息並等待密鑰的特殊 GRUB2 條目(理想情況下,當使用 ssh 完成時,呼叫正常 GRUB2 條目,允許立即啟動。至於來電時冷啟動)
如果不清楚,請隨時提出問題。
您可以中繼 GRUB 超時以允許使用者拔出系統
在啟動前
/etc/default/grub
設置GRUB_TIMEOUT=30
為 30s 超時預設條目允許使用者在 linux 啟動前斷開電源。在 GRUB 菜單等待超時時,整個系統處於只讀狀態,因此斷開電源應該沒有任何危害。
Grub 還允許您顯示背景圖像,例如可以顯示一個巨大的粗體文本,向使用者表明斷開電源是安全的。
優點:
- 很容易實現
- 升級系統的時候大概不會壞
- 可以輕鬆地向使用者提供操作說明。
- 斷電時系統損壞的風險最小
- 標準
reboot
和poweroff
命令就像在普通系統上一樣工作。缺點:
- 每次開機延遲30s