OS: Build OpenWRT x86 dari Source

From OnnoWiki
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