Mengelola kernel NetBSD: memuat dan membongkar modul dengan modload, modunload, dan modstat, serta menyusun dan membangun kernel kustom dari config GENERIC dengan build.sh.

Di episode 8 sebelumnya kita telah menghubungkan NetBSD ke jaringan. Sekarang saatnya masuk ke ruang mesin paling dalam: kernel. Pada episode ini kita akan membedah kernel NetBSD dari dua sisi — sisi dinamis dengan kernel modules (modload, modunload, modstat), dan sisi statis dengan kernel configuration (menyusun config kustom dan membangunnya dengan build.sh).
NetBSD memisahkan banyak subsistem menjadi modul yang bisa dimuat dan dibongkar saat sistem berjalan. Ini cara paling cepat menambah dukungan perangkat keras atau fitur tanpa membangun ulang kernel.
modstatNAME CLASS SOURCE REFS SIZE
acpi misc - 0 101
npf network - 0 82
wm netdev - 0 55Setiap baris adalah sebuah modul dengan metadata: nama, kelas (network, misc, netdev, dll.), sumber, jumlah referensi, dan ukuran.
Memuat modul secara manual:
modload /modules/mbuf_32k.omodstat | grep mbufMembongkar modul:
modunload -n mbuf_32kWarning
Jangan membongkar modul yang sedang dipakai — modstat akan menunjukkan REFS lebih dari nol. Jika REFS bukan nol, ada subsistem yang masih menggantung padanya; bongkar setelah tidak ada yang memakai.
Modul yang harus selalu ada saat boot didaftarkan di /etc/modules.conf — satu nama per baris tanpa ekstensi:
if_wm
npfNetBSD juga memuat modul secara otomatis ketika perangkat keras baru terdeteksi — jadi file ini hanya untuk kebutuhan khusus.
Modul dibangun dari kernel source tree. Setelah kalian punya source (di /usr/src/sys), masuk ke direktori modul dan jalankan make:
cd /usr/src/sys/modules/npf
makecc -O2 -std=gnu99 -ffreestanding ... -c npf.c
ld -T kernel.ldscript ... -o npf.kmodHasil build ditempatkan sebagai npf.kmod yang bisa dimuat dengan modload.
Setiap kernel NetBSD dibangun dari sebuah config file — daftar deklarasi perangkat, filesystem, dan opsi yang menentukan isi kernel. Config default ada di source tree:
ls /usr/src/sys/arch/amd64/confGENERIC GENERIC.local INSTALL ...Jangan pernah mengedit GENERIC langsung. Buat config baru yang termasuk GENERIC dan menimpa apa yang ingin diubah:
include "arch/amd64/conf/GENERIC"
# Nonaktifkan perangkat yang tidak dipakai
no wd* at ata0 disk
no fd* at fdc0 drive ?Dengan pola include + no, kalian mendapat kernel GENERIC yang dipangkas sesuai kebutuhan — fondasi yang baik untuk embedded atau server khusus.
Kernel dibangun dari /usr/src memakai build.sh. Alur yang paling umum:
cd /usr/src
./build.sh -u kernel=MYCUSTOM...
copying netbsd to .../obj/release/kernels/MYCUSTOM/netbsdBeberapa varian umum:
| Perintah | Fungsi |
|---|---|
./build.sh kernel=GENERIC | Membangun kernel default |
./build.sh -u kernel=MYCUSTOM | Membangun kernel kustom, -u update obj |
./build.sh -j 4 kernel=GENERIC | Build paralel dengan 4 job |
./build.sh -m mips64el kernel=GENERIC | Cross-compile untuk arch lain |
Setelah build selesai, kernel berada di direktori objek build. Pasang dengan menyalin ke /:
cp obj/sys/arch/amd64/compile/MYCUSTOM/netbsd /# cp obj/.../netbsd /
# (saat reboot, boot loader akan menawarkan memakai kernel baru)Simpan dulu kernel lama sebagai cadangan sebelum menimpa:
cp /netbsd /netbsd.old
cp obj/sys/arch/amd64/compile/MYCUSTOM/netbsd /Boot loader NetBSD menawarkan pilihan kernel saat boot. Kalian bisa mengetik nama kernel di prompt >:
NetBSD/x86 BIOS Boot, Revision 3.5
> boot netbsd.oldIni berguna ketika kernel baru bermasalah — kalian bisa kembali ke netbsd.old atau netbsd (kernel GENERIC lama) tanpa repot.
Danger
Pastikan memegang kernel yang sudah terbukti bekerja sebelum mencoba kernel baru. Simpan cadangan (/netbsd.old), dan selalu test di VM atau mesin non-produksi sebelum deploy ke production.
| Skenario | Perlu Kernel Kustom? |
|---|---|
| Server umum dengan GENERIC | Tidak — GENERIC sudah cukup |
| Embedded dengan storage kecil | Ya — pangkas driver yang tidak dipakai |
| Perangkat keras khusus/baru | Ya — tambahkan driver spesifik |
| Fitur security tambahan | Ya — aktifkan opsi tertentu |
GENERIC NetBSD sudah cukup efisien untuk kebanyakan kasus. Kernel kustom adalah alat presisi — gunakan ketika ada kebutuhan nyata, bukan sekadar kebanggaan.
Pada episode 9 ini, kalian telah mengelola kernel NetBSD dari dua sisi: sisi dinamis dengan modload, modunload, dan modstat, pendaftaran modul di /etc/modules.conf, serta sisi statis dengan menyusun config kustom dan membangun kernel dengan build.sh kernel=MYCUSTOM.
Inti yang harus dibawa pulang:
modload (muat), modunload (bongkar), modstat (lihat)./etc/modules.conf./usr/src/sys/arch/<arch>/conf — jangan edit GENERIC langsung, buat config baru dengan include + no../build.sh kernel=NAMA, pasang dengan cp ke /, dan cadangkan kernel lama sebagai /netbsd.old.Di episode 10 selanjutnya kita akan naik satu level: source build dengan build.sh — membangun toolchain, kernel, dan seluruh userland/world dari source, menjalankan build paralel, dan melakukan cross-compilation untuk arsitektur lain. Sampai jumpa di episode 10!