Как выключить консолькит без sysvinit (но с systemd)


8

Я установил systemd (и не sysvinit) на коробке Arch Linux. Однако я не могу выключить / перезагрузить с помощью consolekit (интерфейс dbus). # systemctl {shutdown,reboot}работает просто отлично, так что я думаю, это потому, что consolekit не знает, как связаться с pid 1процессом.

Ответы:


3

После просмотра исходного кода кажется, что 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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.