Cómo apagar con consolekit sin sysvinit (pero con systemd)

8

Tengo systemd (y no sysvinit) instalado en una caja Arch Linux. Sin embargo, no puedo apagar / reiniciar con consolekit (interfaz dbus). # systemctl {shutdown,reboot}funciona bien, así que supongo que es porque consolekit no sabe cómo ponerse en contacto con el pid 1proceso.

yuyichao
fuente

Respuestas:

3

Después de echar un vistazo al código fuente, parece que consolekit (ck) usa una secuencia de comandos corta para apagar y reiniciar. Estos dos scripts se instalan como

/usr/lib/ConsoleKit/scripts/ck-system-{stop,restart}

en Arch Linux y simplemente encuentran y ejecutan {,/usr}/sbin/shutdownpara hacer eso.

Por lo tanto, parece que no hay forma de configurar ck para hacer eso ahora (por normal me refiero simplemente a editar algunos archivos /etc), y la solución es sencilla.

  1. simplemente edite esos dos scripts para ejecutar systemctl {shutdown,reboot}. (Pero al menos en Arch Linux, probablemente se sobrescribirá después de cada actualización).

  2. simplemente cree una secuencia de comandos de envoltura /sbin/shutdownque haga lo correcto. (Esto provocará un conflicto si desea instalar sysvinit más tarde, pero con suerte no será un problema).

También buscaré (y crearé si no ha habido ninguno) un informe de error sobre el problema y espero que se pueda hacer de una mejor manera en el futuro (realmente no me gusta hacer la configuración fuera /etc).

NOTA: Arch Linux ahora tiene el paquete systemd-sysvcompat que proporciona estos ( init/ halt/ shutdownetc.) como enlace simbólico a systemctl/ systemd.

yuyichao
fuente