Como desligar com o consolekit sem o sysvinit (mas com o systemd)

8

Eu tenho o systemd (e não o sysvinit) instalado em uma caixa do Arch Linux. No entanto, não consigo desligar / reinicializar com o consolekit (interface dbus). # systemctl {shutdown,reboot} funciona muito bem, então eu acho que é porque o consolekit não sabe como entrar em contato com o processo pid 1 .

    
por yuyichao 03.02.2012 / 08:20

1 resposta

3

Depois de dar uma olhada no código-fonte, parece que o consolekit (ck) usa um script curto para fazer o desligamento e reinicialização. Estes dois scripts estão instalados como

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

no Arch Linux e eles simplesmente encontram e exec {,/usr}/sbin/shutdown para fazer isso.

Portanto, parece não haver nenhuma maneira de configurar o ck para fazer isso agora (por normal eu apenas quero dizer, simplesmente edite alguns arquivos em /etc ), e o trabalho é simples.

  1. simplesmente edite esses dois scripts para exec systemctl {shutdown,reboot} . (Mas pelo menos no Arch Linux, provavelmente será sobregravado após cada atualização).

  2. basta criar um script de wrapper em /sbin/shutdown para fazer a coisa certa. (Isso causará conflito se você quiser instalar o sysvinit mais tarde, mas esperamos que não seja um problema.)

Eu também procurarei (e criarei se não houver um) um relatório de bug sobre o problema e espero que isso possa ser feito de uma maneira melhor no futuro (realmente não gosto de fazer configuração fora de /etc ).

OBSERVAÇÃO: O Arch Linux agora tem o pacote systemd-sysvcompat que fornece esses ( init / halt / shutdown etc.) como um link simbólico para systemctl / systemd .

    
por 04.02.2012 / 13:08