sysvinit를 사용하지 않고(단, systemd를 사용하여) 콘솔킷을 사용하여 종료하는 방법

sysvinit를 사용하지 않고(단, systemd를 사용하여) 콘솔킷을 사용하여 종료하는 방법

Arch Linux 시스템에 sysvinit 없이 systemd를 설치했습니다. 그러나 콘솔킷(dbus 인터페이스)을 사용하여 종료/다시 시작할 수 없습니다. # systemctl {shutdown,reboot}잘 작동하는데, 콘솔킷이 프로세스에 접속하는 방법을 모르기 때문인 것 같습니다 pid 1.

답변1

소스 코드를 살펴보면 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).

init참고: Arch Linux에는 이제 이러한 항목( // haltshutdown) 을 systemctl/ 에 대한 심볼릭 링크 로 제공하는 systemd-sysvcompat 패키지가 있습니다 systemd.

관련 정보