Difference between revisions of "OS: PRAKTIKUM — Android x86 Build Lab"
Onnowpurbo (talk | contribs) (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...") |
Onnowpurbo (talk | contribs) |
||
| 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 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.