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/Dir | Fungsi |
|---|---|
check | Dijalankan untuk mengecek apakah layanan sudah tersedia (exit 0 = OK) |
finish | Dijalankan saat layanan dihentikan atau shutdown |
conf | Berisi environment variables yang digunakan oleh run |
log/ | Direktori log — output dari run akan dialirkan ke proses run di dalamnya |
Folder
superviseakan 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:
- Salin service directory ke nama direktori baru (agar tidak ditimpa saat update
xbps-install). - Edit file layanan di direktori baru tersebut.
- Hentikan dan nonaktifkan layanan lama.
- 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:
| Runsvdir | Fungsi |
|---|---|
single | Hanya menjalankan sulogin — untuk mode rescue |
default | Runsvdir 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
agettyuntuk 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