Difference between revisions of "OS: Build OpenWRT x86 dari Source"
Onnowpurbo (talk | contribs) (Created page with " 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 m...") |
Onnowpurbo (talk | contribs) |
||
| (2 intermediate revisions by the same user not shown) | |||
| 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. | ||
| − | Image Generation | + | ==Image Generation== |
| − | Konsep Akademik: Image sebagai Produk Akhir OS | + | ===Konsep Akademik: Image sebagai Produk Akhir OS=== |
Pada OpenWRT, hasil compile bukan .deb atau .rpm, melainkan: | Pada OpenWRT, hasil compile bukan .deb atau .rpm, melainkan: | ||
| − | *.img.gz | + | *.img.gz |
| − | *.vmdk | + | *.vmdk |
| − | *.ext4 | + | *.ext4 |
Ini adalah OS image utuh, siap: | Ini adalah OS image utuh, siap: | ||
| − | Di-boot | + | * Di-boot |
| − | Di-flash | + | * Di-flash |
| − | Di-deploy | + | * Di-deploy |
| − | Proses Build Image | + | |
| + | ===Proses Build Image=== | ||
Mulai proses compile: | Mulai proses compile: | ||
| − | make -j$(nproc) | + | make -j$(nproc) |
Waktu: | Waktu: | ||
| − | 30–90 menit (tergantung CPU & RAM VM) | + | 30–90 menit (tergantung CPU & RAM VM) |
Nilai pedagogis penting: | Nilai pedagogis penting: | ||
| − | Mahasiswa melihat toolchain dibangun | + | * Mahasiswa melihat toolchain dibangun |
| − | Kernel dikompilasi | + | * Kernel dikompilasi |
| − | Root filesystem dirakit | + | * Root filesystem dirakit |
| − | Image di generate otomatis | + | * Image di generate otomatis |
| − | Lokasi Hasil Build | + | |
| + | ===Lokasi Hasil Build=== | ||
Setelah sukses: | Setelah sukses: | ||
| − | ls bin/targets/x86/64/ | + | ls bin/targets/x86/64/ |
Contoh output: | Contoh output: | ||
| − | openwrt-23.05-x86-64-generic-ext4-combined.img.gz | + | openwrt-23.05-x86-64-generic-ext4-combined.img.gz |
| − | Menjalankan Image di VirtualBox | + | ===Menjalankan Image di VirtualBox=== |
Ekstrak image: | Ekstrak image: | ||
| − | gunzip openwrt-23.05-x86-64-generic-ext4-combined.img.gz | + | gunzip openwrt-23.05-x86-64-generic-ext4-combined.img.gz |
Konversi ke VDI: | Konversi ke VDI: | ||
| − | VBoxManage convertfromraw \ | + | VBoxManage convertfromraw \ |
| − | + | openwrt-23.05-x86-64-generic-ext4-combined.img \ | |
| − | + | OpenWRT-custom.vdi \ | |
| − | + | --format VDI | |
Gunakan OpenWRT-custom.vdi sebagai disk VM. | Gunakan OpenWRT-custom.vdi sebagai disk VM. | ||
| − | Validasi Sistem | + | |
| + | ===Validasi Sistem=== | ||
Login: | Login: | ||
| − | login: root | + | login: root |
Cek sistem: | Cek sistem: | ||
| − | uname -a | + | uname -a |
| − | cat /etc/openwrt_release | + | cat /etc/openwrt_release |
| − | ip addr | + | ip addr |
Mahasiswa kini booting OS hasil rakitan sendiri. | Mahasiswa kini booting OS hasil rakitan sendiri. | ||
| − | Refleksi Akademik (OBE-Centric) | + | |
| + | ==Refleksi Akademik (OBE-Centric)== | ||
Setelah menyelesaikan bab ini, mahasiswa mampu secara nyata: | Setelah menyelesaikan bab ini, mahasiswa mampu secara nyata: | ||
| − | ✅ Membangun OS embedded dari source | + | * ✅ Membangun OS embedded dari source |
| − | ✅ Memahami hubungan target ↔ kernel ↔ filesystem | + | * ✅ Memahami hubungan target ↔ kernel ↔ filesystem |
| − | ✅ Mendesain OS sebelum ia berjalan | + | * ✅ Mendesain OS sebelum ia berjalan |
| − | ✅ Membedakan general-purpose OS vs network OS | + | * ✅ Membedakan general-purpose OS vs network OS |
| − | ✅ Berpikir sebagai system builder | + | * ✅ Berpikir sebagai system builder |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | Penutup | + | ==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: | Jika mahasiswa berhasil menyelesaikan bab ini, maka satu hal jelas: | ||
| − | Ia tidak lagi “memakai OpenWRT”. | + | * Ia tidak lagi “memakai OpenWRT”. |
| − | Ia adalah orang yang membuat OpenWRT. | + | * Ia adalah orang yang membuat OpenWRT. |
Bab berikutnya akan membawa OS hasil rakitan ini ke dunia nyata jaringan: | Bab berikutnya akan membawa OS hasil rakitan ini ke dunia nyata jaringan: | ||
| − | routing, firewall, dan mesh network. | + | * routing, firewall, dan mesh network. |
| − | |||
==Pranala Menarik== | ==Pranala Menarik== | ||
* [[Sistem operasi]] | * [[Sistem operasi]] | ||
Latest revision as of 05:18, 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.