Episode ini membedah OpenRC, init system non-systemd milik Alpine. Kalian belajar rantai boot dari PID 1 ke init hingga OpenRC, mengelola service dengan rc-service dan rc-update, membaca rc-status, serta memahami struktur /etc/init.d dan /etc/conf.d untuk menulis service sendiri.

Alpine memakai OpenRC, bukan systemd. Bagi yang baru pindah dari Ubuntu, perbedaan ini adalah penyesuaian terbesar. Episode 5 membedah OpenRC dari rantai boot hingga menulis service sendiri, sehingga kalian tidak lagi mencari systemctl di mana pun.
Setelah episode ini, kalian akan nyaman dengan tiga perintah utama rc-service, rc-update, dan rc-status, memahami di mana service didefinisikan, dan bisa menulis script init sederhana untuk aplikasi kalian sendiri.
Saat sistem boot, kernel menjalankan proses pertama — PID 1 — yang di Alpine adalah init dari BusyBox (atau sbin/init). Init lalu memanggil OpenRC (/sbin/openrc), yang menjalankan script service di runlevel secara paralel. Tidak ada daemon manajemen besar seperti systemd; semua logika ada di script shell.
Lihat proses PID 1 dan runlevel aktif:
ps -p 1 -o pid,comm,args
rc-statusOutput rc-status menampilkan service yang berjalan di runlevel default beserta statusnya. Script init berada di /etc/init.d/ dan setiap service memiliki konfigurasi variabel di /etc/conf.d/.
rc-service adalah padanan systemctl start/stop/restart/status:
rc-service sshd start
rc-service sshd status
rc-service sshd restart
rc-service sshd stoprc-update mengontrol service yang berjalan saat boot dengan menambahkannya ke runlevel:
rc-update add sshd default
rc-update del sshd default
rc-update showOutput rc-update show menampilkan semua service dan runlevel tempat mereka terdaftar. Pola yang harus diingat: rc-service untuk operasi manual, rc-update untuk autostart.
Untuk melihat status keseluruhan dan dependensi antar service:
rc-status
rc-status --all
rc-dependency-treerc-status --all menampilkan service di semua runlevel. Jika ada service gagal start, rc-status menandainya dan kalian bisa memeriksa log-nya di /var/log/.
Konsep kunci OpenRC: script di /etc/init.d/ berisi logika, sedangkan variabel yang bisa diubah pengguna ada di /etc/conf.d/. Inilah file yang sering di-edit:
/etc/init.d/sshd - script service sshd
/etc/conf.d/sshd - variabel konfigurasi sshd
/etc/init.d/nginx - script service nginx
/etc/conf.d/nginx - variabel konfigurasi nginxUbah konfigurasi service dengan mengedit file conf.d, lalu restart:
vi /etc/conf.d/sshd
rc-service sshd restartPerhatikan bahwa OpenRC memakai variabel di conf.d, bukan directive seperti Environment= ala systemd. Buka /etc/conf.d/sshd dan kalian akan melihat variabel seperti rc_ulimit dan sshd_opts.
Untuk memahami cara kerja OpenRC, mari menulis service kecil. Buat script di /etc/init.d/hello:
#!/sbin/openrc-run
name="hello"
description="Servis contoh OpenRC"
command="/usr/bin/printf"
command_args="hello from openrc"
command_args_foreground="yes"
depend() {
need net
}Jadikan executable, jalankan, dan daftarkan ke runlevel default:
chmod +x /etc/init.d/hello
rc-service hello start
rc-update add hello default
rc-statusOutput rc-status sekarang menampilkan hello sebagai started. Variabel command dan command_args adalah cara OpenRC menjalankan binary; blok depend() menyatakan bahwa service membutuhkan jaringan.
Bila service tidak mau berjalan, tiga langkah diagnostik berikut hampir selalu cukup:
rc-service nginx status
rc-service nginx restart
tail -20 /var/log/messagesrc-service nginx status memberi status terkini.restart memuat ulang konfigurasi setelah perubahan./var/log/messages (disediakan syslog BusyBox).Jika error berkaitan dengan variabel yang salah, periksa /etc/conf.d/nginx. Jika service tidak ditemukan, pastikan paket sudah diinstall — misalnya apk add nginx untuk service nginx.
Episode 5 membedah OpenRC secara menyeluruh: rantai boot dari PID 1, pengelolaan service dengan rc-service dan rc-update, struktur /etc/init.d dan /etc/conf.d, hingga cara menulis script init sederhana.
Inti yang harus dibawa pulang:
systemctl di Alpine.Di episode 6 selanjutnya kita akan membahas user, group, dan privileges — membuat user dengan adduser dan addgroup, memanfaatkan group wheel, serta mengonfigurasi doas sebagai pengganti sudo di /etc/doas.d.