Cara mematikan dengan consolekit tanpa sysvinit (tetapi dengan systemd)

8

Saya memiliki systemd (dan tidak ada sysvinit) yang diinstal pada kotak Arch Linux. Namun, saya tidak dapat mematikan / reboot dengan consolekit (antarmuka dbus). # systemctl {shutdown,reboot}berfungsi dengan baik, jadi saya kira itu karena consolekit tidak tahu bagaimana menghubungi pid 1proses.

yuyichao
sumber

Jawaban:

3

Setelah melihat kode sumber, tampaknya consolekit (ck) menggunakan skrip pendek untuk melakukan shutdown dan reboot. Kedua skrip ini diinstal sebagai

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

di Arch Linux dan mereka hanya menemukan dan mengeksekusi {,/usr}/sbin/shutdownuntuk melakukannya.

Oleh karena itu, tampaknya tidak ada cara untuk mengkonfigurasi ck untuk melakukan itu sekarang (secara normal saya maksudnya cukup mengedit beberapa file /etc), dan pekerjaan di sekitar sangat mudah.

  1. cukup edit kedua skrip itu ke exec systemctl {shutdown,reboot}. (Tapi setidaknya di Arch Linux, itu mungkin akan ditimpa setelah setiap peningkatan.)

  2. cukup buat skrip pembungkus untuk /sbin/shutdownmelakukan hal yang benar. (Ini akan menimbulkan konflik jika Anda ingin menginstal sysvinit nanti, tetapi semoga tidak menjadi masalah.)

Saya juga akan mencari (dan membuat jika belum ada) laporan bug tentang masalah ini dan saya harap ini dapat dilakukan dengan cara yang lebih baik di masa depan (benar-benar tidak suka melakukan konfigurasi di luar /etc).

CATATAN: Arch Linux sekarang memiliki paket systemd-sysvcompat yang menyediakan ini ( init/ halt/ shutdowndll) sebagai symlink ke systemctl/ systemd.

yuyichao
sumber