# DroidForge
AOSP & Custom ROM

Analisis Partisi Init_boot dan Pemisahan Generic Ramdisk pada Android 13+

T Tim Riset DroidForge
Diperbarui:
8 min read
Daftar Isi Artikel

Transisi Arsitektur Boot Image pada Android 13 (API 33)

Sejak rilis Android 13, Google memperkenalkan perubahan struktural mendasar pada tata letak (layout) partisi boot image perangkat seluler. Dalam rancangan arsitektur Android tradisional (Boot Header versi 0 hingga versi 3), seluruh komponen inisialisasi awal — meliputi biner kernel Linux (Image/zImage), ramdisk generic (CPIO archive), Device Tree Blob (DTB), dan signature header — dipadatkan bersama ke dalam satu partisi biner tunggal berlabel boot.img.

Pendekatan gabungan tersebut menimbulkan komplikasi serius ketika Google menerapkan inisiatif Generic Kernel Image (GKI 2.0). Melalui program GKI, Google mendistribusikan biner kernel resmi yang seragam bagi seluruh ekosistem perangkat Android berbasis arsitektur ARM64. Untuk memungkinkan pembaruan kernel GKI berkala secara modular tanpa mengganggu konfigurasi ramdisk tahap awal, Google memisahkan ramdisk ke dalam partisi independen baru yang dinamakan init_boot.

Struktur Partisi boot.img vs init_boot.img

Pada spesifikasi Boot Header Version 4 yang menjadi standar wajib pada perangkat yang diluncurkan dengan Android 13 ke atas, partisi boot dan init_boot memiliki pembagian tanggung jawab yang tegas:

Elemen Biner Tata Letak Android 12 (Boot v3/v4 Lama) Tata Letak Android 13+ (Boot v4 Modern) Tujuan Arsitektural Pemisahan
Kernel Image boot.img boot.img Memuat biner kernel murni Google GKI (Generic Kernel Image).
Generic Ramdisk boot.img init_boot.img Memuat /init tahap pertama, skrip init.rc, dan tabel mount.
Vendor Ramdisk vendor_boot.img vendor_boot.img Memuat driver modul kernel pihak ketiga (.ko) yang dibutuhkan saat early boot.
Device Tree (DTB) vendor_boot.img vendor_boot.img Mendeskripsikan konfigurasi memori alamat bus perangkat keras SoC.

Peringatan Kritis: Verifikasi Partisi Ramdisk pada Android 13+

Baca Juga:
Aplikasi pencatat keuangan 1Money: Tampilan ramah pemula yang bikin kita disiplin melacak pengeluaran harian
Review gadget 4 mnt baca

Melakukan patching biner atau injeksi modul modifikasi pada partisi boot.img pada perangkat berbasis Android 13+ tidak akan memberikan efek atau justru menyebabkan bootloop. Patching ramdisk tahap awal wajib dieksekusi secara tepat pada partisi init_boot.img.

Dekomposisi Ramdisk dan Alur Eksekusi First-Stage Init

Proses inisialisasi boot Android berjalan dalam model dual-stage init. Pemisahan generic ramdisk ke partisi init_boot secara langsung memengaruhi cara kernel mengeksekusi tahapan first-stage init:

  1. Bootloader ABL memuat kernel dari partisi boot dan ramdisk dari partisi init_boot ke dalam alamat memori fisik yang berbeda.
  2. Kernel Linux dieksekusi, menginisialisasi subsistem CPU dan scheduler, lalu mem-parsing ramdisk generic ke dalam rootfs virtual di RAM.
  3. Proses pertama /system/bin/init (first-stage init) dijalankan. Biner ini me-mount filesystem virtual darurat: /proc, /sys, dan /dev.
  4. First-stage init memuat tabel pemetaan partisi perangkat (device-mapper), menginisialisasi pustaka libavb untuk memverifikasi partisi system, lalu me-mount partisi sistem sesungguhnya ke /system.
  5. Perangkat melakukan transisi switch_root dari memory ramdisk ke penyimpanan partisi internal flash yang sebenarnya.

Evolusi First-Stage Mount dan Penguraian fstab

Salah satu fungsi paling krusial yang ditangani oleh generic ramdisk di dalam init_boot adalah First-Stage Mount. Pada masa lampau, proses inisialisasi kernel mem-parsing argumen baris perintah statis untuk me-mount root filesystem. Pada Android modern, first-stage init membaca file tabel mount hardware (fstab) yang disediakan melalui Device Tree Blob (DTB) pada /proc/device-tree/firmware/android/fstab atau dari ramdisk vendor.

Baca Juga:
Optimalisasi IO Scheduler pada Storage UFS 3.1/4.0 untuk Mengurangi Latensi Sistem
Tweaking & Kinerja 4 mnt baca

Inisialisasi tahap awal mengidentifikasi apakah partisi sistem menggunakan enkripsi dm-verity atau format partisi dinamis super via modul dm-linear. Tanpa file biner /init dan pustaka penunjang di dalam init_boot, kernel Linux yang telah berhasil booting tidak akan mampu menemukan partisi blok flash penyimpanan internal dan akan mengalami kondisi kernel panic: VFS: Unable to mount root fs.

Mekanisme Early SELinux Policy Loading pada First-Stage Init

Selain me-mount partisi sistem, first-stage init bertanggung jawab atas inisialisasi awal subsistem keamanan SELinux. Sebelum biner apa pun dari partisi sistem dieksekusi, proses init di dalam generic ramdisk memuat file kebijakan biner dasar plat_sepolicy.cil ke dalam memori kernel Linux. Inisialisasi awal ini memastikan bahwa transisi dari lingkungan ramdisk sementara ke sistem operasi utama terlindungi dari potensi serangan injeksi file berbahaya. Setelah kebijakan dimuat, init beralih ke mode enforcing dan melabeli kembali node perangkat di direktori /dev sesuai aturan tipe keamanan yang sah.

# Memeriksa skema partisi perangkat untuk memastikan keberadaan init_boot
adb shell ls -la /dev/block/by-name/ | grep -E "boot|init_boot"

# Membongkar struktur header partisi init_boot menggunakan unpack_bootimg resmi AOSP
unpack_bootimg --boot_img init_boot.img --out out_init_boot/

# Memeriksa isi arsip CPIO generic ramdisk yang diekstrak
cd out_init_boot/
ls -la
file ramdisk
mkdir extracted_ramdisk && cd extracted_ramdisk
cpio -idmv < ../ramdisk

Analisis Header Format Boot Image v4

Header boot image versi 4 tidak lagi memuat kolom ukuran ramdisk jika partisi tersebut adalah boot.img pada sistem GKI murni. Struktur header biner didefinisikan secara resmi pada repositori AOSP system/tools/mkbootimg/include/bootimg/bootimg.h. Pada partisi init_boot, magic header tetap menggunakan penanda ASCII ANDROID! (8 byte), namun offset pointer diarahkan secara eksklusif untuk mendeskripsikan blok ramdisk generic.

Kesimpulan Riset Arsitektur Boot Image

Inovasi pemisahan partisi init_boot pada Android 13+ menunjukkan komitmen Google dalam mempertahankan interoperabilitas biner Linux kernel tunggal (GKI) di seluruh portofolio manufaktur ARM64. Bagi periset firmware dan pengembang AOSP, memahami lokalisasi ramdisk generic pada init_boot merupakan prasyarat mutlak untuk keberhasilan analisis audit proses inisialisasi sistem.

Topik Terkait: #AOSP #GKI #Init Boot

Artikel Terkait

Artikel lain dalam kategori AOSP & Custom ROM

Lihat Semua