Mengenal Android Slots: Fungsi dan Cara Menggunakannya

Mengenal Android Slots: Fungsi dan Cara Menggunakannya

Dalam Artikel ini, kita akan membahas tentang Android slots yang digunakan dalam sistem operasi Android untuk membuat upgrade menjadi lebih aman dan dapat di-rollback. Kami juga akan membahas cara menggunakkan qbootctl, sebuah CLI tool untuk memanipulasi slot-slot A/B.

Fungsi Slots

Slots adalah fitur yang digunakan untuk membuat upgrade menjadi lebih aman dan dapat di-rollback. Fitur ini membuatnya mungkin untuk melakukan upgrade sementara menggunakan sistem operasi sebelumnya. Dalam hal ini, slots berfungsi sebagai "safety net" untuk memastikan bahwa sistem operasi bekerja dengan normalitas.

Upgrade Roll-back

Upgrade roll-back adalah fitur lain yang disediakan oleh Android slots. Fitur ini membuatnya mungkin untuk melakukan rollback upgrade jika upgrade gagal. Cara kerja upgrade roll-back adalah sebagai berikut: sebuah counter dipersiapkan dan diinisialisasi pada nilai 7. Setiap kali Anda restart sistem operasi, counter akan terurut setiap saat sampai mencapai nilai 0. Saat counter mencapai nilai 0, bootloader akan secara otomatis menandai slot sebagai "unbootable" dan beralih ke slot lainnya.

Cara Mengatasi Sistem Operasi yang Tidak Bisa Di-boot

Jika Anda mendapati bahwa sistem operasi Anda tidak bisa di-boot setelah restart, maka kemungkinan besar bahwa counter telah mencapai nilai 0 dan bootloader telah menandai slot sebagai "unbootable". Cara mengatasi masalah ini adalah dengan menggunakan perintah fastboot.

Pertama-tama, Anda harus mendapatkan slot yang saat ini digunakan:

$ fastboot getvar current-slot

Jika slot yang saat ini digunakan adalah "a", maka Anda harus menjalankan perintah berikut:

$ fastboot set_active b
$ fastboot set_active a

Invert the order of commands if your current slot is "b". Dengan demikian, Anda akan dapat mengatasi masalah ini.

GPT (GUID Partition Table)

Dalam GPT, tiap-tiap header partition berisi 8 byte (64 bit) atribut flags. Atribut flag terakhir 16-bit (bits 48-63) dipakai untuk vendor-specific use. Qualcomm's A/B implementation menggunakan atribut flag ini untuk menyimpan flag yang mewakili jika slot aktif, jika slot telah di-boot dengan sukses, dan jika slot tidak bisa di-boot, serta count retry.

UFS (Universal Flash Storage)

UFS adalah spesifikasi yang mendukung hingga dua BOOT LUNs. Pada Qualcomm devices, UFS digunakan untuk xbl_a dan xbl_b partitions. Untuk mengganti boot LUN yang aktif, Anda harus menulis nilai 1 atau 2 ke atribut bBootLunEn (nilai 0 mematikan boot LUNs).

Qbootctl

Qbootctl adalah CLI tool untuk memanipulasi slot-slot A/B pada Android devices. Tool ini ported dari Android bootctrl HAL yang dikembangkan oleh Qualcomm, dan modified untuk build pada Linux dan memberikan interface CLI yang ramah.

Menggunakan Qbootctl

Cara menggunakan qbootctl sebagai berikut:

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

Devices yang Dapat Digunakan

Qbootctl diketahui dapat digunakan pada setidaknya perangkat berikut:

  • OnePlus 6 (oneplus-enchilada)
  • OnePlus 6T (oneplus-fajita)
  • SHIFT Shift6mq (shift-axolotl)
  • Google Pixel 3a (google-sargo)
  • OnePlus 8 Pro (oneplus-instantnoodlep)
  • Xiaomi 12 (xiaomi-cupid)

Referensi

  • Guides for Dual boot pm os with android via a/b slot on oneplus 6/6t but some part of it can be reused on some other device.
  • Qbootctl Alpine package: qbootctl
  • MR enabling qbootctl for A/B sdm845 devices: pmaports!3190

Leave a comment