OpenRC adalah init default paling populer di Artix, dengan konsep runlevel dan script service yang familier. Episode ini membahas rc-update, rc-service, rc-status, direktori /etc/runlevels/ dan /etc/conf.d/, serta dependency antar-service dengan rc_need.

Sekarang kita masuk ke salah satu bagian paling penting: bagaimana service dikelola. Episode 5 membahas OpenRC, init system paling populer di ekosistem Artix. OpenRC dikenal familiar karena gayanya menyerupai SysV init klasik: script shell sederhana, runlevel, dan urutan start berbasis dependency.
Kalian akan belajar perintah rc-update, rc-service, dan rc-status, memahami struktur /etc/runlevels/ dan /etc/conf.d/, lalu menulis service sendiri dengan dependency. Setelah episode ini, kalian bisa mengelola layanan di sistem Artix-OpenRC tanpa kebingungan.
OpenRC bekerja dengan konsep runlevel: kumpulan service yang dijalankan bersama. Runlevel default boot untuk service awal, sysinit untuk dasar sistem, default untuk layanan sehari-hari, nonetwork, shutdown, dan reboot untuk transisi. Service dijalankan lewat script di /etc/init.d/.
Status service bisa dilihat dengan rc-status:
rc-status
rc-status defaultOutput rc-status menampilkan service yang sudah berjalan dan yang gagal per runlevel. Jika ada service berlabel failed, itulah tempat pertama mencari masalah.
Mendaftarkan service agar berjalan saat boot dilakukan dengan rc-update. Contoh paling umum: mengaktifkan jaringan di runlevel default.
rc-update add dhcpcd default
rc-service dhcpcd startrc-update add membuat symlink script service ke direktori runlevel, sedangkan rc-service mengendalikan service yang sedang berjalan. Kedua hal ini terpisah: satu menentukan "aktif saat boot", yang lain mengelola "status sekarang".
Untuk operasi sehari-hari, gabungan berikut paling sering dipakai:
rc-service sshd start
rc-service sshd restart
rc-service sshd stop
rc-service sshd statusHapus service dari runlevel dengan rc-update del. Cek urutan start dengan rc-update show yang menampilkan semua service di semua runlevel sekaligus.
/etc/runlevels/ berisi subdirektori per runlevel dengan symlink ke script di /etc/init.d/. rc-update add hanyalah pembuat symlink; kalian bisa melakukan hal yang sama manual:
ln -s /etc/init.d/sshd /etc/runlevels/default/sshd
ls -l /etc/runlevels/default/Memahami struktur ini membantu saat troubleshooting: kalau service tidak ikut boot, cek apakah symlink-nya ada di runlevel yang benar.
Setiap service OpenRC bisa diatur lewat file di /etc/conf.d/. Nilai di sini tidak dieksekusi, hanya di-source oleh script init. Contoh untuk daemon yang butuh argumen:
EXAMPLE_OPTS="--verbose --port 8080"Baca file /etc/conf.d/ untuk setiap service yang kalian install, karena konfigurasi yang tampak "tertanam di script" sering kali justru di sini.
Urutan start antar-service diatur lewat variabel dependency di script init. rc_need memaksa service lain start lebih dulu, rc_use memakai service yang sama, dan rc_after hanya mengatur urutan tanpa menuntut service lain hidup.
Contoh script service sederhana di /etc/init.d/:
#!/sbin/openrc-run
description="Contoh service dengan dependency"
depend() {
need net
after firewall
}
start() {
ebegin "Memulai contoh service"
start-stop-daemon --start --exec /usr/bin/example
eend $?
}Variabel need net memastikan jaringan aktif sebelum service start. Struktur depend() adalah jantung dari urutan boot OpenRC yang deterministik.
Service resmi untuk paket besar disediakan lewat subpaket berakhiran -openrc. Kalau kalian install nginx saja tanpa subpaket service, tidak ada script init untuknya:
sudo pacman -S nginx nginx-openrc
rc-update add nginx defaultnginx-openrc menyediakan /etc/init.d/nginx dan konfigurasi /etc/conf.d/nginx. Pola yang sama berlaku untuk semua paket service di repo Artix.
Setelah menginstall subpaket, pastikan script-nya tersedia dan service sehat:
ls /etc/init.d/nginx
rc-update show | grep nginx
rc-service nginx start
rc-service nginx statusJika rc-service nginx status menampilkan status: started, service kalian sudah hidup. Kombinasi install subpaket, daftar ke runlevel, lalu start adalah pola standar yang akan dipakai berulang kali di series ini.
Log service OpenRC umumnya ditulis oleh daemon itu sendiri atau lewat rc-log, service yang mencatat output script init ke /var/log/rc.log. Aktifkan dan lihat log-nya:
rc-update add rc-log default
rc-service rc-log start
tail -f /var/log/rc.logOutput tail -f /var/log/rc.log streaming pesan dari service yang sedang dijalankan. Untuk daemon seperti nginx, baca juga log aplikasinya di /var/log/nginx/.
Saat service gagal, langkah diagnostiknya: cek status, baca pesan error dari rc-service <svc> start secara langsung, lalu lihat log. Jangan lupa bahwa konfigurasi yang salah di /etc/conf.d/ sering menjadi biang keladi:
rc-service sshd start --debug
rc-statusOpsi --debug pada rc-service menampilkan setiap langkah yang dijalankan script, termasuk dependency yang ditarik. Ini cara tercepat menemukan mengapa service tidak mau start.
Episode 5 membekali kalian kemampuan mengelola service di OpenRC: runlevel, rc-update untuk boot-time, rc-service untuk runtime, struktur /etc/runlevels/ dan /etc/conf.d/, dependency dengan rc_need, serta subpaket -openrc.
Inti yang harus dibawa pulang:
/etc/init.d/.rc-update add mendaftarkan service ke runlevel untuk boot.rc-service mengendalikan service yang sedang berjalan./etc/conf.d/ menyimpan variabel konfigurasi tiap service.need, use, dan after.-openrc menyediakan script service resmi di Artix.Di episode 6 selanjutnya kita akan membahas init alternatif: runit, s6, dan dinit — perbandingan cara kerja, perintah service, dan kapan memilih masing-masing untuk kebutuhan yang berbeda.