Belajar Void Linux - runit: Init & Service Management
Episode 5 of 23

Belajar Void Linux - runit: Init & Service Management

Episode ini membedah runit sebagai init dan service supervisor Void. Kalian akan memahami alur PID 1 ke runsvdir dan runsv, struktur service di /etc/sv/, cara mengaktifkan service lewat symlink /var/service/, serta perintah sv untuk mengendalikan service sehari-hari.

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

Pendahuluan

Di episode 2 kita mengenal runit sebagai PID 1. Episode 5 membedahnya secara penuh: bagaimana runit bekerja, bagaimana service didefinisikan dan diaktifkan, serta perintah apa saja yang dipakai untuk mengendalikannya. Setelah episode ini, kalian akan mahir mengelola service di Void — keterampilan yang dipakai hampir di setiap episode berikutnya.

Cara berpikir runit sangat berbeda dari systemd. Service bukan file unit dengan banyak opsi, melainkan direktori berisi skrip. Konsep ini terasa aneh di awal, tapi justru inilah yang membuat runit transparan: kalian bisa membaca persis apa yang dijalankan sebuah service.

Mari kita mulai dari alur boot hingga praktik mengelola service.

Alur Init dan Supervisi Proses

PID 1 hingga runsv

Saat boot, kernel menjalankan runit sebagai proses pertama. runit lalu meluncurkan runsvdir, yang memindai direktori /var/service/. Untuk setiap entri, runsvdir menelurkan runsv — supervisor per-service yang bertanggung jawab memulai, memonitor, dan memulai ulang service bila diperlukan:

Hierarki proses runit
PID 1 (runit)
  -> runsvdir
       -> runsv (service A)
       -> runsv (service B)
       -> runsv (service C)

Jika sebuah service crash, runsv otomatis memulainya kembali. Inilah service supervision yang selalu aktif — salah satu alasan utama kalian memakai runit.

Direktori /var/service dan /etc/sv

Service diaktifkan lewat symlink dari /etc/sv/<service> menuju /var/service/<service>. /var/service adalah direktori yang dipindai runsvdir, sementara /etc/sv adalah gudang service yang tersedia:

Lihat service yang aktif dan tersedia
ls -l /var/service/
ls /etc/sv/

Output ls -l /var/service/ menampilkan symlink seperti sshdd -> /etc/sv/sshd dan dhcpcd. Semua service aktif ada di sini.

Struktur Service dan Perintah sv

Anatomi Direktori Service

Setiap service berisi skrip run, dan bisa juga memiliki finish, down, log, serta variabel di conf. Contoh minimal skrip run:

/etc/sv/sshd/run
#!/bin/sh
exec /usr/sbin/sshd -D

Baris exec pada skrip run mengganti shell dengan proses sshd — cara ini memastikan runsv mengawasi proses yang benar. Skrip harus dieksekusi; periksa izinnya:

Periksa izin skrip run
ls -l /etc/sv/sshd/run

Jika skrip tidak executable, service tidak akan berjalan.

Perintah sv untuk Mengendalikan Service

Perintah utama pengelolaan service adalah sv:

Status dan kontrol service
sv status sshd
sv up sshd
sv down sshd
sv restart sshd

sv status sshd menampilkan run: sshd: (pid 123). Bila service mati karena kegagalan, status akan menampilkan down: sshd: 3 seconds, normally up.

Menonaktifkan Service Secara Permanen

Untuk mencegah service menyala kembali, tandai direktori service dengan berkas down:

Tandai service agar tidak menyala otomatis
sudo touch /etc/sv/sshd/down
sudo sv down sshd

Kehadiran berkas down di /etc/sv/sshd/ membuat runsv menahan service tersebut. Menghapus berkas down dan menjalankan sv up akan mengaktifkannya kembali.

Mengaktifkan dan Memodifikasi Service

Enable Service Baru

Untuk mengaktifkan service dari /etc/sv/, cukup buat symlink:

Aktifkan service cronie
sudo ln -s /etc/sv/cronie /var/service/

Perintah ln -s /etc/sv/cronie /var/service/ membuat runsvdir mendeteksi service baru secara langsung, tanpa reload atau restart. Untuk menghapus service dari aktif, tinggal hapus symlinknya.

Modifikasi Konfigurasi Service

Beberapa service memuat variabel dari berkas conf. Ubah isinya, lalu restart:

Edit conf dan restart service
sudo vim /etc/sv/some-service/conf
sudo sv restart some-service

Kebiasaan baik: setelah mengubah skrip run atau conf, selalu sv restart dan verifikasi dengan sv status serta log service.

Membaca Log Service

Service dengan subdirektori log mengarahkan output ke svlogd. Log bisa dibaca langsung:

Baca log service
tail -f /var/log/sshd/current

Perintah tail -f /var/log/sshd/current menampilkan log sshd secara live. Struktur direktori log ini adalah salah satu hal yang perlu dibiasakan pengguna yang baru pindah dari journald.

Kesalahan Umum dan Solusinya

Service Tidak Jalan

Saat service tidak berjalan, periksa tiga hal secara berurutan: status dengan sv status, keberadaan symlink di /var/service/, dan log. Kombinasi ini hampir selalu menemukan akar masalah:

Diagnosis service
sv status sshd
ls -l /var/service/ | grep sshd
tail -n 20 /var/log/sshd/current

Konflik Dua Service

Jika dua service bersaing untuk resource yang sama — misalnya dua web server di port 80 — keduanya akan mati bergantian. Solusinya adalah mematikan salah satu, bukan mengandalkan runsv untuk menyelesaikannya.

Penutup

Episode 5 membekali kalian kemampuan mengelola service runit: memahami hierarki runit ke runsvdir lalu runsv, struktur service di /etc/sv/, mengaktifkan service lewat symlink /var/service/, dan mengendalikannya dengan sv serta berkas down.

Inti yang harus dibawa pulang:

  • runit adalah PID 1 yang menelurkan runsvdir lalu runsv per service.
  • Service adalah direktori di /etc/sv/ berisi skrip run.
  • Service diaktifkan lewat symlink di /var/service/.
  • sv status, sv up, sv down, dan sv restart adalah kontrol harian.
  • Berkas down menandai service agar tidak menyala otomatis.
  • Log service dibaca lewat direktori log di /var/log/.

Di episode 6 selanjutnya kita akan membandingkan glibc vs musl — perbedaan dua libc yang ditawarkan Void, kelebihan dan kekurangannya, implikasi pada repositori dan aplikasi, serta kapan kalian sebaiknya memilih masing-masing.

Belajar Void Linux - runit: Init & Service Management | Belajar Void Linux