# DroidForge
Alat & Dokumentasi ADB

Dokumentasi Protokol Fastboot dan Analisis Partisi Dinamis Super (Retrofit vs Virtual A/B)

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

Evolusi Protokol Fastboot: Bootloader Mode vs Userspace Fastbootd

Protokol Fastboot adalah mekanisme komunikasi berkecepatan tinggi berbasis USB yang memungkinkan modifikasi tingkat blok pada media flash penyimpanan perangkat Android. Pada implementasi arsitektur tradisional, antarmuka fastboot dieksekusi secara langsung di dalam Application Bootloader (ABL). ABL beroperasi pada lingkungan bare-metal minimalis sebelum kernel Linux dijalankan.

Seiring dengan diperkenalkannya arsitektur Dynamic Partitions pada Android 10, bootloader tradisional menghadapi keterbatasan memori dan kompleksitas driver. Bootloader ABL tidak memiliki kapabilitas yang cukup untuk mengurai tabel partisi logis device-mapper yang dinamis. Oleh karena itu, Google memperkenalkan fastbootd, sebuah daemon fastboot yang berjalan di ruang pengguna (userspace) di dalam lingkungan recovery ramdisk yang didukung oleh kernel Linux lengkap.

Arsitektur Partisi Dinamis (Dynamic Partitions / Super.img)

Pada skema partisi konvensional, setiap partisi sistem (seperti system, vendor, product) dialokasikan dengan ukuran kapasitas statis pada tabel partisi GPT (GUID Partition Table). Masalah mendasar dari skema statis ini adalah pemborosan ruang disk: partisi system mungkin memiliki ruang kosong yang tidak terpakai sebesar 1 GB, sementara partisi vendor kehabisan ruang untuk menampung driver baru.

Dynamic Partitions mengatasi inefisiensi ini dengan menggabungkan partisi-partisi individual ke dalam satu kontainer partisi fisik raksasa berlabel super. Di dalam kontainer super, ukuran masing-masing partisi logis dialokasikan secara elastis menggunakan modul kernel dm-linear.

Parameter Arsitektur Partisi Statis Tradisional Partisi Dinamis (Android 10 Super) Virtual A/B (Android 11+)
Definisi Partisi Tabel GPT fisik hardware mentah. Logikal container di dalam partisi super via dm-linear. Snapshot COW (Copy-On-Write) dinamis via dm-snapshot / dm-user.
Fleksibilitas Alokasi Kaku, memerlukan re-partisi GPT fisik jika ukuran berubah. Elastis, ukuran partisi logis dapat membesar/mengecil saat flashing. Maksimal, pembaruan OTA hanya memakan ruang diff kompresi.
Mode Fastboot Wajib Bootloader Fastboot (ABL). Userspace Fastbootd (Recovery Ramdisk). Userspace Fastbootd dengan snapshot handling.
Dukungan Rollback OTA Tidak ada (kecuali A/B ganda penuh). Tergantung implementasi slot hardware. Sempurna melalui pembatalan snapshot COW tanpa duplikasi ukuran super.

Peringatan Rekayasa: Resiko Kerusakan Metadata Logical Partition (LpMetadata)

Menghapus partisi super menggunakan perintah biner mentah tanpa menyertakan metadata tabel yang valid dapat merusak pointer geometri LP. Selalu gunakan utilitas lpmake atau flashing via fastbootd resmi untuk mengelola partisi logis.

Baca Juga:
Audit Alokasi Memori Android: Perbandingan zRAM LZ4 vs ZSTD dan Mekanisme LMKD
Tweaking & Kinerja 4 mnt baca

Retrofit Dynamic Partitions vs Native Virtual A/B

Ketika produsen memperbarui perangkat lama dari Android 9 ke Android 10, perangkat tersebut tidak memiliki partisi fisik super tunggal pada tabel GPT. Google merancang mekanisme Retrofit Dynamic Partitions, di mana partisi fisik lama system_a, system_b, vendor_a, dan vendor_b digabungkan bersama menjadi grup blok super virtual.

Sementara itu, pada perangkat modern yang diproduksi dengan Android 11 ke atas, arsitektur yang digunakan adalah Native Virtual A/B. Virtual A/B menggabungkan keunggulan integritas partisi A/B (seamless update tanpa downtime) dengan efisiensi ruang partisi A-only (tanpa memerlukan duplikasi ruang penyimpanan dua kali lipat).

Mekanisme Virtual A/B Compression dan Snapshot Merging

Inovasi paling canggih dalam Virtual A/B pada Android 12+ adalah Virtual A/B Compression. Saat pembaruan OTA berlangsung di latar belakang, biner pembaruan tidak menulis keseluruhan image baru ke disk, melainkan hanya menulis blok data diff terkompresi (menggunakan algoritma LZ4, ZSTD, atau Brotli) ke partisi penyimpanan data pengguna sebagai snapshot COW.

Kernel Android memanfaatkan modul dm-user di ruang pengguna untuk mencegat pembacaan sektor blok. Ketika sistem melakukan booting pertama kali setelah pembaruan OTA, daemon snapshotctl memicu proses penggabungan bertahap (snapshot merge). Jika pengguna menggunakan perangkat, sistem tetap responsif karena blok-blok yang belum dimerge dibaca secara transparan dari file snapshot COW, mengeliminasi risiko perangkat gagal booting akibat interupsi daya.

Pemeriksaan Integritas Metadata dengan Utilitas Lpdump

Untuk memverifikasi alokasi sektor dan tata letak geometris partisi logis di dalam partisi super, insinyur firmware menggunakan utilitas baris perintah lpdump. Perintah adb shell lpdump menghasilkan laporan mendalam mengenai ukuran blok geometri, grup partisi maksimum, status slot aktif, dan pemetaan rentang sektor (extents) dari masing-masing partisi logis. Analisis terhadap luaran lpdump memungkinkan teknisi mendeteksi fragmentasi sektor penyimpanan sebelum melakukan penyesuaian ukuran partisi sistem yang berisiko merusak integritas filesystem ext4 atau erofs.

Baca Juga:
Dokumentasi Kompilasi Kernel AOSP: Dari Clang Toolchain hingga Kernel Image
AOSP & Custom ROM 4 mnt baca

Audit dan Manipulasi Partisi via Perintah Fastboot

Untuk mengelola partisi logis secara benar, operator teknis harus beralih dari mode bootloader standar ke mode userspace fastbootd:

# 1. Melakukan transisi dari bootloader ke userspace fastbootd
fastboot reboot fastboot

# 2. Memeriksa apakah perangkat telah aktif dalam lingkungan userspace fastbootd
fastboot getvar is-userspace
# Output yang diharapkan: is-userspace: yes

# 3. Menampilkan daftar variabel metadata partisi super
fastboot getvar super-partition-name
fastboot getvar max-download-size

# 4. Melakukan manipulasi partisi logis secara dinamis
fastboot resize-logical-partition system_a 2500000000
fastboot create-logical-partition product_a 500000000
fastboot delete-logical-partition odm_a

Diagnostik Galat 'Not Enough Space to Resize Partition'

Galat yang paling sering ditemui saat flashing image kustom pada partisi dinamis adalah pesan: Resizing partition e.g. system_a failed: Not enough space. Masalah ini terjadi karena total akumulasi ukuran partisi logis di dalam grup melebihi batas fisik kapasitas partisi super.

Solusi teknis yang benar adalah memeriksa alokasi ruang partisi lain di dalam grup yang sama (seperti product atau system_ext) dan menghapus atau memperkecil partisi logis yang tidak terpakai menggunakan perintah fastboot delete-logical-partition sebelum menulis image sistem baru.

Kesimpulan Dokumentasi Protokol Fastboot

Transisi dari bootloader fastboot ke userspace fastbootd menandai era baru rekayasa partisi Android yang lebih fleksibel dan tangguh. Memahami seluk-beluk arsitektur metadata super dan modul dm-linear merupakan fondasi wajib bagi analis firmware dan pengembang sistem Android tingkat rendah.

Topik Terkait: #AOSP #Fastboot

Artikel Terkait

Artikel lain dalam kategori Alat & Dokumentasi ADB

Lihat Semua