OS: Build OpenWRT x86 dari Source
Bab ini merupakan titik kulminasi dari perjalanan mahasiswa sebagai Embedded & Network OS Engineer. Jika pada bab sebelumnya mahasiswa menggunakan OpenWRT, maka pada bab ini mahasiswa membangun OpenWRT sendiri dari source code, sehingga benar-benar memahami OpenWRT sebagai produk rekayasa sistem operasi, bukan firmware misterius.
Secara pedagogis, bab ini mengintegrasikan konsep:
- Kernel & user space
- Cross-compile & build system
- Filesystem embedded
- Modular OS design
- Reproducible system engineering
Dengan menyelesaikan bab ini, mahasiswa tidak lagi hanya mengkonfigurasi router, tetapi mampu merakit sistem operasi jaringan dari nol.
Build System OpenWRT
Konsep Akademik: OpenWRT sebagai Build-Oriented OS
Berbeda dengan distribusi Linux general-purpose seperti Ubuntu atau Fedora yang berfokus pada binary package management, OpenWRT dirancang sebagai source-based embedded OS. Artinya:
- Sistem dibangun dari source
- Konfigurasi dilakukan sebelum compile
- Output akhir adalah image OS siap boot
- Seluruh sistem bersifat deterministik & reproducible
Pendekatan ini sangat relevan dengan dunia:
- Embedded system
- Network appliance
- Edge computing
- Custom hardware
Inti filosofi OpenWRT:
“You don’t install packages on the device. You design the OS before it exists.”
Struktur Build System OpenWRT
Build system OpenWRT terdiri dari beberapa komponen utama:
- Toolchain → compiler, linker, libc (dibangun otomatis)
- Kernel Linux → disesuaikan target
- Base system → init, shell, networking core
- Package feed → aplikasi tambahan
- Image builder → menghasilkan firmware akhir
Semua dikendalikan oleh GNU Make + Kconfig-style menuconfig, mirip dengan proses compile kernel Linux yang telah dipelajari mahasiswa sebelumnya.
Persiapan Lingkungan Build (Ubuntu 24.04)
Gunakan Ubuntu Server 24.04 sebagai build host agar konsisten dengan bab-bab sebelumnya.
Instal dependensi wajib
sudo apt update sudo apt install -y \ build-essential \ clang \ flex bison \ gawk \ gcc-multilib g++-multilib \ gettext \ git \ libncurses-dev \ libssl-dev \ python3 python3-distutils \ rsync unzip zlib1g-dev \ file wget
Catatan penting akademik:
- Tidak ada proprietary compiler
- Toolchain akan dibangun otomatis oleh OpenWRT
- Lingkungan ini reproducible di semua VM mahasiswa
Mengambil Source Code OpenWRT
Gunakan repositori resmi OpenWRT.
cd ~ git clone https://github.com/openwrt/openwrt.git cd openwrt
Pilih branch stabil (contoh rilis 23.05):
git checkout openwrt-23.05
Verifikasi:
git branch
Update & Install Feed Package
Feed adalah koleksi paket modular OpenWRT.
./scripts/feeds update -a ./scripts/feeds install -a
Ini setara dengan:
apt update apt install
Namun terjadi sebelum OS dibangun, bukan setelah OS berjalan.
Package Selection
Konsep Akademik: OS Modular & Minimalism
OpenWRT mengajarkan prinsip OS minimal:
- Hanya komponen yang benar-benar dibutuhkan
- Tidak ada bloat
- Resource-aware (RAM & storage kecil)
Inilah perbedaan fundamental dengan Linux desktop.
Menuconfig: Otak dari Build System
Jalankan:
make menuconfig
Mahasiswa akan melihat antarmuka konfigurasi berbasis ncurses.
Target Selection (x86)
Pilih:
Target System ---> x86 Subtarget ---> x86_64 Target Profile ---> Generic
Makna akademik:
- OpenWRT tidak “satu OS untuk semua”
- Target menentukan kernel config, driver, dan filesystem
Pemilihan Kernel & Base System
Disarankan default kernel untuk pembelajaran awal.
Aktifkan komponen dasar:
- BusyBox
- procd
- netifd
- firewall4 (nftables)
Ini adalah core networking OS.
Pemilihan Package Penting (Contoh Realistis)
Contoh paket edukatif & praktis:
Networking:
- ip-full
- tcpdump
- iperf3
Management:
- luci (web UI, opsional)
Routing (untuk bab lanjutan):
- olsrd
- batman-adv
Mahasiswa belajar bahwa setiap centang = konsekuensi ukuran & resource.
Image Generation
Konsep Akademik: Image sebagai Produk Akhir OS
Pada OpenWRT, hasil compile bukan .deb atau .rpm, melainkan:
*.img.gz *.vmdk *.ext4
Ini adalah OS image utuh, siap:
- Di-boot
- Di-flash
- Di-deploy
Proses Build Image
Mulai proses compile:
make -j$(nproc)
Waktu:
30–90 menit (tergantung CPU & RAM VM)
Nilai pedagogis penting:
- Mahasiswa melihat toolchain dibangun
- Kernel dikompilasi
- Root filesystem dirakit
- Image di generate otomatis
Lokasi Hasil Build
Setelah sukses:
ls bin/targets/x86/64/
Contoh output:
openwrt-23.05-x86-64-generic-ext4-combined.img.gz
Menjalankan Image di VirtualBox
Ekstrak image:
gunzip openwrt-23.05-x86-64-generic-ext4-combined.img.gz
Konversi ke VDI:
VBoxManage convertfromraw \ openwrt-23.05-x86-64-generic-ext4-combined.img \ OpenWRT-custom.vdi \ --format VDI
Gunakan OpenWRT-custom.vdi sebagai disk VM.
Validasi Sistem
Login:
login: root
Cek sistem:
uname -a cat /etc/openwrt_release ip addr
Mahasiswa kini booting OS hasil rakitan sendiri.
Refleksi Akademik (OBE-Centric)
Setelah menyelesaikan bab ini, mahasiswa mampu secara nyata:
- ✅ Membangun OS embedded dari source
- ✅ Memahami hubungan target ↔ kernel ↔ filesystem
- ✅ Mendesain OS sebelum ia berjalan
- ✅ Membedakan general-purpose OS vs network OS
- ✅ Berpikir sebagai system builder
Challenge Mandiri (Fun & Menantang)
- Tambahkan tcpdump, rebuild image, uji sniffing
- Bandingkan image dengan & tanpa luci
- Aktifkan olsrd, siapkan untuk bab mesh network
- Ukur ukuran image sebelum & sesudah optimasi
Penutup
Jika mahasiswa berhasil menyelesaikan bab ini, maka satu hal jelas:
- Ia tidak lagi “memakai OpenWRT”.
- Ia adalah orang yang membuat OpenWRT.
Bab berikutnya akan membawa OS hasil rakitan ini ke dunia nyata jaringan:
- routing, firewall, dan mesh network.