Comment arrêter avec consolekit sans sysvinit (mais avec systemd)

8

J'ai systemd (et aucun sysvinit) installé sur une boîte Arch Linux. Cependant, je ne peux pas arrêter / redémarrer avec consolekit (interface dbus). # systemctl {shutdown,reboot}fonctionne très bien, donc je suppose que c'est parce que consolekit ne sait pas comment contacter le pid 1processus.

yuyichao
la source

Réponses:

3

Après avoir regardé le code source, il semble que consolekit (ck) utilise un court script pour faire l'arrêt et le redémarrage. Ces deux scripts sont installés en tant que

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

dans Arch Linux et ils trouvent et exécutent {,/usr}/sbin/shutdownsimplement cela.

Par conséquent, il ne semble pas possible de configurer ck pour le faire maintenant (en général, je veux simplement dire simplement éditer un ou plusieurs fichiers /etc), et le travail est simple.

  1. éditez simplement ces deux scripts pour les exécuter systemctl {shutdown,reboot}. (Mais au moins sur Arch Linux, il sera probablement écrasé après chaque mise à niveau.)

  2. créez simplement un script wrapper /sbin/shutdownqui fait la bonne chose. (Cela provoquera un conflit si vous souhaitez installer sysvinit plus tard, mais ce n'est pas un problème, espérons-le.)

Je vais également chercher (et créer s'il n'y en a pas eu) un rapport de bogue sur le problème et j'espère que cela pourra être fait d'une meilleure manière à l'avenir (je n'aime vraiment pas faire la configuration à l'extérieur /etc).

REMARQUE: Arch Linux dispose désormais du package systemd-sysvcompat qui les fournit ( init/ halt/ shutdownetc.) en tant que lien symbolique vers systemctl/ systemd.

yuyichao
la source