Fastboot adalah alat yang digunakan untuk mengelola perangkat Android. Salah satu fitur pentingnya adalah kemampuan untuk mengatur slot-slot pada perangkat A/B. Dalam artikel ini, kita akan membahas cara menggunakan fastboot dan generasi paket OTA.
Menggunakan Fastboot
Fastboot mendukung perintah set_active <slot>
yang digunakan untuk menentukan slot aktif saat ini. Perintah tersebut juga berfungsi menghapus flag unbootable untuk slot yang ditentukan dan mengatur jumlah retry ke nilai default. Selain itu, fastboot juga mendukung beberapa variabel, seperti:
has-slot:<partition-base-name-without-suffix>
: Mengembalikan "yes" jika partisi yang diberikan mendukung slot, atau "no" jika tidak.current-slot
: Mengembalikan suffix slot yang akan di-booting selanjutnya.slot-count
: Mengembalikan nilai integer yang mewakili jumlah slot yang tersedia. Pada saat ini, hanya ada dua slot yang tersedia, sehingga nilai ini adalah 2.slot-successful:<slot-suffix>
: Mengembalikan "yes" jika slot yang diberikan telah di-mark sebagai berhasil booting, atau "no" jika tidak.slot-unbootable:<slot-suffix>
: Mengembalikan "yes" jika slot yang diberikan telah di-mark sebagai tidak dapat di-booting, atau "no" jika tidak.slot-retry-count:<slot-suffix>
: Mengembalikan nilai retry yang tersisa untuk mem-boot slot yang diberikan.
Untuk melihat semua variabel, Anda dapat menjalankan perintah fastboot getvar all
.
Menggenerate Paket OTA
Paket OTA tools mengikuti sama seperti komando-komando untuk perangkat non-A/B. File target_files.zip
harus di-generate dengan mendefinisikan variable-variabel build untuk target A/B. Paket OTA tools akan secara otomatis mengidentifikasi dan menggenerate paket dalam format untuk updater A/B.
Contoh:
- Untuk menggenerate paket OTA full:
./build/make/tools/releasetools/ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip
- Untuk menggenerate paket OTA incremental:
./build/make/tools/releasetools/ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip
Mengkonfigurasi Partisi
Update_engine dapat memperbarui setiap pasangan partisi A/B yang terdefinisi pada disk yang sama. Pasangan partisi memiliki prefix umum (seperti "system" atau "boot") dan suffix slot (seperti "_a"). Daftar partisi yang di-update oleh generator payload di-konfigurasi dengan variable-variabel make AB_OTA_PARTITIONS
.
Contoh: jika pasangan partisi "bootloader_a" dan "bootloader_b" termasuk, Anda dapat memperbarui partisi-partisi ini dengan menentukan berikut pada konfigurasi product atau board:
AB_OTA_PARTITIONS := boot system bootloader
Mengkonfigurasi Langkah Post-Install
Anda dapat mengkonfigurasi langkah post-installan secara berbeda untuk setiap partisi yang di-update menggunakan kumpulan pasangan nilai. Untuk menjalankan program yang terletak pada /system/usr/bin/postinst
dalam gambar baru, Anda harus menentukan jalur relatif ke root filesystem dalam partisi "system".
Contoh: usr/bin/postinst
adalah system/usr/bin/postinst
(jika tidak menggunakan disk RAM). Anda juga harus menentukan tipe filesystem untuk dilepaskan pada sistem. Tambahkan berikut pada file .mk product atau device:
AB_OTA_POSTINSTALL_CONFIG += RUN_POSTINSTALL_system=true POSTINSTALL_PATH_system=usr/bin/postinst FILESYSTEM_TYPE_system=ext4
Mengkompilasi Aplikasi
Aplikasi dapat dikompilasi di latar belakang sebelum booting dengan gambar sistem baru. Untuk mengkompilasikan aplikasi di latar belakang, Anda harus menambahkan berikut pada konfigurasi product device:
`Include the native components in the build to ensure compilation script and binaries are compiled and included in the system image.
PRODUCT_PACKAGES += otapreopt_script
Connect the compilation script to update_engine such that runs as a post-install step.
AB_OTA_POSTINSTALL_CONFIG += RUN_POSTINSTALL_system=true POSTINSTALL_PATH_system=system/bin/otapreopt_script FILESYSTEM_TYPE_system=ext4`
Referensi
- Fastboot: https://developer.android.com/studio/releases/fastboot
- Paket OTA tools: https://developer.android.com/studio/releases/releasetools#ota-tools