Difference between revisions of "OS: Android x86 from Scratch"

From OnnoWiki
Jump to navigation Jump to search
(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...")
 
 
(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.
  
BAB 14. Android x86 from Scratch
+
[[File:Android-AOSP.png|center|300px|thumb]]
Android x86 sebagai Objek Studi Sistem Operasi
 
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:
 
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 \
+
  git-core gnupg flex bison build-essential \
  zip curl zlib1g-dev gcc-multilib g++-multilib \
+
  zip curl zlib1g-dev gcc-multilib g++-multilib \
  libc6-dev-i386 libncurses5-dev x11proto-core-dev \
+
  libc6-dev-i386 libncurses5-dev x11proto-core-dev \
  libx11-dev libgl1-mesa-dev libxml2-utils \
+
  libx11-dev libgl1-mesa-dev libxml2-utils \
  xsltproc unzip fontconfig
+
  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:
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
+
* 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)
  
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
  
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-AOSP.png

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.



Pranala Menarik