Difference between revisions of "OS: Android x86 from Scratch"
Onnowpurbo (talk | contribs) (Created page with " BAB 14. Android x86 from Scratch Android x86 sebagai Objek Studi Sistem Operasi Dalam mata kuliah Sistem Operasi Lanjutan, Android x86 digunakan sebagai laboratorium sistem o...") |
Onnowpurbo (talk | contribs) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| + | Dalam mata kuliah Sistem Operasi Lanjutan, Android x86 digunakan sebagai laboratorium sistem operasi, bukan sebagai pengganti smartphone. Pendekatan ini konsisten dengan filosofi buku bahwa OS harus dibongkar, dibangun, dan diuji, bukan sekadar digunakan. Dengan Android x86, mahasiswa dapat mengamati langsung relasi kernel–user space, runtime behavior, process isolation, dan security model Android dalam lingkungan yang reproducible. | ||
| − | + | [[File:Android-AOSP.png|center|300px|thumb]] | |
| − | |||
| − | |||
Android x86 adalah port AOSP (Android Open Source Project) ke arsitektur x86/x86_64, sehingga: | Android x86 adalah port AOSP (Android Open Source Project) ke arsitektur x86/x86_64, sehingga: | ||
| − | Dapat dijalankan di PC, VM, dan emulator | + | * Dapat dijalankan di PC, VM, dan emulator |
| − | Dapat di-debug dengan tool Linux standar | + | * Dapat di-debug dengan tool Linux standar |
| − | Cocok untuk eksperimen kernel, HAL, dan user space | + | * Cocok untuk eksperimen kernel, HAL, dan user space |
| + | |||
Poin kunci: | Poin kunci: | ||
| − | Android x86 menjadikan Android setara dengan Ubuntu Server dan OpenWRT sebagai objek studi OS di lab virtual. | + | Android x86 menjadikan Android setara dengan Ubuntu Server dan OpenWRT sebagai objek studi OS di lab virtual. |
| − | Android x86 vs Android Device (Smartphone) | + | ==Android x86 vs Android Device (Smartphone)== |
Perbandingan ini penting agar mahasiswa memahami apa yang sama secara fundamental dan apa yang berbeda secara implementasi. | Perbandingan ini penting agar mahasiswa memahami apa yang sama secara fundamental dan apa yang berbeda secara implementasi. | ||
| + | |||
Kesamaan fundamental (perspektif OS): | Kesamaan fundamental (perspektif OS): | ||
| − | Menggunakan Linux kernel | + | * Menggunakan Linux kernel |
| − | Pemisahan kernel space dan user space | + | * Pemisahan kernel space dan user space |
| − | Android Runtime (ART) | + | * Android Runtime (ART) |
| − | Framework dan system services | + | * Framework dan system services |
| − | Model keamanan berbasis UID + SELinux | + | * Model keamanan berbasis UID + SELinux |
| + | |||
Perbedaan utama (implementasi): | Perbedaan utama (implementasi): | ||
| − | Android device | + | |
| − | Kernel vendor-specific | + | * Android device |
| − | Hardware khusus (ARM SoC, sensor mobile) | + | ** Kernel vendor-specific |
| − | Bootloader sering proprietary | + | ** Hardware khusus (ARM SoC, sensor mobile) |
| − | Sulit dimodifikasi untuk pembelajaran OS | + | ** Bootloader sering proprietary |
| − | Android x86 | + | ** Sulit dimodifikasi untuk pembelajaran OS |
| − | Kernel generic x86 | + | |
| − | Hardware PC/virtual | + | * Android x86 |
| − | Boot via ISO / GRUB | + | ** Kernel generic x86 |
| − | Sangat hackable dan cocok untuk lab | + | ** Hardware PC/virtual |
| + | ** Boot via ISO / GRUB | ||
| + | ** Sangat hackable dan cocok untuk lab | ||
| + | |||
Insight akademik: | Insight akademik: | ||
| − | Android x86 adalah “Android versi engineering”—fokus pada transparansi sistem, bukan kenyamanan pengguna akhir. | + | Android x86 adalah “Android versi engineering”—fokus pada transparansi sistem, bukan kenyamanan pengguna akhir. |
| − | Posisi Android x86 dalam Peta Arsitektur OS | + | |
| + | ==Posisi Android x86 dalam Peta Arsitektur OS== | ||
Jika disejajarkan dengan bab-bab sebelumnya: | Jika disejajarkan dengan bab-bab sebelumnya: | ||
| − | Ubuntu Server 24.04 → general-purpose OS | + | * Ubuntu Server 24.04 → general-purpose OS |
| − | OpenWRT x86 → network & embedded OS | + | * OpenWRT x86 → network & embedded OS |
| − | Android x86 → application-centric OS dengan isolasi ketat | + | * Android x86 → application-centric OS dengan isolasi ketat |
| + | |||
Ketiganya berbagi fondasi: | Ketiganya berbagi fondasi: | ||
| − | Linux kernel | + | * Linux kernel |
| − | Process scheduling | + | * Process scheduling |
| − | Virtual memory | + | * Virtual memory |
| − | Device driver | + | * Device driver |
| − | Networking stack | + | * Networking stack |
| + | |||
Refleksi OBE: | Refleksi OBE: | ||
| − | Mahasiswa memahami satu kernel, banyak desain OS—sebuah system thinking yang krusial. | + | Mahasiswa memahami satu kernel, banyak desain OS—sebuah system thinking yang krusial. |
| − | Build Environment Android x86 (Ubuntu 24.04) | + | |
| + | ==Build Environment Android x86 (Ubuntu 24.04)== | ||
Seperti pada bab Compile Kernel Linux dan Build OpenWRT x86, lingkungan build adalah fondasi. Build Android berskala besar dan resource-intensive—ini adalah pengalaman engineering nyata. | Seperti pada bab Compile Kernel Linux dan Build OpenWRT x86, lingkungan build adalah fondasi. Build Android berskala besar dan resource-intensive—ini adalah pengalaman engineering nyata. | ||
| − | Spesifikasi Minimum Sistem Build | + | |
| + | ===Spesifikasi Minimum Sistem Build=== | ||
Disarankan menggunakan VM Ubuntu Server 24.04: | Disarankan menggunakan VM Ubuntu Server 24.04: | ||
| − | CPU: 4 core (minimum 2) | + | * CPU: 4 core (minimum 2) |
| − | RAM: 8–16 GB (minimum 8 GB) | + | * RAM: 8–16 GB (minimum 8 GB) |
| − | Disk: ≥ 150 GB | + | * Disk: ≥ 150 GB |
| − | OS: Ubuntu 24.04 LTS | + | * OS: Ubuntu 24.04 LTS |
| − | Internet stabil | + | * Internet stabil |
Catatan: | Catatan: | ||
| − | Keterbatasan resource akan terasa—dan itu bagian dari pembelajaran OS skala industri. | + | Keterbatasan resource akan terasa—dan itu bagian dari pembelajaran OS skala industri. |
| − | Instalasi Dependency Build AOSP | + | |
| + | ===Instalasi Dependency Build AOSP=== | ||
Jalankan perintah berikut di Ubuntu 24.04: | Jalankan perintah berikut di Ubuntu 24.04: | ||
| − | sudo apt update | + | sudo apt update |
| − | sudo apt install -y \ | + | sudo apt install -y \ |
| − | + | git-core gnupg flex bison build-essential \ | |
| − | + | zip curl zlib1g-dev gcc-multilib g++-multilib \ | |
| − | + | libc6-dev-i386 libncurses5-dev x11proto-core-dev \ | |
| − | + | libx11-dev libgl1-mesa-dev libxml2-utils \ | |
| − | + | xsltproc unzip fontconfig | |
| + | |||
Instal Java dan repo tool: | Instal Java dan repo tool: | ||
| − | sudo apt install -y openjdk-17-jdk repo | + | sudo apt install -y openjdk-17-jdk repo |
| + | |||
Verifikasi: | Verifikasi: | ||
| − | java -version | + | java -version |
| − | repo --version | + | repo --version |
Keterkaitan OS: | Keterkaitan OS: | ||
| − | Seluruh proses build AOSP bergantung pada toolchain GNU/Linux, memperkuat relevansi Ubuntu sebagai core platform. | + | Seluruh proses build AOSP bergantung pada toolchain GNU/Linux, memperkuat relevansi Ubuntu sebagai core platform. |
| − | AOSP Build Process (Android x86) | + | ===AOSP Build Process (Android x86)=== |
Mengambil Source Code Android x86 | Mengambil Source Code Android x86 | ||
| + | |||
Buat direktori kerja: | Buat direktori kerja: | ||
| − | mkdir -p ~/android-x86 | + | mkdir -p ~/android-x86 |
| − | cd ~/android-x86 | + | cd ~/android-x86 |
| + | |||
Inisialisasi repo Android x86: | Inisialisasi repo Android x86: | ||
| − | repo init -u https://github.com/android-x86/manifest.git | + | repo init -u https://github.com/android-x86/manifest.git |
| − | repo sync -j$(nproc) | + | repo sync -j$(nproc) |
| + | |||
Proses sinkronisasi besar dan lama—ini normal dan mencerminkan kompleksitas OS modern. | Proses sinkronisasi besar dan lama—ini normal dan mencerminkan kompleksitas OS modern. | ||
| − | Menyiapkan Environment Build | + | |
| + | ===Menyiapkan Environment Build=== | ||
Aktifkan environment build: | Aktifkan environment build: | ||
| − | source build/envsetup.sh | + | source build/envsetup.sh |
Pilih target build: | Pilih target build: | ||
| − | lunch android_x86_64-userdebug | + | lunch android_x86_64-userdebug |
Penjelasan: | Penjelasan: | ||
| − | x86_64 → arsitektur target | + | * x86_64 → arsitektur target |
| − | userdebug → debug-friendly, ideal untuk lab OS | + | * userdebug → debug-friendly, ideal untuk lab OS |
| − | Proses Build Android x86 | + | |
| + | ===Proses Build Android x86=== | ||
Mulai build: | Mulai build: | ||
| − | make -j$(nproc) | + | make -j$(nproc) |
| + | |||
Hasil build berada di: | Hasil build berada di: | ||
| − | out/target/product/x86_64/ | + | out/target/product/x86_64/ |
| + | |||
File penting: | File penting: | ||
| − | kernel | + | kernel |
| − | system.img | + | system.img |
| − | ramdisk.img | + | ramdisk.img |
| − | android_x86_64.iso | + | android_x86_64.iso |
| + | |||
Analogi akademik: | Analogi akademik: | ||
| − | Setara dengan kernel image + initramfs + root filesystem pada Linux/OpenWRT. | + | Setara dengan kernel image + initramfs + root filesystem pada Linux/OpenWRT. |
| − | Emulator & Virtual Machine | + | |
| − | Emulator Android (Konsep & Batasan) | + | ==Emulator & Virtual Machine== |
| + | ===Emulator Android (Konsep & Batasan)=== | ||
Emulator: | Emulator: | ||
| − | Mensimulasikan hardware | + | * Mensimulasikan hardware |
| − | Cocok untuk pengujian aplikasi | + | * Cocok untuk pengujian aplikasi |
| − | Kurang cocok untuk pembelajaran OS level | + | * Kurang cocok untuk pembelajaran OS level |
| − | Dalam konteks mata kuliah ini, emulator bukan fokus utama. | + | * Dalam konteks mata kuliah ini, emulator bukan fokus utama. |
| − | Android x86 di Virtual Machine (Pendekatan Utama) | + | |
| + | ===Android x86 di Virtual Machine (Pendekatan Utama)=== | ||
Menggunakan VirtualBox (selaras dengan Praktikum 1). | Menggunakan VirtualBox (selaras dengan Praktikum 1). | ||
| + | |||
Langkah-langkah setup VM Android x86: | Langkah-langkah setup VM Android x86: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | out/target/product/x86_64/android_x86_64.iso | + | * Create VM |
| − | Boot & Install | + | ** Name: Android-x86 |
| − | Pilih Install Android-x86 to harddisk | + | ** Type: Linux |
| − | Filesystem: ext4 | + | ** Version: Other Linux (64-bit) |
| − | Install GRUB bootloader | + | |
| − | Boot Android x86 | + | * Resource |
| − | Verifikasi Android sebagai Sistem Operasi | + | ** RAM: 4–8 GB |
| + | ** CPU: 2–4 core | ||
| + | |||
| + | * Storage | ||
| + | ** Attach ISO: | ||
| + | out/target/product/x86_64/android_x86_64.iso | ||
| + | |||
| + | * Boot & Install | ||
| + | ** Pilih Install Android-x86 to harddisk | ||
| + | ** Filesystem: ext4 | ||
| + | ** Install GRUB bootloader | ||
| + | |||
| + | * Boot Android x86 | ||
| + | |||
| + | ==Verifikasi Android sebagai Sistem Operasi== | ||
| + | |||
Masuk ke Android shell: | Masuk ke Android shell: | ||
| − | adb shell | + | adb shell |
| + | |||
Cek kernel: | Cek kernel: | ||
| − | uname -a | + | uname -a |
| + | |||
Cek process: | Cek process: | ||
| − | ps -A | head | + | ps -A | head |
Observasi penting: | Observasi penting: | ||
| − | Android berjalan sebagai multi-process OS, dengan isolasi proses berbasis kernel Linux. | + | Android berjalan sebagai multi-process OS, dengan isolasi proses berbasis kernel Linux. |
| − | Mini Eksperimen (Hands-on, Fun & Menantang) | + | |
| + | ==Mini Eksperimen (Hands-on, Fun & Menantang)== | ||
Beberapa eksperimen sederhana namun bermakna: | Beberapa eksperimen sederhana namun bermakna: | ||
| + | |||
Matikan zygote: | Matikan zygote: | ||
| + | stop zygote | ||
| + | → UI berhenti (bukti zygote inti user space) | ||
| − | |||
| − | |||
Observasi memori: | Observasi memori: | ||
| − | + | free -h | |
| − | free -h | ||
Bandingkan dengan Ubuntu: | Bandingkan dengan Ubuntu: | ||
| + | ps aux | ||
| − | |||
Insight: | Insight: | ||
| − | Kernel sama, tetapi desain user space membentuk karakter OS. | + | Kernel sama, tetapi desain user space membentuk karakter OS. |
| − | Refleksi Akademik (OBE-Oriented) | + | |
| + | ==Refleksi Akademik (OBE-Oriented)== | ||
Setelah bab ini, mahasiswa mampu: | Setelah bab ini, mahasiswa mampu: | ||
| − | Membangun Android OS dari source | + | * Membangun Android OS dari source |
| − | Menjelaskan perbedaan Android device vs Android x86 | + | * Menjelaskan perbedaan Android device vs Android x86 |
| − | Menjalankan Android sebagai OS di VM | + | * Menjalankan Android sebagai OS di VM |
| − | Mengaitkan Android dengan konsep kernel Linux | + | * Mengaitkan Android dengan konsep kernel Linux |
| − | Melihat Android sebagai sistem operasi utuh | + | * Melihat Android sebagai sistem operasi utuh |
| + | |||
Penutup | Penutup | ||
Bab ini menegaskan bahwa Android bukan black box. Dengan Android x86, mahasiswa: | Bab ini menegaskan bahwa Android bukan black box. Dengan Android x86, mahasiswa: | ||
| − | bertransformasi dari pengguna Android menjadi pembangun sistem operasi Android. | + | bertransformasi dari pengguna Android menjadi pembangun sistem operasi Android. |
Latest revision as of 10:13, 15 February 2026
Dalam mata kuliah Sistem Operasi Lanjutan, Android x86 digunakan sebagai laboratorium sistem operasi, bukan sebagai pengganti smartphone. Pendekatan ini konsisten dengan filosofi buku bahwa OS harus dibongkar, dibangun, dan diuji, bukan sekadar digunakan. Dengan Android x86, mahasiswa dapat mengamati langsung relasi kernel–user space, runtime behavior, process isolation, dan security model Android dalam lingkungan yang reproducible.
Android x86 adalah port AOSP (Android Open Source Project) ke arsitektur x86/x86_64, sehingga:
- Dapat dijalankan di PC, VM, dan emulator
- Dapat di-debug dengan tool Linux standar
- Cocok untuk eksperimen kernel, HAL, dan user space
Poin kunci:
Android x86 menjadikan Android setara dengan Ubuntu Server dan OpenWRT sebagai objek studi OS di lab virtual.
Android x86 vs Android Device (Smartphone)
Perbandingan ini penting agar mahasiswa memahami apa yang sama secara fundamental dan apa yang berbeda secara implementasi.
Kesamaan fundamental (perspektif OS):
- Menggunakan Linux kernel
- Pemisahan kernel space dan user space
- Android Runtime (ART)
- Framework dan system services
- Model keamanan berbasis UID + SELinux
Perbedaan utama (implementasi):
- Android device
- Kernel vendor-specific
- Hardware khusus (ARM SoC, sensor mobile)
- Bootloader sering proprietary
- Sulit dimodifikasi untuk pembelajaran OS
- Android x86
- Kernel generic x86
- Hardware PC/virtual
- Boot via ISO / GRUB
- Sangat hackable dan cocok untuk lab
Insight akademik:
Android x86 adalah “Android versi engineering”—fokus pada transparansi sistem, bukan kenyamanan pengguna akhir.
Posisi Android x86 dalam Peta Arsitektur OS
Jika disejajarkan dengan bab-bab sebelumnya:
- Ubuntu Server 24.04 → general-purpose OS
- OpenWRT x86 → network & embedded OS
- Android x86 → application-centric OS dengan isolasi ketat
Ketiganya berbagi fondasi:
- Linux kernel
- Process scheduling
- Virtual memory
- Device driver
- Networking stack
Refleksi OBE:
Mahasiswa memahami satu kernel, banyak desain OS—sebuah system thinking yang krusial.
Build Environment Android x86 (Ubuntu 24.04)
Seperti pada bab Compile Kernel Linux dan Build OpenWRT x86, lingkungan build adalah fondasi. Build Android berskala besar dan resource-intensive—ini adalah pengalaman engineering nyata.
Spesifikasi Minimum Sistem Build
Disarankan menggunakan VM Ubuntu Server 24.04:
- CPU: 4 core (minimum 2)
- RAM: 8–16 GB (minimum 8 GB)
- Disk: ≥ 150 GB
- OS: Ubuntu 24.04 LTS
- Internet stabil
Catatan:
Keterbatasan resource akan terasa—dan itu bagian dari pembelajaran OS skala industri.
Instalasi Dependency Build AOSP
Jalankan perintah berikut di Ubuntu 24.04:
sudo apt update sudo apt install -y \ git-core gnupg flex bison build-essential \ zip curl zlib1g-dev gcc-multilib g++-multilib \ libc6-dev-i386 libncurses5-dev x11proto-core-dev \ libx11-dev libgl1-mesa-dev libxml2-utils \ xsltproc unzip fontconfig
Instal Java dan repo tool:
sudo apt install -y openjdk-17-jdk repo
Verifikasi:
java -version repo --version
Keterkaitan OS:
Seluruh proses build AOSP bergantung pada toolchain GNU/Linux, memperkuat relevansi Ubuntu sebagai core platform.
AOSP Build Process (Android x86)
Mengambil Source Code Android x86
Buat direktori kerja:
mkdir -p ~/android-x86 cd ~/android-x86
Inisialisasi repo Android x86:
repo init -u https://github.com/android-x86/manifest.git repo sync -j$(nproc)
Proses sinkronisasi besar dan lama—ini normal dan mencerminkan kompleksitas OS modern.
Menyiapkan Environment Build
Aktifkan environment build:
source build/envsetup.sh
Pilih target build:
lunch android_x86_64-userdebug
Penjelasan:
- x86_64 → arsitektur target
- userdebug → debug-friendly, ideal untuk lab OS
Proses Build Android x86
Mulai build:
make -j$(nproc)
Hasil build berada di:
out/target/product/x86_64/
File penting:
kernel system.img ramdisk.img android_x86_64.iso
Analogi akademik:
Setara dengan kernel image + initramfs + root filesystem pada Linux/OpenWRT.
Emulator & Virtual Machine
Emulator Android (Konsep & Batasan)
Emulator:
- Mensimulasikan hardware
- Cocok untuk pengujian aplikasi
- Kurang cocok untuk pembelajaran OS level
- Dalam konteks mata kuliah ini, emulator bukan fokus utama.
Android x86 di Virtual Machine (Pendekatan Utama)
Menggunakan VirtualBox (selaras dengan Praktikum 1).
Langkah-langkah setup VM Android x86:
- Create VM
- Name: Android-x86
- Type: Linux
- Version: Other Linux (64-bit)
- Resource
- RAM: 4–8 GB
- CPU: 2–4 core
- Storage
- Attach ISO:
out/target/product/x86_64/android_x86_64.iso
- Boot & Install
- Pilih Install Android-x86 to harddisk
- Filesystem: ext4
- Install GRUB bootloader
- Boot Android x86
Verifikasi Android sebagai Sistem Operasi
Masuk ke Android shell:
adb shell
Cek kernel:
uname -a
Cek process:
ps -A | head
Observasi penting:
Android berjalan sebagai multi-process OS, dengan isolasi proses berbasis kernel Linux.
Mini Eksperimen (Hands-on, Fun & Menantang)
Beberapa eksperimen sederhana namun bermakna:
Matikan zygote:
stop zygote
→ UI berhenti (bukti zygote inti user space)
Observasi memori:
free -h
Bandingkan dengan Ubuntu:
ps aux
Insight:
Kernel sama, tetapi desain user space membentuk karakter OS.
Refleksi Akademik (OBE-Oriented)
Setelah bab ini, mahasiswa mampu:
- Membangun Android OS dari source
- Menjelaskan perbedaan Android device vs Android x86
- Menjalankan Android sebagai OS di VM
- Mengaitkan Android dengan konsep kernel Linux
- Melihat Android sebagai sistem operasi utuh
Penutup Bab ini menegaskan bahwa Android bukan black box. Dengan Android x86, mahasiswa:
bertransformasi dari pengguna Android menjadi pembangun sistem operasi Android.