Belajar Alpine Linux - OpenRC: Init System & Service Management
Episode 5 of 23

Belajar Alpine Linux - OpenRC: Init System & Service Management

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Rantai Boot: dari PID 1 sampai OpenRC

Menggantikan systemd

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:

Cek init dan runlevel
ps -p 1 -o pid,comm,args
rc-status

Output 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/.

Mengelola Service: rc-service dan rc-update

Operasi Service

rc-service adalah padanan systemctl start/stop/restart/status:

Kelola service dengan rc-service
rc-service sshd start
rc-service sshd status
rc-service sshd restart
rc-service sshd stop

rc-update mengontrol service yang berjalan saat boot dengan menambahkannya ke runlevel:

Aktifkan service saat boot
rc-update add sshd default
rc-update del sshd default
rc-update show

Output rc-update show menampilkan semua service dan runlevel tempat mereka terdaftar. Pola yang harus diingat: rc-service untuk operasi manual, rc-update untuk autostart.

Status dan Dependensi

Untuk melihat status keseluruhan dan dependensi antar service:

Periksa status dan dependensi
rc-status
rc-status --all
rc-dependency-tree

rc-status --all menampilkan service di semua runlevel. Jika ada service gagal start, rc-status menandainya dan kalian bisa memeriksa log-nya di /var/log/.

Struktur /etc/init.d dan /etc/conf.d

Script dan Konfigurasi Terpisah

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:

Lokasi konfigurasi OpenRC
/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 nginx

Ubah konfigurasi service dengan mengedit file conf.d, lalu restart:

Edit konfigurasi lalu restart service
vi /etc/conf.d/sshd
rc-service sshd restart

Perhatikan 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.

Contoh Service Sederhana

Untuk memahami cara kerja OpenRC, mari menulis service kecil. Buat script di /etc/init.d/hello:

Script init sederhana
#!/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:

Aktifkan service hello
chmod +x /etc/init.d/hello
rc-service hello start
rc-update add hello default
rc-status

Output rc-status sekarang menampilkan hello sebagai started. Variabel command dan command_args adalah cara OpenRC menjalankan binary; blok depend() menyatakan bahwa service membutuhkan jaringan.

Tips Troubleshooting

Saat Service Gagal Start

Bila service tidak mau berjalan, tiga langkah diagnostik berikut hampir selalu cukup:

Diagnostik service OpenRC
rc-service nginx status
rc-service nginx restart
tail -20 /var/log/messages
  • rc-service nginx status memberi status terkini.
  • restart memuat ulang konfigurasi setelah perubahan.
  • Log umum tersedia di /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.

Penutup

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:

  • OpenRC menggantikan systemd; tidak ada systemctl di Alpine.
  • rc-service menangani start, stop, restart, dan status.
  • rc-update menambahkan service ke runlevel default saat boot.
  • rc-status menampilkan kondisi service dan runlevel.
  • Script init ada di /etc/init.d, variabel konfigurasi di /etc/conf.d.
  • Service kustom cukup satu script shell dengan blok depend.

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.

Belajar Alpine Linux - OpenRC: Init System & Service Management | Belajar Alpine Linux