Belajar NetBSD - Source Build: build.sh & World/Kernel
Episode 10 of 23

Belajar NetBSD - Source Build: build.sh & World/Kernel

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

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

Pendahuluan

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.

Persiapan: Source Tree dan Tools

Mendapatkan Source

Source base system berada di /usr/src. Ambil dari repository resmi CVS atau git. Cara git modern:

Mengambil source tree NetBSD dari git
git clone -b netbsd-11 \
    https://github.com/NetBSD/src.git /usr/src

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

Menyiapkan Obj Directory

Build dilakukan di direktori objek terpisah agar tidak mengotori source. Default build.sh memakai ./obj:

Menyiapkan direktori objek
cd /usr/src
mkdir -p /usr/obj
./build.sh -O /usr/obj params

Perintah build.sh params menampilkan parameter build — cara cepat memverifikasi bahwa setup kalian benar.

Tahapan build.sh

build.sh bekerja dalam beberapa tahap yang bisa dijalankan terpisah atau berurutan:

PerintahFungsi
./build.sh toolsMembangun toolchain (compiler, binutils, dll.)
./build.sh kernel=GENERICMembangun kernel
./build.sh distributionMembangun seluruh userland + sets
./build.sh releaseMembuat release lengkap dalam RELEASEDIR
./build.sh buildSemua di atas (kernel + distribution)

1. Membangun Toolchain

Ini tahap paling memakan waktu pertama kali — membangun compiler dan tools dari source:

Membangun toolchain
cd /usr/src
./build.sh tools
Contoh output build 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.

2. Membangun Kernel dan Distribution

Dengan toolchain siap, bangun kernel dan seluruh userland sekaligus:

Membangun kernel dan world
./build.sh build
Contoh output build world
#   build.sh: Building the kernel
...
#   build.sh: Building the world
...
#   build.sh: Building the release

Opsi -u penting saat build berulang — ia memberi tahu build.sh untuk update obj yang sudah ada alih-alih membangun dari nol:

Build update (build ulang yang berubah saja)
./build.sh -u build

3. Membuat Release

Untuk menghasilkan release lengkap — termasuk sets instalasi dan image installer — gunakan:

Membuat release lengkap
./build.sh -u release
Isi RELEASEDIR setelah release
$ ls /usr/obj/releasedir
binary  CHANGES  ...

Release inilah yang bisa dipakai menginstall NetBSD di mesin lain, atau meng-upgrade mesin ini.

Build Paralel

Build world memakan waktu. build.sh memakai flag -j untuk build paralel:

Build paralel dengan 8 job
./build.sh -j 8 -u build
Contoh output paralel
=> 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.

Cross-Compilation: Membangun untuk Arch Lain

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:

Cross-compile kernel untuk aarch64
./build.sh -m aarch64 kernel=GENERIC64
Contoh output cross build
...
  copying netbsd to .../aarch64/obj/release/kernels/GENERIC64/netbsd

Cara ini juga bekerja untuk distribution penuh:

Cross-build world untuk aarch64
./build.sh -m aarch64 -u release
Daftar arch yang bisa di-target
./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.

Menginstall Hasil Build ke Sistem

Setelah distribution terbangun, pasang ke sistem kalian:

Menginstall hasil build distribution
cd /usr/src
./build.sh install=/ install
Contoh output 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.

Alur Build Lengkap dalam Satu Perintah

Bagi yang ingin sekali jalan:

Alur build lengkap
./build.sh -j 8 -u release
Perkiraan urutan kerja
tools -> kernel -> distribution -> release

Penutup

Pada 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: toolskerneldistributionrelease.
  • Gunakan -u untuk build berulang (update obj saja), -j untuk paralel.
  • Cross-compile dengan -m <arch> — bangun untuk aarch64/riscv dari mesin x86.
  • Hasil build diinstall dengan build.sh install=/ install.
  • Satu perintah ./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!