Cách tắt máy với consolekit mà không cần sysvinit (nhưng với systemd)


8

Tôi đã cài đặt systemd (và không có sysvinit) trên hộp Arch Linux. Tuy nhiên, tôi không thể tắt / khởi động lại với consolekit (giao diện dbus). # systemctl {shutdown,reboot}chỉ hoạt động tốt, vì vậy tôi đoán đó là vì consolekit không biết cách liên hệ với pid 1quy trình.

Câu trả lời:


3

Sau khi xem mã nguồn, có vẻ như consolekit (ck) sử dụng một đoạn script ngắn để thực hiện tắt máy và khởi động lại. Hai tập lệnh này được cài đặt là

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

trong Arch Linux và họ chỉ cần tìm và {,/usr}/sbin/shutdownthực thi để làm điều đó.

Do đó, dường như không có cách nào để cấu hình ck để làm điều đó ngay bây giờ (thông thường tôi chỉ có nghĩa là chỉ cần chỉnh sửa một số tệp trong /etc) và công việc xung quanh rất đơn giản.

  1. chỉ cần chỉnh sửa hai tập lệnh này để thực thi systemctl {shutdown,reboot}. (Nhưng ít nhất là trên Arch Linux, nó có thể sẽ bị ghi đè sau mỗi lần nâng cấp.)

  2. chỉ cần tạo một tập lệnh bao bọc /sbin/shutdownđể làm điều đúng. (Điều này sẽ gây ra xung đột nếu bạn muốn cài đặt sysvinit sau đó, nhưng hy vọng không có vấn đề gì.)

Tôi cũng sẽ tìm kiếm (và tạo nếu không có) một báo cáo lỗi về vấn đề này và tôi hy vọng nó có thể được thực hiện theo cách tốt hơn trong tương lai (thực sự không muốn thực hiện cấu hình bên ngoài /etc).

LƯU Ý: Arch Linux hiện có gói systemd-sysvcompat cung cấp các gói này ( init/ halt/ shutdownv.v.) dưới dạng symlink đến systemctl/ systemd.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.