Menguasai sistem inisialisasi NetBSD: memahami /etc/rc.conf dan /etc/defaults/rc.conf, script service di /etc/rc.d, perintah service, serta bagaimana rcorder menentukan urutan startup.

Di episode 5 sebelumnya kita telah mengatur user dan group, serta membatasi akses root. Sekarang bayangkan sebuah sistem yang mati — bagaimana ia kembali hidup? Setiap boot, NetBSD menjalankan rangkaian service dengan urutan yang tepat. Pada episode ini kita akan membedah rc system NetBSD: bagaimana /etc/rc.conf mengatur segalanya, bagaimana script di /etc/rc.d bekerja, dan bagaimana rcorder menentukan siapa jalan duluan.
Ini salah satu perbedaan paling kentara dengan Linux modern. Linux menggunakan systemd; NetBSD tetap memakai filosofi BSD rc yang sederhana, transparan, dan scriptable. Tidak ada unit file yang misterius — semuanya adalah shell script yang bisa kalian baca baris per baris. Mari kita buka mesinnya.
Sistem rc NetBSD terdiri dari beberapa lapis yang saling melengkapi:
| Komponen | Fungsi |
|---|---|
/etc/rc.conf | Konfigurasi utama service (kalian yang mengedit) |
/etc/defaults/rc.conf | Nilai default semua parameter (jangan diedit) |
/etc/rc.d/ | Script service individual |
/etc/rc | Entry point yang menjalankan semua script di boot |
rcorder | Tool yang menentukan urutan eksekusi script |
service | Front-end untuk menjalankan script rc |
Prinsipnya: jangan pernah mengedit /etc/defaults/rc.conf. Kalian menyalin parameter yang ingin diubah ke /etc/rc.conf atau /etc/rc.conf.local, dan nilai itu menimpa default.
Setiap instalasi NetBSD menghasilkan /etc/rc.conf yang berisi konfigurasi dasar. Mari lihat isinya:
cat /etc/rc.confrc_configured=YES
hostname="nbsd11"
ifconfig_wm0="DHCP"
sshd=YESPerhatikan polanya: setiap service diwakili satu variabel, dan nilai YES berarti aktif. Pengaturan ini adalah bukti dari episode 3 — network config yang kita pilih di sysinst tersimpan di sini (ifconfig_wm0="DHCP").
Untuk konfigurasi yang khusus per-mesin tanpa menyentuh file utama, NetBSD menyediakan /etc/rc.conf.local. Ini berguna jika /etc/rc.conf dikelola oleh tools provisioning — tambahan lokal cukup di file .local:
postfix=YES
httpd=NOSetiap service punya script di /etc/rc.d/. Mari lihat apa saja yang tersedia dan cara membaca sebuah script:
ls /etc/rc.daccounting dhcpcd fsck named network ntpdate sshd syslogd wscons ...Struktur sebuah script mengikuti konvensi yang sama: definisi variabel seperti name, command, rcvar, lalu include dari file umum. Ini cuplikan esensi /etc/rc.d/sshd:
name="sshd"
command="/usr/sbin/sshd"
rcvar=${name}
command_args="-D"
run_rc_command "$1"Script ini "standar" — NetBSD menyediakan kerangka (rc.subr) yang menangani start/stop/status/restart secara seragam. Inilah kenapa semua service NetBSD berperilaku konsisten.
serviceNetBSD tidak memiliki rcctl seperti OpenBSD. Alatnya adalah perintah service:
service sshd start
service sshd status
service sshd restart
service sshd stopsshd is running as pid 1234.Kapan pun ragu dengan sebuah perintah, service juga menyediakan bantuan:
service sshd helpBagaimana NetBSD tahu bahwa filesystem harus dimount dulu sebelum network dijalankan? Jawabannya adalah rcorder — tool yang membaca deklarasi dependensi di dalam setiap script dan mengurutkannya.
Di dalam setiap script terdapat komentar deklarasi seperti ini:
# REQUIRE: mountcritlocal network
# PROVIDE: sshd
# BEFORE: firewallTiga kata kunci penting:
| Keyword | Arti |
|---|---|
PROVIDE | Layanan apa yang disediakan script ini |
REQUIRE | Layanan apa yang harus jalan sebelum ini |
BEFORE | Layanan apa yang harus jalan setelah ini |
Saat boot, /etc/rc menjalankan rcorder /etc/rc.d/* pada semua script untuk menghasilkan urutan optimal:
rcorder /etc/rc.d/*/etc/rc.d/mountcritlocal
/etc/rc.d/sysctl
/etc/rc.d/fsck
/etc/rc.d/mountall
/etc/rc.d/network
...
/etc/rc.d/sshd
/etc/rc.d/postfixPerhatikan: mountall sebelum network, dan network sebelum sshd. Ketergantungan terselesaikan secara otomatis tanpa urutan hardcode.
Kalian bisa menulis script rc sendiri untuk service apapun. Simpan di /etc/rc.d/nama-service dengan pola standar:
#!/bin/sh
name="mydaemon"
command="/usr/local/sbin/mydaemon"
command_args="-f /etc/mydaemon.conf"
rcvar=${name}
run_rc_command "$1"Buat executable, lalu aktifkan di /etc/rc.conf.local:
chmod +x /etc/rc.d/mydaemon
echo 'mydaemon=YES' >> /etc/rc.conf.localWarning
Setiap kali kalian mengubah nilai rcvar menjadi YES, service belum berjalan sampai di-start secara eksplisit atau sistem di-reboot. Gunakan service nama restart untuk menerapkan perubahan tanpa reboot.
Pada episode 6 ini, kalian telah menguasai rc system NetBSD: memahami /etc/rc.conf sebagai pusat kontrol, /etc/defaults/rc.conf sebagai sumber nilai default, script di /etc/rc.d, perintah service, dan peran rcorder dalam menentukan urutan boot. Kalian juga bisa menulis script service sendiri.
Inti yang harus dibawa pulang:
/etc/defaults/rc.conf — timpa nilainya di /etc/rc.conf atau /etc/rc.conf.local.nama_service=YES, lalu service nama start.rcctl di NetBSD — gunakan perintah service.rcorder menyelesaikan urutan boot berdasarkan PROVIDE/REQUIRE/BEFORE.Di episode 7 selanjutnya kita akan berpindah dari yang hidup ke yang menyimpan: filesystem, mount, dan disk — memahami FFS, mount dengan tmpfs dan cd9660, mengelola disklabel dan newfs, serta menjaga kesehatan disk dengan fsck dan swapctl. Sampai jumpa di episode 7!