Ego Irfandi Blog

Mengenal Runit dan rc.conf

Apa itu Runit?

Runit adalah sebuah init system dan service supervisor yang dirancang dengan filosofi kesederhanaan (mengikuti prinsip Unix: do one thing and do it well). Berbeda dengan systemd yang memiliki banyak komponen dan kompleksitas, runit berfokus hanya pada tiga tugas utama:

  1. Stage 1 inisialisasi sistem (setup awal sebelum service berjalan)
  2. Stage 2 menjalankan dan mengawasi (supervise) service
  3. Stage 3 shutdown/reboot

Void Linux menggunakan runit sebagai init system default, menggantikan systemd yang umum dipakai distro lain.

Struktur Direktori Service

Runit mengelola service melalui direktori, bukan file konfigurasi tunggal seperti unit file di systemd.

  • /etc/sv/ berisi definisi service (run script, log, dll)
  • /var/service/ berisi symlink ke service yang aktif (di-supervise oleh runit)

Sebuah service dianggap “enabled” apabila terdapat symlink dari /etc/sv/nama-service ke /var/service/.

Contoh mengaktifkan service:

sudo ln -s /etc/sv/nama-service /var/service/

Menonaktifkan service** (cukup hapus symlink-nya):

sudo rm /var/service/nama-service

Perintah Dasar sv

Runit menyediakan command sv untuk mengontrol service secara langsung.

sudo sv status nama-service   # cek status
sudo sv start nama-service    # start service
sudo sv stop nama-service     # stop service
sudo sv restart nama-service  # restart service

Apa itu rc.conf?

rc.conf adalah file konfigurasi global milik Void Linux (bukan bagian dari runit itu sendiri) yang digunakan untuk mengatur berbagai parameter sistem saat proses boot, seperti hostname, timezone, keymap, dan hardware clock. File ini berlokasi di:

/etc/rc.conf

Contoh isi rc.conf:

# Hostname sistem
HOSTNAME="void-machine"

# Timezone
TIMEZONE="Asia/Jakarta"

# Keymap konsol
KEYMAP="us"

# Font konsol (opsional)
FONT="ter-v16n"

# Hardware clock (UTC atau LOCAL)
HARDWARECLOCK="UTC"

Setelah melakukan perubahan pada rc.conf, sebagian pengaturan (seperti hostname atau timezone) akan diterapkan pada boot berikutnya, sementara beberapa lainnya memerlukan restart service terkait atau reboot penuh.

Melihat Log Service

Runit menggunakan runsvdir beserta svlogd untuk logging. Log service biasanya tersimpan di:

/var/log/sv/nama-service/current

Bisa dilihat langsung dengan:

tail -f /var/log/sv/nama-service/current

Kenapa Runit?

Kesederhanaanya. setiap service diawasi langsung oleh proses supervisor tanpa lapisan abstraksi tambahan, sehingga lebih mudah dipahami, di-debug, dan dikustomisasi dibanding init system yang lebih kompleks(tidak seperti systemd). Hal ini sejalan dengan filosofi minimalis yang dianut Void Linux secara keseluruhan.