Episode ini membedah sysvinit, init default Devuan: PID 1, inittab, runlevel di /etc/rcN.d/, dan script service di /etc/init.d/. Kalian belajar perintah service, update-rc.d, sysv-rc, runlevel, dan telinit untuk mengelola service sehari-hari.

Inilah episode yang paling khas Devuan: sysvinit. Berbeda dengan systemd yang mengelola service lewat unit file, sysvinit bekerja dengan runlevel, script shell, dan symlink. Episode 5 menjelaskan cara kerja PID 1, file /etc/inittab, direktori /etc/rcN.d/, dan script di /etc/init.d/, lalu mempraktikkan perintah pengelolaan service.
Menguasai sysvinit bukan sekadar nostalgia — ini adalah kemampuan membaca sistem yang transparan. Setiap service adalah script yang bisa dibaca penuh, setiap runlevel adalah direktori yang bisa dilihat. Kalian tahu persis apa yang terjadi saat boot, apa yang berjalan, dan mengapa.
Di akhir episode ini, kalian akan mampu mengelola service Devuan sehari-hari: memulai, menghentikan, me-restart, memeriksa status, mengatur auto-start, dan berpindah runlevel tanpa bantuan systemd sama sekali.
Saat kernel selesai boot, ia menjalankan init sebagai PID 1. init membaca /etc/inittab untuk menentukan runlevel default, lalu mengeksekusi script di direktori runlevel tersebut. Runlevel adalah mode operasi sistem: 0 untuk shutdown, 1 untuk single-user, 2 hingga 5 untuk multi-user, dan 6 untuk reboot.
Setiap runlevel N memiliki direktori /etc/rcN.d/ yang berisi symlink ke script di /etc/init.d/:
/etc/rc2.d/
S01rsyslog -> ../init.d/rsyslog
S02cron -> ../init.d/cron
S03ssh -> ../init.d/ssh
K01alsa -> ../init.d/alsaSymlink dengan awalan S (start) dijalankan dengan argumen start saat naik ke runlevel; awalan K (kill) dipanggil saat turun dari runlevel. Angka dua digit menentukan urutan eksekusi — semakin kecil angkanya, semakin awal dijalankan.
Devuan mengikuti konvensi Debian: runlevel 2 adalah default multi-user, dan 3, 4, 5 juga multi-user tanpa perbedaan makna kecuali dikonfigurasi khusus. Runlevel 1 adalah mode single-user untuk maintenance, 0 untuk shutdown, dan 6 untuk reboot.
Verifikasi runlevel default pada sistem kalian:
grep ^id: /etc/inittabKeluaran grep ^id: /etc/inittab menampilkan id:2:initdefault: pada Devuan standar. Jika kalian mengubahnya menjadi 1, sistem akan boot langsung ke mode single-user.
Script init adalah program shell yang menerima argumen seperti start, stop, restart, dan status. Baca salah satunya untuk memahami polanya:
head -20 /etc/init.d/sshSebagian besar script memakai library /lib/lsb/init-functions untuk log yang konsisten. Karena berbentuk teks biasa, kalian bisa memeriksa dan memodifikasinya langsung — transparansi inilah esensi filosofi Devuan.
Perintah service adalah cara paling mudah berinteraksi dengan satu service:
sudo service ssh status
sudo service ssh start
sudo service ssh restart
sudo service ssh stopservice ssh status menampilkan status dan PID proses jika berjalan. Untuk daftar semua service yang dikenal, ketik service --status-all — setiap service ditandai [ + ], [ - ], atau [ ? ].
Untuk mengontrol service mana yang ikut boot, gunakan update-rc.d (atau sysv-rc):
sudo update-rc.d ssh enable
sudo update-rc.d ssh disableupdate-rc.d ssh enable membuat symlink di runlevel yang sesuai; disable menghapusnya. Jika kalian menginginkan kontrol penuh atas urutan, sysv-rc-conf menyediakan antarmuka interaktif berbasis ncurses untuk mencentang service per runlevel.
Perintah runlevel menampilkan runlevel sebelumnya dan sekarang, sedangkan telinit mengubah runlevel saat berjalan:
runlevel
sudo telinit 1
runlevelrunlevel menampilkan N 2 misalnya — runlevel sebelumnya tidak ada, sekarang 2. Perintah sudo telinit 1 memindahkan sistem ke mode single-user untuk perbaikan. Untuk kembali, jalankan sudo telinit 2.
Jika sebuah service tidak muncul di service --status-all, periksa apakah script init-nya ada dan memiliki bit eksekusi:
ls -l /etc/init.d/nginx
test -x /etc/init.d/nginx && echo "executable"Pola test -x /etc/init.d/nginx adalah trik cepat memverifikasi apakah script init siap dijalankan. Jika belum executable, perbaiki dengan sudo chmod +x /etc/init.d/nginx. Trik ini sangat berguna saat kalian menulis script init sendiri untuk aplikasi.
Untuk melengkapi pemahaman, mari tulis script init minimal:
cat > /etc/init.d/myapp <<'EOF'
#!/bin/sh
case "$1" in
start) echo "starting myapp";;
stop) echo "stopping myapp";;
restart) $0 stop; $0 start;;
*) echo "Usage: $0 {start|stop|restart}"; exit 1;;
esac
EOF
sudo chmod +x /etc/init.d/myapp
sudo service myapp startScript di atas menerima argumen start, stop, dan restart seperti script init profesional. Pada praktik production, kalian akan menambahkan pemeriksaan PID dan fungsi log — tetapi struktur dasarnya persis seperti ini.
Episode 5 menjelaskan sysvinit sebagai init default Devuan: PID 1 membaca /etc/inittab, menjalankan runlevel di /etc/rcN.d/, dan memanggil script di /etc/init.d/. Kalian juga belajar mengelola service dengan service, mengatur auto-start dengan update-rc.d, serta berpindah runlevel dengan runlevel dan telinit.
Inti yang harus dibawa pulang:
/etc/init.d/; symlink di /etc/rcN.d/.service mengelola satu service; update-rc.d mengatur auto-start.runlevel dan telinit membaca serta mengubah runlevel aktif.Di episode 6 selanjutnya kita akan membahas init alternatif: OpenRC dan runit — mengelola service dengan rc-service dan rc-update, memahami /etc/conf.d/, lalu memakai sv dan runsvdir untuk runit, serta kapan memilih masing-masing init.