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

From OnnoWiki
Jump to navigation Jump to search
(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...")
 
 
(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.
  
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.
  
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-23.05-x86-64-generic-ext4-combined.img \
  OpenWRT-custom.vdi \
+
  OpenWRT-custom.vdi \
  --format 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
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
+
==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.

Pranala Menarik