Shutdown

如何在沒有 sysvinit 的情況下使用 consolekit 關閉(但使用 systemd)

  • February 16, 2012

我在 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),並且解決方法很簡單。

  1. 只需將這兩個腳本編輯為 exec systemctl {shutdown,reboot}。(但至少在 Arch Linux 上,每次升級後它可能會被覆蓋。)
  2. 只需創建一個包裝腳本就/sbin/shutdown可以做正確的事情。(如果您想稍後安裝 sysvinit,這將導致衝突,但希望不會有問題。)

我還將尋找(如果沒有的話,創建一個)關於該問題的錯誤報告,我希望將來可以以更好的方式完成(真的不喜歡在外面進行配置/etc)。

注意:Arch Linux 現在有 systemd-sysvcompat 包,它提供這些(init/ halt/shutdown等)作為systemctl/的符號連結systemd

引用自:https://unix.stackexchange.com/questions/30726