Difference between revisions of "OS: PRAKTIKUM — Android x86 Build Lab"

From OnnoWiki
Jump to navigation Jump to search
(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...")
 
 
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===
 
 
PRAKTIKUM 9 — Android x86 Build Lab
 
Membangun, Menjalankan, dan Mendiagnosa Android sebagai Sistem Operasi
 
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:
 
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 \
+
  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 \
  openjdk-17-jdk repo
+
  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.
Error Disk Penuh
 
  
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
  
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.
  
ps aux
+
==Refleksi Akademik (OBE-Oriented)==
Insight:
 
Kernel sama, user space design menentukan karakter OS.
 
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 10: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.


Pranala Menarik