OS: Build OpenWRT x86 dari Source: Difference between revisions
No edit summary |
No edit summary |
||
| 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. | |||
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 \ | |||
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: | 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 22:14, 14 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.