Belajar Devuan GNU/Linux - sysvinit: Init & Service Management
Episode 5 of 23

Belajar Devuan GNU/Linux - sysvinit: Init & Service Management

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.

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

Pendahuluan

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.

Cara Kerja sysvinit

Dari PID 1 ke Runlevel

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/:

Struktur direktori runlevel
/etc/rc2.d/
  S01rsyslog -> ../init.d/rsyslog
  S02cron   -> ../init.d/cron
  S03ssh    -> ../init.d/ssh
  K01alsa   -> ../init.d/alsa

Symlink 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.

Runlevel di Devuan

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:

Cek runlevel default
grep ^id: /etc/inittab

Keluaran 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 di /etc/init.d/

Script init adalah program shell yang menerima argumen seperti start, stop, restart, dan status. Baca salah satunya untuk memahami polanya:

Lihat header script init
head -20 /etc/init.d/ssh

Sebagian 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.

Mengelola Service dengan sysvinit

Perintah service

Perintah service adalah cara paling mudah berinteraksi dengan satu service:

Kelola service dengan service
sudo service ssh status
sudo service ssh start
sudo service ssh restart
sudo service ssh stop

service ssh status menampilkan status dan PID proses jika berjalan. Untuk daftar semua service yang dikenal, ketik service --status-all — setiap service ditandai [ + ], [ - ], atau [ ? ].

Mengatur Auto-Start dengan update-rc.d

Untuk mengontrol service mana yang ikut boot, gunakan update-rc.d (atau sysv-rc):

Aktifkan dan nonaktifkan auto-start
sudo update-rc.d ssh enable
sudo update-rc.d ssh disable

update-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.

Runlevel dan Telinit

Berpindah Runlevel

Perintah runlevel menampilkan runlevel sebelumnya dan sekarang, sedangkan telinit mengubah runlevel saat berjalan:

Cek dan pindah runlevel
runlevel
sudo telinit 1
runlevel

runlevel 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.

Membaca Status Berjalan

Jika sebuah service tidak muncul di service --status-all, periksa apakah script init-nya ada dan memiliki bit eksekusi:

Inspeksi script init
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:

Script init sederhana
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 start

Script 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.

Penutup

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:

  • sysvinit adalah PID 1 dan init default Devuan.
  • Runlevel menentukan service mana yang berjalan.
  • Script service berada di /etc/init.d/; symlink di /etc/rcN.d/.
  • Awalan S berarti start saat naik runlevel, K berarti kill saat turun.
  • 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.

Belajar Devuan GNU/Linux - sysvinit: Init & Service Management | Belajar Devuan GNU/Linux