Mengatur Partisi Dinamis pada Android untuk Mengaktifkan Fitur Roll-Back dan Dual Boot

Mengatur Partisi Dinamis pada Android untuk Mengaktifkan Fitur Roll-Back dan Dual Boot

Pada dasarnya, partisi dinamis (dynamic partitions) adalah fitur yang memungkinkan pengguna untuk menginstal berbagai sistem operasi tanpa harus menghapus sistem operasi yang sedang digunakan. Pada Android, fitur ini dikemas dengan beberapa slot partisi yang dapat digunakan untuk memungkinkan roll-back jika upgrade sistem operasi gagal, serta membuatnya mungkin untuk menginstal upgrade sementara menggunakan perangkat.

Informasi Teknis

Partisi dinamis pada Android dikelola oleh dua bagian: atribut field GPT (Guid Partition Table) dan atribut bBootLunEn UFS (Universal Flash Storage).

Roll-back Upgrade
Fitur roll-back upgrade ini dilakukan dengan menggunakan counter, yang awalnya diinisialisasi pada nilai 7. Setiap kali perangkat di-booting, counter akan dikurangi kecuali jika pengguna menyetel flag "boot successful" dari userspace. Ketika counter mencapai nol, boot loader akan secara otomatis mengatur slot sebagai tidak dapat di-boot dan berganti ke slot lain. Untuk sebagian besar hacker dan pengguna postmarketOS, slot lain mungkin rusak (misalnya karena Anda telah menginstal postmarketOS pada partisi userdata), sehingga ini memungkinkan sistem operasi yang tidak dapat di-boot, memerlukan menggunakan fastboot untuk membersihkan flag dan booting system kembali.

Pemecahan Sistem Operasi yang Tidak Dapat Di-Boot
Jika perangkat Anda secara acak terganggu dalam mode fastboot setelah reboot, maka berarti counter telah mencapai nol dan boot loader telah mengatur slot sebagai tidak dapat di-boot.
Anda dapat memperbaiki masalah ini dengan mudah, pertama-tama ambil slot yang sedang digunakan:

$ fastboot getvar current-slot

Jika slot yang sedang digunakan adalah "a", lakukan perintah berikut untuk mengatur flag kembali:

$ fastboot set_active b
$ fastboot set_active a

Inversi urutan perintah jika slot yang sedang digunakan adalah "b".

Masalah ini tidak akan terjadi lagi ketika qbootctl telah terkonfigurasi, untuk device sdm845 atau msm8998, pastikan Anda telah menginstal paket soc-qcom-sdm845-qbootctl dan memastikan layanan qbootctl diaktifkan dengan perintah:

$ sudo rc-update add qbootctl default

ini akan secara otomatis mengatur flag "boot successful" setiap saat boot postmarketOS.

GPT

Setiap header partisi GPT berisi 8 byte (64 bit) atribut flags, dari mana 16 bit terakhir (bit 48-63) digunakan untuk tujuan vendor khusus. Implementasi Qualcomm A/B menggunakan ini sebagai penanda apakah slot adalah aktif, jika telah booting berhasil, dan jika tidak dapat di-boot, serta counter retry.

UFS

Speksifikasi UFS mendukung hingga dua LUN BOOT (Logical Unit), yang khusus untuk menyimpan boot loader, pada device Qualcomm ini digunakan untuk partisi xbl_a dan xbl_b. Berganti LUN BOOT aktif memerlukan menuliskan 1 atau 2 ke atribut bBootLunEn (nilai 0 menghentikan LUN BOOT, setidaknya di OnePlus 6).

qbootctl

qbootctl adalah alat perintah CLI untuk mengelola slot partisi A/B pada device Android. Ini adalah port dari bootctrl HAL asli Android yang dikembangkan oleh Qualcomm, dirubah menjadi interface CLI yang ramah pengguna dan termasuk port kode gpt-utils yang diperlukan oleh HAL, serta implementasi API UFS BSG.

qbootctl saat ini dipakai dalam Alpine testing.

Pergantian Slot

Mungkin Anda dapat menggunakan fitur slot partisi untuk dual boot device, dengan menggunakan alat perintah Android bootctl sebagai root pada sisi Android dan qbootctl pada postmarketOS. Detail bagaimana melakukannya pada OnePlus 6 dapat ditemukan di sini.

Untuk mengganti slot dengan qbootctl, lihat berikut:

$ # get the current slot
$ qbootctl -c
$ # Assuming current slot is "a"
$ qbootctl -s b
$ # if your current slot is b
$ qbootctl -s a

Device yang Dapat Dijalankan

Beberapa device yang dapat dijalankan dengan fitur partisi dinamis Android antara lain:

  • OnePlus 5T
  • Samsung Galaxy S9
  • Xiaomi Poco F1

Namun, perlu diingat bahwa setiap device mungkin memiliki konfigurasi unik dan memerlukan penyesuaian yang spesifik untuk fitur partisi dinamis.

Leave a comment