Membangun NetBSD dari source dengan build.sh: membuat toolchain, membangun kernel dan userland/world, menjalankan build paralel, serta melakukan cross-compilation untuk arsitektur lain.

Di episode 9 sebelumnya kita telah membangun kernel kustom dengan build.sh kernel=MYCUSTOM. Kini saatnya menyelesaikan gambaran besarnya: pada episode ini kita akan membangun seluruh NetBSD dari source — bukan hanya kernel, tetapi juga toolchain dan seluruh userland (yang kita sebut "world"). Inilah puncak filosofi source-based NetBSD yang kita kenalkan di episode 2.
Source base system berada di /usr/src. Ambil dari repository resmi CVS atau git. Cara git modern:
git clone -b netbsd-11 \
https://github.com/NetBSD/src.git /usr/srcPastikan tools dasar tersedia. NetBSD 11 memakai toolchain LLVM/clang sebagai default, tetapi build.sh membangun toolchain-nya sendiri pada tahap pertama — jadi persyaratan minimal cukup: shell, make, dan ruang disk yang cukup (disarankan 10-15 GB).
Build dilakukan di direktori objek terpisah agar tidak mengotori source. Default build.sh memakai ./obj:
cd /usr/src
mkdir -p /usr/obj
./build.sh -O /usr/obj paramsPerintah build.sh params menampilkan parameter build — cara cepat memverifikasi bahwa setup kalian benar.
build.sh bekerja dalam beberapa tahap yang bisa dijalankan terpisah atau berurutan:
| Perintah | Fungsi |
|---|---|
./build.sh tools | Membangun toolchain (compiler, binutils, dll.) |
./build.sh kernel=GENERIC | Membangun kernel |
./build.sh distribution | Membangun seluruh userland + sets |
./build.sh release | Membuat release lengkap dalam RELEASEDIR |
./build.sh build | Semua di atas (kernel + distribution) |
Ini tahap paling memakan waktu pertama kali — membangun compiler dan tools dari source:
cd /usr/src
./build.sh tools...
Building tool: nbtoolchain-gcc-10.5 ...
Build started at ... finished at ...Sekali terbangun, toolchain disimpan di obj directory dan dipakai ulang untuk build berikutnya — build berikutnya jauh lebih cepat.
Dengan toolchain siap, bangun kernel dan seluruh userland sekaligus:
./build.sh build# build.sh: Building the kernel
...
# build.sh: Building the world
...
# build.sh: Building the releaseOpsi -u penting saat build berulang — ia memberi tahu build.sh untuk update obj yang sudah ada alih-alih membangun dari nol:
./build.sh -u buildUntuk menghasilkan release lengkap — termasuk sets instalasi dan image installer — gunakan:
./build.sh -u release$ ls /usr/obj/releasedir
binary CHANGES ...Release inilah yang bisa dipakai menginstall NetBSD di mesin lain, atau meng-upgrade mesin ini.
Build world memakan waktu. build.sh memakai flag -j untuk build paralel:
./build.sh -j 8 -u build=> Running bootstrap mk-files
# Build started at ...Pilih angka job sesuai jumlah core. Cek core kalian dengan sysctl hw.ncpu. Aturan umum: 1-2 job per core.
Inilah kekuatan paling mengesankan dari build.sh: cross-compilation. Kalian bisa membangun NetBSD untuk arsitektur lain dari mesin yang berbeda — misalnya membangun image untuk Raspberry Pi (aarch64) dari PC x86_64, atau membangun untuk RISC-V tanpa memiliki hardware RISC-V.
Cukup beri flag -m dengan arsitektur target:
./build.sh -m aarch64 kernel=GENERIC64...
copying netbsd to .../aarch64/obj/release/kernels/GENERIC64/netbsdCara ini juga bekerja untuk distribution penuh:
./build.sh -m aarch64 -u release./build.sh -m aarch64 ...
./build.sh -m riscv64 ...
./build.sh -m evbarm ...Info
Kekuatan cross-build inilah yang membuat NetBSD sangat diminati di dunia embedded: pabrikan dan komunitas membangun image untuk ratusan perangkat dari beberapa mesin build pusat, tanpa perlu memiliki setiap perangkat kerasnya.
Setelah distribution terbangun, pasang ke sistem kalian:
cd /usr/src
./build.sh install=/ install...
===> Installing updated files
Installing /bin/ls
...Perintah ini menyalin seluruh userland hasil build ke sistem — inilah cara NetBSD "meng-upgrade world" dari source, setara dengan distribution upgrade di distro Linux.
Bagi yang ingin sekali jalan:
./build.sh -j 8 -u releasetools -> kernel -> distribution -> releasePada episode 10 ini, kalian telah membangun NetBSD utuh dari source dengan build.sh: membuat toolchain, membangun kernel dan userland/world, menjalankan build paralel dengan -j, membuat release, melakukan cross-compilation untuk arsitektur lain, dan menginstall hasil build ke sistem.
Inti yang harus dibawa pulang:
build.sh bekerja bertahap: tools → kernel → distribution → release.-u untuk build berulang (update obj saja), -j untuk paralel.-m <arch> — bangun untuk aarch64/riscv dari mesin x86.build.sh install=/ install../build.sh -j 8 -u release membangun seluruh sistem.Di episode 11 selanjutnya kita akan melindungi aset paling berharga: data management dan backup — merawat filesystem dengan fsck, membuat snapshot, dan menyusun strategi backup dengan dump, tar, cpio, dan rsync. Sampai jumpa di episode 11!