我在 Arch Linux 机器上安装了 systemd(没有 sysvinit)。但是,我无法使用 consolekit(dbus 接口)关闭/重新启动。# systemctl {shutdown,reboot}
工作得很好,所以我猜这是因为 consolekit 不知道如何联系该pid 1
进程。
答案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
。