Pindah dari Arch/systemd ke Artix menuntut pemahaman peran systemd dan penggantinya. Episode ini membahas komponen eudev, elogind, dan D-Bus, cara mentranslasi unit systemd ke init-script Artix, serta mengapa layanan yang bergantung pada systemd bisa gagal.

Bagi pengguna yang datang dari Arch atau distro systemd lainnya, tantangan terbesar Artix bukan install-nya, melainkan migrasi — memindahkan layanan dari unit systemd ke init-script Artix. Episode 18 membedah peran systemd satu per satu, komponen penggantinya, dan bagaimana menerjemahkan service dengan benar.
Pemahaman ini membuat kalian tidak tersesat saat menemui dokumentasi yang hanya menyebut systemctl. Kalian akan bisa memetakan setiap perintah systemd ke padanannya di OpenRC, runit, s6, atau dinit.
systemd bukan hanya PID 1. Ia menyatukan banyak peran: init system, service manager, device manager (udev), login manager (logind), resolver (resolved), journal (journald), dan lainnya. Di Artix, setiap peran dipegang komponen khusus.
Peta penggantiannya:
systemd-init -> OpenRC / runit / s6 / dinit
systemd-udevd -> eudev
systemd-logind -> elogind
systemd-journal -> log aplikasi masing-masing + rc-log
D-Bus -> D-Bus (sama, dijalankan via init)systemd-udevd digantikan eudev, systemd-logind digantikan elogind, dan journal digantikan log aplikasi biasa. Tidak ada satu daemon yang merangkap semuanya.
Perintah journalctl tidak akan ada. Log ada di file per-aplikasi di /var/log/ atau log service. Perintah systemctl juga tidak ada — digantikan rc-service, sv, s6-svc, atau dinitctl sesuai init. Setelah kalian hafal pemetaan ini, sisa migrasi hanyalah masalah menulis file konfigurasi.
Unit systemd menyimpan metadata service dalam format key-value. Contoh unit:
[Unit]
Description=Contoh service
After=network.target
[Service]
ExecStart=/usr/bin/example --daemon
Restart=on-failure
[Install]
WantedBy=multi-user.targetWantedBy=multi-user.target menentukan bahwa service diaktifkan pada runlevel multi-user. Ini harus dipetakan ke runlevel default di Artix.
Di OpenRC, unit di atas diterjemahkan menjadi script di /etc/init.d/:
#!/sbin/openrc-run
description="Contoh service"
depend() {
need net
}
start() {
ebegin "Memulai contoh service"
start-stop-daemon --start --background --make-pidfile \
--pidfile /run/example.pid --exec /usr/bin/example
eend $?
}
stop() {
ebegin "Menghentikan contoh service"
start-stop-daemon --stop --pidfile /run/example.pid
eend $?
}need net menggantikan After=network.target. start-stop-daemon menangani start, background, dan PID file. Setelah script dibuat, daftarkan dengan rc-update add.
Untuk runit, buat direktori service dengan script run yang mengeksekusi daemon; untuk s6, tulis service database dengan run script; untuk dinit, tulis file .dinit deklaratif:
type = process
command = /usr/bin/example --daemon
depends-on = network
restart = on-failuredepends-on = network di dinit setara dengan After=network.target di systemd. Semua init memuat informasi yang sama — hanya formatnya yang berbeda.
Beberapa layanan secara implisit bergantung pada systemd: memakai systemctl untuk berkomunikasi, menulis ke journal, atau mengharapkan socket systemd. Tanpa systemd, layanan ini gagal dengan cara yang membingungkan.
Diagnosa awal yang baik: jalankan service secara manual di foreground dan lihat pesan errornya:
sudo -u http /usr/bin/example --foregroundsudo -u http /usr/bin/example --foreground menampilkan error langsung di terminal. Jika pesan menyebut systemctl, journald, atau DBUS_SESSION_BUS_ADDRESS, itu sumber masalahnya.
Untuk layanan yang memanggil systemctl, cari opsi --systemd-ignore atau ganti dengan perintah init. Untuk yang butuh D-Bus, pastikan service dbus aktif di init. Untuk yang menulis ke journal, arahkan ke file log biasa lewat konfigurasi aplikasi:
rc-update add dbus default
rc-service dbus startPerintah rc-service dbus start memastikan bus tersedia untuk aplikasi yang membutuhkannya. Mayoritas aplikasi modern hanya butuh D-Bus dan eudev untuk bekerja normal.
Migrasi Arch ke Artix dilakukan dengan menukar repo di /etc/pacman.conf dari Arch ke Artix, lalu reinstall paket kunci. Prosedur ini dijelaskan lengkap di wiki Artix. Persiapan penting: backup penuh dulu (episode 16), lalu:
sudo pacman -S artix-base artix-base-openrcartix-base-openrc memasang fondasi init. Setelah init terpasang, paket-paket yang berakhiran systemd harus diganti dengan varian Artix.
Verifikasi bahwa tidak ada paket yang menyeret systemd:
pacman -Q | grep systemdOutput pacman -Q | grep systemd menampilkan sisa paket yang terkait systemd. Idealnya kosong atau hanya alat bantu yang tidak menyeret daemon systemd aktif.
Episode 18 memetakan peran systemd dan penggantinya di Artix: init, eudev, elogind, dan D-Bus. Kalian juga belajar menerjemahkan unit systemd ke script OpenRC, runit, s6, atau dinit, serta menangani layanan yang bergantung pada systemd.
Inti yang harus dibawa pulang:
systemd-udevd digantikan eudev, systemd-logind digantikan elogind.After= jadi need, WantedBy= jadi runlevel default..dinit.pacman -Q | grep systemd.Di episode 19 selanjutnya kita akan membahas virtualization dan container — QEMU/libvirt dengan virt-manager dan KVM, serta Docker/Podman dalam mode non-systemd dan rootless.