Belajar NetBSD - Kernel Modules & Kernel Configuration
Episode 9 of 23

Belajar NetBSD - Kernel Modules & Kernel Configuration

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

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

Pendahuluan

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

Kernel Modules: Menambah Kemampuan Tanpa Reboot

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.

Melihat Modul yang Termuat

Melihat modul kernel yang aktif
modstat
Contoh output modstat
NAME            CLASS      SOURCE            REFS   SIZE
acpi            misc       -                 0      101
npf             network    -                 0      82
wm              netdev     -                 0      55

Setiap baris adalah sebuah modul dengan metadata: nama, kelas (network, misc, netdev, dll.), sumber, jumlah referensi, dan ukuran.

Memuat dan Membongkar Modul

Memuat modul secara manual:

Memuat modul kernel
modload /modules/mbuf_32k.o
Konfirmasi modul termuat
modstat | grep mbuf

Membongkar modul:

Membongkar modul kernel
modunload -n mbuf_32k

Warning

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 Otomatis di Boot: /etc/modules.conf

Modul yang harus selalu ada saat boot didaftarkan di /etc/modules.conf — satu nama per baris tanpa ekstensi:

Isi /etc/modules.conf
if_wm
npf

NetBSD juga memuat modul secara otomatis ketika perangkat keras baru terdeteksi — jadi file ini hanya untuk kebutuhan khusus.

Membangun Modul dari Source

Modul dibangun dari kernel source tree. Setelah kalian punya source (di /usr/src/sys), masuk ke direktori modul dan jalankan make:

Membangun modul dari kernel source
cd /usr/src/sys/modules/npf
make
Contoh output build modul
cc -O2 -std=gnu99 -ffreestanding ... -c npf.c
ld -T kernel.ldscript ... -o npf.kmod

Hasil build ditempatkan sebagai npf.kmod yang bisa dimuat dengan modload.

Kernel Configuration: Menyusun Kernel Sendiri

Setiap kernel NetBSD dibangun dari sebuah config file — daftar deklarasi perangkat, filesystem, dan opsi yang menentukan isi kernel. Config default ada di source tree:

Lokasi config kernel untuk amd64
ls /usr/src/sys/arch/amd64/conf
Contoh sebagian output
GENERIC  GENERIC.local  INSTALL  ...

Membuat Config Kustom

Jangan pernah mengedit GENERIC langsung. Buat config baru yang termasuk GENERIC dan menimpa apa yang ingin diubah:

Isi config kustom MYCUSTOM
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.

Membangun Kernel dengan build.sh

Kernel dibangun dari /usr/src memakai build.sh. Alur yang paling umum:

Membangun kernel dari config
cd /usr/src
./build.sh -u kernel=MYCUSTOM
Contoh output build kernel
...
 copying netbsd to .../obj/release/kernels/MYCUSTOM/netbsd

Beberapa varian umum:

PerintahFungsi
./build.sh kernel=GENERICMembangun kernel default
./build.sh -u kernel=MYCUSTOMMembangun kernel kustom, -u update obj
./build.sh -j 4 kernel=GENERICBuild paralel dengan 4 job
./build.sh -m mips64el kernel=GENERICCross-compile untuk arch lain

Setelah build selesai, kernel berada di direktori objek build. Pasang dengan menyalin ke /:

Memasang kernel baru
cp obj/sys/arch/amd64/compile/MYCUSTOM/netbsd /
Pertanyaan konfirmasi boot loader
# cp obj/.../netbsd /
# (saat reboot, boot loader akan menawarkan memakai kernel baru)

Simpan dulu kernel lama sebagai cadangan sebelum menimpa:

Cadangkan kernel lama
cp /netbsd /netbsd.old
cp obj/sys/arch/amd64/compile/MYCUSTOM/netbsd /

Boot dengan Kernel Kustom

Boot loader NetBSD menawarkan pilihan kernel saat boot. Kalian bisa mengetik nama kernel di prompt >:

Prompt boot loader
NetBSD/x86 BIOS Boot, Revision 3.5
> boot netbsd.old

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

Kapan Kernel Kustom Diperlukan?

SkenarioPerlu Kernel Kustom?
Server umum dengan GENERICTidak — GENERIC sudah cukup
Embedded dengan storage kecilYa — pangkas driver yang tidak dipakai
Perangkat keras khusus/baruYa — tambahkan driver spesifik
Fitur security tambahanYa — aktifkan opsi tertentu

GENERIC NetBSD sudah cukup efisien untuk kebanyakan kasus. Kernel kustom adalah alat presisi — gunakan ketika ada kebutuhan nyata, bukan sekadar kebanggaan.

Penutup

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:

  • Kelola modul dengan modload (muat), modunload (bongkar), modstat (lihat).
  • Modul boot otomatis didaftarkan di /etc/modules.conf.
  • Config kernel di /usr/src/sys/arch/<arch>/conf — jangan edit GENERIC langsung, buat config baru dengan include + no.
  • Bangun dengan ./build.sh kernel=NAMA, pasang dengan cp ke /, dan cadangkan kernel lama sebagai /netbsd.old.
  • Boot loader bisa memilih kernel alternatif — simpan cadangan sebelum mencoba kernel baru.

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!