Layanan dan Daemon — runit

T4n OS menggunakan runit sebagai supervision suite untuk menjalankan layanan sistem dan daemon.

Keunggulan runit:

  • Codebase kecil — lebih mudah diaudit untuk bug dan masalah keamanan.
  • Environment bersih — setiap layanan selalu dijalankan dengan environment variables, resource limits, dan file descriptor yang sama, terlepas dari bagaimana layanan tersebut dimulai atau di-restart.
  • Logging andal — log service tetap berjalan selama layanan terkait masih aktif.

Jika tidak membutuhkan program yang berjalan terus-menerus, pertimbangkan menggunakan cron daemon untuk menjalankannya secara berkala.

Service Directory

Setiap layanan yang dikelola runit memiliki service directory tersendiri. Satu-satunya file yang wajib ada adalah:

  • run — file executable yang menjalankan proses di foreground.

File dan direktori opsional lainnya:

File/DirFungsi
checkDijalankan untuk mengecek apakah layanan sudah tersedia (exit 0 = OK)
finishDijalankan saat layanan dihentikan atau shutdown
confBerisi environment variables yang digunakan oleh run
log/Direktori log — output dari run akan dialirkan ke proses run di dalamnya

Folder supervise akan dibuat secara otomatis saat pertama kali layanan dijalankan.

Konfigurasi Layanan

Sebagian besar layanan dapat dikonfigurasi melalui file conf di service directory-nya — tanpa perlu memodifikasi file layanan itu sendiri.

Periksa file run untuk melihat parameter yang tersedia. Beberapa layanan memiliki field seperti:

OPTS="--value ..."

di dalam file conf-nya.

Mengedit Layanan

Untuk melakukan modifikasi lebih lanjut:

  1. Salin service directory ke nama direktori baru (agar tidak ditimpa saat update xbps-install).
  2. Edit file layanan di direktori baru tersebut.
  3. Hentikan dan nonaktifkan layanan lama.
  4. Aktifkan layanan baru.

Runsvdir

Runsvdir adalah direktori di /etc/runit/runsvdir/ yang berisi symlink ke service directory yang aktif. Pada sistem yang sedang berjalan, runsvdir aktif dapat diakses melalui /var/service.

T4n OS menggunakan dua runsvdir bawaan:

RunsvdirFungsi
singleHanya menjalankan sulogin — untuk mode rescue
defaultRunsvdir default saat sistem berjalan normal

Runsvdir tambahan dapat dibuat di /etc/runit/runsvdir/.

Boot ke Runsvdir Tertentu

Tambahkan nama runsvdir ke kernel command-line. Contoh, untuk boot ke mode single:

single

Penggunaan Dasar

sv up <layanan>       # Jalankan layanan
sv down <layanan>     # Hentikan layanan
sv restart <layanan>  # Restart layanan
sv status <layanan>   # Cek status layanan

<layanan> dapat berupa nama layanan di /var/service/ atau path lengkapnya.

Contoh:

# Cek status layanan tertentu
sv status dhcpcd

# Cek status semua layanan aktif
sv status /var/service/*

Mengaktifkan Layanan

Service directory tersedia di /etc/sv/. Untuk mengaktifkan layanan pada sistem yang sedang berjalan:

ln -s /etc/sv/<layanan> /var/service/

Jika sistem sedang tidak berjalan, link langsung ke runsvdir default:

ln -s /etc/sv/<layanan> /etc/runit/runsvdir/default/

Layanan yang sudah di-link akan otomatis berjalan saat boot dan restart jika berhenti, kecuali dinonaktifkan secara manual.

Mencegah Layanan Otomatis Start

Untuk membiarkan runit mengelola layanan tanpa memulainya saat boot, buat file down:

touch /etc/sv/<layanan>/down

Cara ini juga berguna untuk menonaktifkan layanan default seperti agetty untuk tty 1–6, sehingga update paket tidak akan mengaktifkannya kembali.

Menonaktifkan Layanan

Hapus symlink dari runsvdir yang sedang berjalan:

rm /var/service/<layanan>

Atau dari runsvdir default (jika sistem tidak sedang berjalan):

rm /etc/runit/runsvdir/default/<layanan>

Menguji Layanan

Sebelum mengaktifkan penuh, uji layanan terlebih dahulu dengan menjalankannya sekali:

touch /etc/sv/<layanan>/down
ln -s /etc/sv/<layanan> /var/service/
sv once <layanan>

Jika semuanya berjalan normal, hapus file down untuk mengaktifkan layanan secara permanen:

rm /etc/sv/<layanan>/down

@T4n-Labs · @Gh0sT4n