Difference between revisions of "OS: Build OpenWRT x86 dari Source"

From OnnoWiki
Jump to navigation Jump to search
Line 1: Line 1:
 +
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.
  
−
BAB 11. 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:
 
Secara pedagogis, bab ini mengintegrasikan konsep:
−
Kernel & user space
+
* Kernel & user space
−
Cross-compile & build system
+
* Cross-compile & build system
−
Filesystem embedded
+
* Filesystem embedded
−
Modular OS design
+
* Modular OS design
−
Reproducible system engineering
+
* Reproducible system engineering
 
Dengan menyelesaikan bab ini, mahasiswa tidak lagi hanya mengkonfigurasi router, tetapi mampu merakit sistem operasi jaringan dari nol.
 
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
+
==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:
 
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
+
* Sistem dibangun dari source
−
Konfigurasi dilakukan sebelum compile
+
* Konfigurasi dilakukan sebelum compile
−
Output akhir adalah image OS siap boot
+
* Output akhir adalah image OS siap boot
−
Seluruh sistem bersifat deterministik & reproducible
+
* Seluruh sistem bersifat deterministik & reproducible
 +
 
 
Pendekatan ini sangat relevan dengan dunia:
 
Pendekatan ini sangat relevan dengan dunia:
−
Embedded system
+
* Embedded system
−
Network appliance
+
* Network appliance
−
Edge computing
+
* Edge computing
−
Custom hardware
+
* Custom hardware
 
Inti filosofi OpenWRT:
 
Inti filosofi OpenWRT:
−
“You don’t install packages on the device. You design the OS before it exists.”
+
“You don’t install packages on the device. You design the OS before it exists.”
  
−
Struktur Build System OpenWRT
+
==Struktur Build System OpenWRT==
 
Build system OpenWRT terdiri dari beberapa komponen utama:
 
Build system OpenWRT terdiri dari beberapa komponen utama:
−
Toolchain → compiler, linker, libc (dibangun otomatis)
+
* Toolchain → compiler, linker, libc (dibangun otomatis)
−
Kernel Linux → disesuaikan target
+
* Kernel Linux → disesuaikan target
−
Base system → init, shell, networking core
+
* Base system → init, shell, networking core
−
Package feed → aplikasi tambahan
+
* Package feed → aplikasi tambahan
−
Image builder → menghasilkan firmware akhir
+
* Image builder → menghasilkan firmware akhir
 
Semua dikendalikan oleh GNU Make + Kconfig-style menuconfig, mirip dengan proses compile kernel Linux yang telah dipelajari mahasiswa sebelumnya.
 
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)
+
 
 +
==Persiapan Lingkungan Build (Ubuntu 24.04)==
 
Gunakan Ubuntu Server 24.04 sebagai build host agar konsisten dengan bab-bab sebelumnya.
 
Gunakan Ubuntu Server 24.04 sebagai build host agar konsisten dengan bab-bab sebelumnya.
 +
 
Instal dependensi wajib
 
Instal dependensi wajib
−
sudo apt update
+
sudo apt update
−
sudo apt install -y \
+
sudo apt install -y \
−
  build-essential \
+
  build-essential \
−
  clang \
+
  clang \
−
  flex bison \
+
  flex bison \
−
  gawk \
+
  gawk \
−
  gcc-multilib g++-multilib \
+
  gcc-multilib g++-multilib \
−
  gettext \
+
  gettext \
−
  git \
+
  git \
−
  libncurses-dev \
+
  libncurses-dev \
−
  libssl-dev \
+
  libssl-dev \
−
  python3 python3-distutils \
+
  python3 python3-distutils \
−
  rsync unzip zlib1g-dev \
+
  rsync unzip zlib1g-dev \
−
  file wget
+
  file wget
 +
 
 
Catatan penting akademik:
 
Catatan penting akademik:
−
Tidak ada proprietary compiler
+
* Tidak ada proprietary compiler
−
Toolchain akan dibangun otomatis oleh OpenWRT
+
* Toolchain akan dibangun otomatis oleh OpenWRT
−
Lingkungan ini reproducible di semua VM mahasiswa
+
* Lingkungan ini reproducible di semua VM mahasiswa
−
Mengambil Source Code OpenWRT
+
 
 +
==Mengambil Source Code OpenWRT==
 
Gunakan repositori resmi OpenWRT.
 
Gunakan repositori resmi OpenWRT.
−
cd ~
+
cd ~
−
git clone https://github.com/openwrt/openwrt.git
+
git clone https://github.com/openwrt/openwrt.git
−
cd openwrt
+
cd openwrt
 +
 
 
Pilih branch stabil (contoh rilis 23.05):
 
Pilih branch stabil (contoh rilis 23.05):
−
git checkout openwrt-23.05
+
git checkout openwrt-23.05
  
 
Verifikasi:
 
Verifikasi:
−
git branch
+
git branch
−
Update & Install Feed Package
+
 
 +
==Update & Install Feed Package==
 
Feed adalah koleksi paket modular OpenWRT.
 
Feed adalah koleksi paket modular OpenWRT.
−
./scripts/feeds update -a
+
./scripts/feeds update -a
−
./scripts/feeds install -a
+
./scripts/feeds install -a
 
Ini setara dengan:
 
Ini setara dengan:
−
apt update
+
apt update
−
apt install
+
apt install
 
Namun terjadi sebelum OS dibangun, bukan setelah OS berjalan.
 
Namun terjadi sebelum OS dibangun, bukan setelah OS berjalan.
−
Package Selection
+
 
−
Konsep Akademik: OS Modular & Minimalism
+
==Package Selection==
 +
===Konsep Akademik: OS Modular & Minimalism===
 
OpenWRT mengajarkan prinsip OS minimal:
 
OpenWRT mengajarkan prinsip OS minimal:
−
Hanya komponen yang benar-benar dibutuhkan
+
* Hanya komponen yang benar-benar dibutuhkan
−
Tidak ada bloat
+
* Tidak ada bloat
−
Resource-aware (RAM & storage kecil)
+
* Resource-aware (RAM & storage kecil)
 
Inilah perbedaan fundamental dengan Linux desktop.
 
Inilah perbedaan fundamental dengan Linux desktop.
−
Menuconfig: Otak dari Build System
+
 
 +
===Menuconfig: Otak dari Build System===
 
Jalankan:
 
Jalankan:
−
make menuconfig
+
make menuconfig
 
Mahasiswa akan melihat antarmuka konfigurasi berbasis ncurses.
 
Mahasiswa akan melihat antarmuka konfigurasi berbasis ncurses.
  
−
Target Selection (x86)
+
===Target Selection (x86)===
 
Pilih:
 
Pilih:
−
Target System  ---> x86
+
Target System  ---> x86
−
Subtarget      ---> x86_64
+
Subtarget      ---> x86_64
−
Target Profile ---> Generic
+
Target Profile ---> Generic
 
Makna akademik:
 
Makna akademik:
−
OpenWRT tidak “satu OS untuk semua”
+
* OpenWRT tidak “satu OS untuk semua”
−
Target menentukan kernel config, driver, dan filesystem
+
* Target menentukan kernel config, driver, dan filesystem
−
Pemilihan Kernel & Base System
+
 
 +
===Pemilihan Kernel & Base System===
 
Disarankan default kernel untuk pembelajaran awal.
 
Disarankan default kernel untuk pembelajaran awal.
 +
 
Aktifkan komponen dasar:
 
Aktifkan komponen dasar:
−
BusyBox
+
* BusyBox
−
procd
+
* procd
−
netifd
+
* netifd
−
firewall4 (nftables)
+
* firewall4 (nftables)
 
Ini adalah core networking OS.
 
Ini adalah core networking OS.
−
Pemilihan Package Penting (Contoh Realistis)
+
 
 +
===Pemilihan Package Penting (Contoh Realistis)===
 
Contoh paket edukatif & praktis:
 
Contoh paket edukatif & praktis:
 +
 
Networking:
 
Networking:
−
ip-full
+
* ip-full
−
tcpdump
+
* tcpdump
−
iperf3
+
* iperf3
 +
 
 
Management:
 
Management:
−
luci (web UI, opsional)
+
* luci (web UI, opsional)
 +
 
 
Routing (untuk bab lanjutan):
 
Routing (untuk bab lanjutan):
−
olsrd
+
* olsrd
−
batman-adv
+
* batman-adv
 +
 
 
Mahasiswa belajar bahwa setiap centang = konsekuensi ukuran & resource.
 
Mahasiswa belajar bahwa setiap centang = konsekuensi ukuran & resource.
  

Revision as of 05:14, 15 February 2026

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