Atasi error systemctl yang disebabkan oleh sistem init non-systemd atau konfigurasi systemd yang rusak.
Gejala
Menjalankan perintah systemctl pada instans Linux menghasilkan salah satu error berikut:
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to get D-Bus connection: xxx xxx.
Penyebab
systemctl adalah alat baris perintah untuk systemd, yaitu sistem init dan manajer layanan Linux. Error ini terjadi karena alasan berikut:
-
Sistem tidak menggunakan systemd sebagai sistem init-nya.
-
Beberapa distribusi Linux lama atau ringan (seperti Devuan, Alpine Linux, atau Void Linux) secara default menggunakan sistem init lain (misalnya OpenRC, SysVinit, atau runit). Sebagai contoh, Windows Subsystem for Linux (WSL) secara default menggunakan SysVinit.
-
Jika Anda menjalankan perintah tersebut di dalam kontainer Docker atau Podman yang tidak dikonfigurasi untuk menggunakan systemd, error ini akan muncul.
-
-
Sistem menggunakan systemd, tetapi systemd mengalami kerusakan atau salah konfigurasi.
Solusi
-
Hubungkan ke instans Linux.
-
Periksa apakah sistem menggunakan systemd sebagai sistem init-nya:
ps -p 1 -o comm=-
Output kosong atau bukan systemd: Sistem tidak menggunakan systemd. Gunakan perintah manajemen layanan sesuai dengan sistem init yang digunakan.
CatatanJika Anda memerlukan skrip
systemctl, gunakan distribusi Linux yang mendukung systemd, atau jalankan sistem Linux yang mendukung systemd di dalam kontainer Docker.Sebagai contoh, jika sistem menggunakan SysVinit (output-nya adalah init), gunakan perintah
servicesebagai gantisystemctl. Tabel berikut membandingkan perintah umum:Operasi/perintah
SysVinit
Systemd
Start service
sudo service service_name startsudo systemctl start service_nameStop service
sudo service service_name stopsudo systemctl stop service_nameRestart service
sudo service service_name restartsudo systemctl restart service_nameCheck service status
sudo service service_name statussudo systemctl status service_nameEnable auto-start
sudo chkconfig service_name onsudo systemctl enable service_nameDisable auto-start
sudo chkconfig service_name offsudo systemctl disable service_name -
Output-nya adalah systemd: Sistem menggunakan systemd. Jika error tetap muncul, systemd mungkin mengalami kerusakan atau salah konfigurasi. Rujuk dokumentasi resmi distribusi Anda untuk memulihkan layanan systemd.
-