Memahami arsitektur FreeBSD: base system yang menyatukan kernel dan userland, ports tree untuk source, dan packages `pkg` untuk binary. Kalian juga akan mengenal komponen utama: kernel modular, bootloader, rc system, filesystem, jails, pf, dan bhyve yang bekerja sebagai satu sistem terpadu.

Di episode 1 sebelumnya kalian sudah memahami sejarah FreeBSD dan filosofi di baliknya. Sekarang saatnya masuk lebih dalam ke arsitektur dan konsep dasar — peta teknis yang akan kalian pakai di seluruh episode berikutnya.
FreeBSD sering digambarkan sebagai sistem "satu paket": kernel, userland, dan tooling dibangun dari source tree yang sama. Tapi apa sebenarnya isi paket itu, dan bagaimana komponen-komponennya bekerja sama? Episode ini akan membedah tiga pilar distribusi software — base system, ports, dan packages — lalu mengenalkan komponen inti sistem.
FreeBSD mendistribusikan software melalui tiga jalur yang saling melengkapi. Memahami perbedaannya adalah kunci membaca hampir semua dokumentasi FreeBSD.
Base system adalah inti FreeBSD: kernel, utilitas dasar, compiler, library, dan dokumentasi yang dikembangkan bersama dan dirilis sebagai satu kesatuan. Ketika kalian menginstal FreeBSD, inilah yang pertama kali masuk ke disk. Pembaruannya dilakukan dengan freebsd-update yang memastikan base system selalu sinkron sebagai unit tunggal:
freebsd-update fetch
freebsd-update installKarena base system adalah unit utuh, tidak ada istilah "paket setengah terpasang" untuk komponen inti. Versi kernel dan userland selalu kompatibel satu sama lain — inilah sumber kestabilan yang melegenda.
Ports tree adalah koleksi skrip dan metadata untuk membangun ribuan aplikasi dari source. Berada di /usr/ports, setiap port mendeskripsikan cara mengunduh source, menerapkan patch, dan mengompilasi. Ini adalah jalur yang paling fleksibel — kalian mengontrol flag kompilasi dan optimasi untuk hardware spesifik.
ls /usr/ports/www
cat /usr/ports/www/nginx/Makefile | head -20pkgPackages adalah hasil jadi dari ports: binary yang sudah dikompilasi dan siap diinstal. Diurus oleh package manager pkg, jalur ini jauh lebih cepat dan tidak memerlukan toolchain di sistem. Package adalah pilihan default untuk sebagian besar pengguna.
Info
Ports dan packages berbagi basis yang sama: package dibangun dari port. Karena itu, nama dan opsi yang kalian lihat di /usr/ports adalah sumber kebenaran, sementara pkg hanyalah kendaraan distribusinya.
Kernel FreeBSD bersifat modular. Fitur seperti ipfw, bhyve, atau netgraph bisa dimuat dan dibuang saat runtime dengan kldload, kldunload, dan dilihat dengan kldstat:
kldstat
kldload if_lagg
kldunload if_laggBiasanya modul yang paling sering dipakai sudah dikompilasi ke dalam kernel GENERIC yang dirilis bersama FreeBSD. Konfigurasi kernel kustom untuk kebutuhan khusus (seperti membuang modul yang tidak perlu di appliance) dibahas di episode 18.
Di atas kernel, FreeBSD menyediakan userland — seluruh utilitas yang kalian ketik setiap hari: ls, cp, sed, pw, mount, dan lainnya. Semua ditulis dan diuji bersama kernel, sehingga konsistensi antar tool sangat tinggi. Tidak ada perang versi GNU vs BSD seperti di ekosistem Linux.
Urutan boot FreeBSD dimulai dari firmware (UEFI atau BIOS), lalu bootloader, kemudian kernel. Konfigurasi boot disimpan di /boot/loader.conf — kalian bisa mengatur parameter kernel, ukuran ramdisk, dan modul yang dimuat sebelum sistem penuh menyala:
cat /boot/loader.confParameter di file ini sering dipakai untuk tuning awal, seperti kern.maxfiles atau batas memori ZFS ARC, yang akan kita bahas di episode 18.
Manajemen service FreeBSD menggunakan rc system bergaya SysV. Konfigurasi terpusat di /etc/rc.conf, dan skrip layanan ada di /etc/rc.d serta /usr/local/etc/rc.d untuk software dari pkg. Dengan sysrc, kalian bisa mengubah konfigurasi service tanpa mengedit file manual:
sysrc sshd_enable="YES"
service sshd startFreeBSD mendukung dua filesystem utama. UFS adalah pendamping setia dari era Unix klasik — cepat, sederhana, dan dapat diandalkan. ZFS adalah filesystem modern dengan checksum, snapshot, compression, dan pooling yang menjadi pilihan default instalasi sejak beberapa rilis terakhir.
df -h
zpool statusTiga komponen terakhir ini adalah bintang produksi FreeBSD:
Ketiganya akan dibahas mendalam di episode 12-16, tapi penting untuk mengenalnya sekarang karena mereka adalah bagian tak terpisahkan dari arsitektur, bukan add-on terpisah.
Warning
Jangan tergoda menganggap jails seperti Docker secara mental. Jails mengisolasi seluruh sistem operasi (bukan hanya proses), berbagi kernel host, dan dikonfigurasi lewat jail.conf. Konsep yang berbeda menghasilkan cara pakai yang berbeda — jails dibahas di episode 15.
Beberapa direktori khas FreeBSD yang wajib kalian pahami:
| Direktori | Isi |
|---|---|
/etc | Konfigurasi base system |
/etc/rc.conf | Pusat konfigurasi service |
/usr/local | Software dari pkg dan ports |
/usr/ports | Ports tree untuk build dari source |
/boot | Bootloader, kernel, dan loader.conf |
/var/log | Log sistem |
Perhatikan bahwa FreeBSD konsisten menaruh software pihak ketiga di /usr/local, memisahkannya dari base system di /usr dan /bin. Konvensi ini menjaga kejelasan dan memudahkan pembaruan.
Di episode 2 ini kalian sudah memahami arsitektur FreeBSD: base system sebagai unit utuh, ports tree untuk source, dan packages pkg untuk binary. Kalian juga mengenal komponen utama — kernel modular, userland BSD, bootloader dengan loader.conf, rc system, filesystem UFS/ZFS, serta jails, pf, dan bhyve sebagai kekuatan produksi.
Inti yang harus dibawa pulang:
freebsd-update.kldload dan kldstat./etc/rc.conf; ubah dengan sysrc.Di episode 3 selanjutnya kita akan langsung praktik: instalasi FreeBSD dengan bsdinstall dan partitioning — dari langkah-langkah wizard instalasi, pilihan keymap dan hostname, sampai keputusan partisi antara ZFS default dan UFS tradisional. Siapkan image ISO yang sudah kalian unduh di episode 0!