OS: PRAKTIKUM — Android x86 Build Lab: Difference between revisions
Created page with " PRAKTIKUM 9 — Android x86 Build Lab Membangun, Menjalankan, dan Mendiagnosa Android sebagai Sistem Operasi Tujuan Praktikum Praktikum ini dirancang untuk membawa mahasi..." |
No edit summary |
||
| Line 1: | Line 1: | ||
==Tujuan Praktikum== | |||
Praktikum ini dirancang untuk membawa mahasiswa naik level dari pemahaman konseptual ke kemampuan engineering nyata. Setelah menyelesaikan praktikum ini, mahasiswa diharapkan mampu: | |||
* Membangun Android x86 dari source code | |||
* Menjalankan Android sebagai OS di VirtualBox | |||
* Memahami relasi kernel – user space – runtime Android | |||
* Menganalisis dan memperbaiki error build secara sistematis | |||
Filosofi utama: | |||
Jika Anda bisa membangun Android OS sendiri, maka Anda memahami sistem operasi modern secara utuh. | |||
==Persiapan Lingkungan Praktikum== | |||
===Konteks Akademik Praktikum=== | |||
Persiapan Lingkungan Praktikum | |||
Konteks Akademik Praktikum | |||
Dalam praktikum ini: | Dalam praktikum ini: | ||
Menggunakan Ubuntu 24.04 sebagai build host | * Menggunakan Ubuntu 24.04 sebagai build host | ||
Mengaplikasikan konsep: | * Mengaplikasikan konsep: | ||
Kernel | ** Kernel | ||
User space | ** User space | ||
Runtime | ** Runtime | ||
Filesystem | ** Filesystem | ||
Boot process | ** Boot process | ||
Bersifat reproducible dan non-destruktif (berbasis VM) | * Bersifat reproducible dan non-destruktif (berbasis VM) | ||
Android x86 diperlakukan setara dengan Ubuntu Server dan OpenWRT sebagai engineering artifact, bukan sebagai consumer product. | Android x86 diperlakukan setara dengan Ubuntu Server dan OpenWRT sebagai engineering artifact, bukan sebagai consumer product. | ||
Spesifikasi Minimum Lingkungan Build | |||
==Spesifikasi Minimum Lingkungan Build== | |||
Disarankan menggunakan VM Ubuntu Server 24.04: | Disarankan menggunakan VM Ubuntu Server 24.04: | ||
CPU: 4 core (minimal 2) | * CPU: 4 core (minimal 2) | ||
RAM: 8–16 GB (minimal 8 GB) | * RAM: 8–16 GB (minimal 8 GB) | ||
Disk: ≥ 150 GB (VDI, dynamically allocated) | * Disk: ≥ 150 GB (VDI, dynamically allocated) | ||
Network: NAT (Internet access) | * Network: NAT (Internet access) | ||
OS: Ubuntu Server 24.04 LTS | * OS: Ubuntu Server 24.04 LTS | ||
Catatan penting: | Catatan penting: | ||
Build Android berat dan lama. Ini bukan kelemahan, tetapi pengalaman nyata OS engineering skala industri. | Build Android berat dan lama. Ini bukan kelemahan, tetapi pengalaman nyata OS engineering skala industri. | ||
Build Android x86 dari Source | |||
==Build Android x86 dari Source== | |||
Instalasi Dependency Build (Ubuntu 24.04) | Instalasi Dependency Build (Ubuntu 24.04) | ||
Pastikan sistem up-to-date: | Pastikan sistem up-to-date: | ||
sudo apt update | sudo apt update | ||
sudo apt upgrade -y | sudo apt upgrade -y | ||
Install dependency utama AOSP: | Install dependency utama AOSP: | ||
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 \ | |||
openjdk-17-jdk repo | |||
Verifikasi tool penting: | Verifikasi tool penting: | ||
java -version | java -version | ||
repo --version | repo --version | ||
gcc --version | gcc --version | ||
Insight OS: | Insight OS: | ||
Build Android sepenuhnya bergantung pada toolchain GNU/Linux, menegaskan Android sebagai Linux-based OS. | Build Android sepenuhnya bergantung pada toolchain GNU/Linux, menegaskan Android sebagai Linux-based OS. | ||
Mengambil Source Code Android x86 | |||
==Mengambil Source Code Android x86== | |||
Buat workspace: | Buat workspace: | ||
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 ini lama dan menghasilkan ribuan file. | Proses ini lama dan menghasilkan ribuan file. | ||
Ini normal dan mencerminkan kompleksitas OS modern. | 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 PC / VM | * x86_64 → arsitektur PC / VM | ||
userdebug → mode ideal untuk pembelajaran & debugging | * userdebug → mode ideal untuk pembelajaran & debugging | ||
Proses Build Android x86 | |||
==Proses Build Android x86== | |||
Mulai proses build: | Mulai proses build: | ||
make -j$(nproc) | make -j$(nproc) | ||
Waktu build bisa 1–3 jam tergantung resource. | Waktu build bisa 1–3 jam tergantung resource. | ||
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: | ||
Ini setara dengan kernel + initramfs + root filesystem pada Linux/OpenWRT. | Ini setara dengan kernel + initramfs + root filesystem pada Linux/OpenWRT. | ||
Boot Android x86 di VirtualBox | ==Boot Android x86 di VirtualBox== | ||
Pembuatan VM Android x86 | ===Pembuatan VM Android x86=== | ||
Gunakan VirtualBox. | Gunakan VirtualBox. | ||
Konfigurasi VM: | Konfigurasi VM: | ||
Name: Android-x86 | * Name: Android-x86 | ||
Type: Linux | * Type: Linux | ||
Version: Other Linux (64-bit) | * Version: Other Linux (64-bit) | ||
RAM: 4–8 GB | * RAM: 4–8 GB | ||
CPU: 2–4 core | * CPU: 2–4 core | ||
Attach ISO: | * Attach ISO: | ||
out/target/product/x86_64/android_x86_64.iso | out/target/product/x86_64/android_x86_64.iso | ||
Instalasi Android x86 | |||
Boot VM | ===Instalasi Android x86=== | ||
Pilih: Install Android-x86 to harddisk | * Boot VM | ||
Pilih disk virtual | * Pilih: Install Android-x86 to harddisk | ||
Filesystem: ext4 | * Pilih disk virtual | ||
Install GRUB bootloader | * Filesystem: ext4 | ||
Reboot VM | * Install GRUB bootloader | ||
* Reboot VM | |||
Android kini berfungsi sebagai sistem operasi mandiri. | Android kini berfungsi sebagai sistem operasi mandiri. | ||
Verifikasi Android sebagai OS | |||
==Verifikasi Android sebagai OS== | |||
Masuk ke shell Android: | Masuk ke shell Android: | ||
adb shell | adb shell | ||
Cek kernel: | Cek kernel: | ||
uname -a | uname -a | ||
Cek proses: | Cek proses: | ||
ps -A | head | ps -A | head | ||
Cek filesystem: | Cek filesystem: | ||
mount | head | mount | head | ||
Observasi penting: | Observasi penting: | ||
Android menggunakan Linux kernel, process isolation, dan filesystem hierarki nyata. | Android menggunakan Linux kernel, process isolation, dan filesystem hierarki nyata. | ||
Debugging Build Error (Bagian Terpenting) | |||
Filosofi Debugging OS | ==Debugging Build Error (Bagian Terpenting)== | ||
===Filosofi Debugging OS=== | |||
Debugging bukan tanda gagal, tetapi inti pembelajaran OS engineering. Pendekatan yang benar: | Debugging bukan tanda gagal, tetapi inti pembelajaran OS engineering. Pendekatan yang benar: | ||
Baca error, mengerti bahasa Inggris. | * Baca error, mengerti bahasa Inggris. | ||
Identifikasi lapisan (toolchain / kernel / user space) | * Identifikasi lapisan (toolchain / kernel / user space) | ||
Cari konteks, bukan copy-paste solusi | * Cari konteks, bukan copy-paste solusi | ||
Error Umum & Solusi | |||
===Error Umum & Solusi=== | |||
Error Java Version | Error Java Version | ||
ERROR: Java version not supported | |||
ERROR: Java version not supported | |||
Solusi: | Solusi: | ||
sudo update-alternatives --config java | sudo update-alternatives --config java | ||
Pastikan OpenJDK 17 aktif. | Pastikan OpenJDK 17 aktif. | ||
No space left on device | ===Error Disk Penuh=== | ||
No space left on device | |||
Cek: | Cek: | ||
df -h | df -h | ||
Solusi: | Solusi: | ||
Tambah disk VM | * Tambah disk VM | ||
Hapus build lama: | * Hapus build lama: | ||
make clean | make clean | ||
Error Build Terhenti di Tengah | |||
===Error Build Terhenti di Tengah=== | |||
Solusi aman: | Solusi aman: | ||
make clean | make clean | ||
make -j$(nproc) | make -j$(nproc) | ||
Build Android bersifat deterministik, clean build sering menyelesaikan masalah. | Build Android bersifat deterministik, clean build sering menyelesaikan masalah. | ||
Membaca Log Build | ===Membaca Log Build=== | ||
Contoh: | Contoh: | ||
tail -n 50 out/build.log | tail -n 50 out/build.log | ||
Cari: | Cari: | ||
error: | error: | ||
FAILED: | FAILED: | ||
ninja: | ninja: | ||
Skill penting: | Skill penting: | ||
Mahasiswa belajar membaca log ribuan baris, bukan menghindarinya. | Mahasiswa belajar membaca log ribuan baris, bukan menghindarinya. | ||
Mini Eksperimen (Fun & Menantang) | |||
==Mini Eksperimen (Fun & Menantang)== | |||
Beberapa eksperimen ringan: | Beberapa eksperimen ringan: | ||
Matikan zygote: | Matikan zygote: | ||
stop zygote | |||
→ UI mati, kernel tetap hidup | |||
Cek memory: | Cek memory: | ||
free -h | |||
free -h | |||
Bandingkan dengan Ubuntu: | Bandingkan dengan Ubuntu: | ||
ps aux | |||
Insight: | |||
Kernel sama, user space design menentukan karakter OS. | |||
==Refleksi Akademik (OBE-Oriented)== | |||
Refleksi Akademik (OBE-Oriented) | |||
Setelah praktikum ini, mahasiswa mampu secara nyata: | Setelah praktikum ini, mahasiswa mampu secara nyata: | ||
✅ Membangun Android OS dari source | * ✅ Membangun Android OS dari source | ||
✅ Menjalankan Android sebagai OS di VM | * ✅ Menjalankan Android sebagai OS di VM | ||
✅ Mengaitkan Android dengan konsep kernel Linux | * ✅ Mengaitkan Android dengan konsep kernel Linux | ||
✅ Melakukan debugging OS skala besar | * ✅ Melakukan debugging OS skala besar | ||
✅ Berpikir sebagai system builder, bukan user | * ✅ Berpikir sebagai system builder, bukan user | ||
Penutup | ==Penutup== | ||
Praktikum ini menandai transisi penting: | Praktikum ini menandai transisi penting: | ||
dari pengguna Android → engineer sistem operasi Android. | * dari pengguna Android → engineer sistem operasi Android. | ||
Android tidak lagi misterius atau black box. | * Android tidak lagi misterius atau black box. | ||
Ia adalah sistem operasi Linux modern yang: | * Ia adalah sistem operasi Linux modern yang: | ||
Bisa dibangun | ** Bisa dibangun | ||
Bisa dianalisis | ** Bisa dianalisis | ||
Bisa dimodifikasi | ** Bisa dimodifikasi | ||
Selamat — Anda telah membangun sistem operasi modern dengan tangan sendiri. | Selamat — Anda telah membangun sistem operasi modern dengan tangan sendiri. | ||
Latest revision as of 03:25, 15 February 2026
Tujuan Praktikum
Praktikum ini dirancang untuk membawa mahasiswa naik level dari pemahaman konseptual ke kemampuan engineering nyata. Setelah menyelesaikan praktikum ini, mahasiswa diharapkan mampu:
- Membangun Android x86 dari source code
- Menjalankan Android sebagai OS di VirtualBox
- Memahami relasi kernel – user space – runtime Android
- Menganalisis dan memperbaiki error build secara sistematis
Filosofi utama:
Jika Anda bisa membangun Android OS sendiri, maka Anda memahami sistem operasi modern secara utuh.
Persiapan Lingkungan Praktikum
Konteks Akademik Praktikum
Dalam praktikum ini:
- Menggunakan Ubuntu 24.04 sebagai build host
- Mengaplikasikan konsep:
- Kernel
- User space
- Runtime
- Filesystem
- Boot process
- Bersifat reproducible dan non-destruktif (berbasis VM)
Android x86 diperlakukan setara dengan Ubuntu Server dan OpenWRT sebagai engineering artifact, bukan sebagai consumer product.
Spesifikasi Minimum Lingkungan Build
Disarankan menggunakan VM Ubuntu Server 24.04:
- CPU: 4 core (minimal 2)
- RAM: 8–16 GB (minimal 8 GB)
- Disk: ≥ 150 GB (VDI, dynamically allocated)
- Network: NAT (Internet access)
- OS: Ubuntu Server 24.04 LTS
Catatan penting:
Build Android berat dan lama. Ini bukan kelemahan, tetapi pengalaman nyata OS engineering skala industri.
Build Android x86 dari Source
Instalasi Dependency Build (Ubuntu 24.04)
Pastikan sistem up-to-date:
sudo apt update sudo apt upgrade -y
Install dependency utama AOSP:
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 \ openjdk-17-jdk repo
Verifikasi tool penting:
java -version repo --version gcc --version
Insight OS:
Build Android sepenuhnya bergantung pada toolchain GNU/Linux, menegaskan Android sebagai Linux-based OS.
Mengambil Source Code Android x86
Buat workspace:
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 ini lama dan menghasilkan ribuan file. 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 PC / VM
- userdebug → mode ideal untuk pembelajaran & debugging
Proses Build Android x86
Mulai proses build:
make -j$(nproc)
Waktu build bisa 1–3 jam tergantung resource.
Hasil build berada di:
out/target/product/x86_64/
File penting:
- kernel
- system.img
- ramdisk.img
- android_x86_64.iso
Analogi akademik:
Ini setara dengan kernel + initramfs + root filesystem pada Linux/OpenWRT.
Boot Android x86 di VirtualBox
Pembuatan VM Android x86
Gunakan VirtualBox.
Konfigurasi VM:
- Name: Android-x86
- Type: Linux
- Version: Other Linux (64-bit)
- RAM: 4–8 GB
- CPU: 2–4 core
- Attach ISO:
out/target/product/x86_64/android_x86_64.iso
Instalasi Android x86
- Boot VM
- Pilih: Install Android-x86 to harddisk
- Pilih disk virtual
- Filesystem: ext4
- Install GRUB bootloader
- Reboot VM
Android kini berfungsi sebagai sistem operasi mandiri.
Verifikasi Android sebagai OS
Masuk ke shell Android:
adb shell
Cek kernel:
uname -a
Cek proses:
ps -A | head
Cek filesystem:
mount | head
Observasi penting:
Android menggunakan Linux kernel, process isolation, dan filesystem hierarki nyata.
Debugging Build Error (Bagian Terpenting)
Filosofi Debugging OS
Debugging bukan tanda gagal, tetapi inti pembelajaran OS engineering. Pendekatan yang benar:
- Baca error, mengerti bahasa Inggris.
- Identifikasi lapisan (toolchain / kernel / user space)
- Cari konteks, bukan copy-paste solusi
Error Umum & Solusi
Error Java Version
ERROR: Java version not supported
Solusi:
sudo update-alternatives --config java
Pastikan OpenJDK 17 aktif.
Error Disk Penuh
No space left on device
Cek:
df -h
Solusi:
- Tambah disk VM
- Hapus build lama:
make clean
Error Build Terhenti di Tengah
Solusi aman:
make clean make -j$(nproc)
Build Android bersifat deterministik, clean build sering menyelesaikan masalah.
Membaca Log Build
Contoh:
tail -n 50 out/build.log
Cari:
error: FAILED: ninja:
Skill penting:
Mahasiswa belajar membaca log ribuan baris, bukan menghindarinya.
Mini Eksperimen (Fun & Menantang)
Beberapa eksperimen ringan:
Matikan zygote:
stop zygote → UI mati, kernel tetap hidup
Cek memory:
free -h
Bandingkan dengan Ubuntu:
ps aux
Insight:
Kernel sama, user space design menentukan karakter OS.
Refleksi Akademik (OBE-Oriented)
Setelah praktikum ini, mahasiswa mampu secara nyata:
- ✅ Membangun Android OS dari source
- ✅ Menjalankan Android sebagai OS di VM
- ✅ Mengaitkan Android dengan konsep kernel Linux
- ✅ Melakukan debugging OS skala besar
- ✅ Berpikir sebagai system builder, bukan user
Penutup
Praktikum ini menandai transisi penting:
- dari pengguna Android → engineer sistem operasi Android.
- Android tidak lagi misterius atau black box.
- Ia adalah sistem operasi Linux modern yang:
- Bisa dibangun
- Bisa dianalisis
- Bisa dimodifikasi
Selamat — Anda telah membangun sistem operasi modern dengan tangan sendiri.