Shutdown
如何在沒有 sysvinit 的情況下使用 consolekit 關閉(但使用 systemd)
我在 Arch Linux 機器上安裝了 systemd(並且沒有 sysvinit)。但是,我無法使用控制台套件(dbus 介面)關閉/重新啟動。
# systemctl {shutdown,reboot}
工作得很好,所以我想這是因為 consolekit 不知道如何联系這個pid 1
過程。
查看原始碼後,consolekit(ck) 似乎使用了一個簡短的腳本來執行關機和重啟。這兩個腳本安裝為
/usr/lib/ConsoleKit/scripts/ck-system-{stop,restart}
在 Arch Linux 中,他們只需找到並執行
{,/usr}/sbin/shutdown
即可。因此,現在似乎沒有辦法配置 ck 來執行此操作(通常我只是指簡單地編輯 中的一些文件
/etc
),並且解決方法很簡單。
- 只需將這兩個腳本編輯為 exec
systemctl {shutdown,reboot}
。(但至少在 Arch Linux 上,每次升級後它可能會被覆蓋。)- 只需創建一個包裝腳本就
/sbin/shutdown
可以做正確的事情。(如果您想稍後安裝 sysvinit,這將導致衝突,但希望不會有問題。)我還將尋找(如果沒有的話,創建一個)關於該問題的錯誤報告,我希望將來可以以更好的方式完成(真的不喜歡在外面進行配置
/etc
)。注意:Arch Linux 現在有 systemd-sysvcompat 包,它提供這些(
init
/halt
/shutdown
等)作為systemctl
/的符號連結systemd
。