OS: Build OpenWRT x86 dari Source

From OnnoWiki
Revision as of 05:14, 15 February 2026 by Onnowpurbo (talk | contribs)
Jump to navigation Jump to search

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.

Pranala Menarik