Sejak Android 10, Generic System Image (GSI) yang digunakan untuk menjalankan
pengujian kepatuhan CTS-on-GSI/VTS berubah
dari userdebug menjadi jenis build pengguna agar dapat ditandatangani rilis. Hal ini
merupakan masalah untuk pengujian VTS karena VTS memerlukan
adb root untuk dijalankan, tetapi
adb root tidak tersedia di perangkat build pengguna.
Ramdisk debug (atau image booting debug) diperkenalkan untuk mengaktifkan adb root di
perangkat build pengguna yang bootloader-nya
tidak terkunci. Hal ini menyederhanakan alur
pengujian dengan menggunakan GSI system.img build pengguna yang sama untuk CTS-on-GSI dan
VTS-on-GSI. Untuk penyiapan STS, penggunaan system.img OEM userdebug lain masih
diperlukan.
Tabel berikut menunjukkan perubahan jenis image dan build untuk pengujian kepatuhan di Android 10.
| Rangkaian pengujian | Uji dengan | Build | Men-debug ramdisk | adb root? | Perubahan varian build Android 9 -> 10 |
|---|---|---|---|---|---|
| CTS | Sistem OEM | pengguna | N | N | Tidak ada perubahan |
| CTS-on-GSI | GSI | pengguna | N | N | userdebug -> GSI pengguna rilis ditandatangani |
| STS | Sistem OEM | userdebug | N | Y | Baru di Q |
| VTS | GSI | pengguna | Y | Y | userdebug -> GSI pengguna rilis ditandatangani |
Ringkasan
File gambar tambahan ini dibuat di folder build
(${ANDROID_PRODUCT_OUT}):
boot-debug.imgvendor_boot-debug.img
Saat boot-debug.img di-flash ke partisi boot perangkat, file sepolicy sistem versi userdebug dan file properti tambahan,
adb_debug.prop, akan dimuat. Hal ini memungkinkan adb root dengan build
system.img pengguna (GSI atau OEM).
Untuk
Generic Kernel Image (GKI)
yang menggunakan perangkat yang memiliki partisi vendor_boot, boot-debug.img tidak boleh
di-flash, karena partisi boot harus di-flash dengan image GKI bersertifikasi.
Sebagai gantinya, vendor_boot-debug.img harus di-flash ke partisi
vendor_boot untuk memfasilitasi ramdisk debug.
Prasyarat untuk menggunakan ramdisk debug
Ramdisk debug disediakan oleh OEM yang menjalankan pengujian kepatuhan. Aplikasi tidak boleh ditandatangani rilis, dan hanya dapat digunakan jika perangkat tidak terkunci.
Ramdisk debug tidak akan dibuat atau digunakan untuk mengupgrade perangkat dengan:
BOARD_BUILD_SYSTEM_ROOT_IMAGEtrueskip_initramfsdi command line kernel
GSI Android 12
Tidak diperlukan petunjuk tambahan untuk menggunakan ramdisk debug dengan GSI Android 12.
Mulai 29/09/2021, ramdisk debug tidak lagi memerlukan update dengan
alat repack_bootimg. Build GSI Android 12
setelah SGR1.210929.001 (7777720) menggabungkan file
userdebug_plat_sepolicy.cil terbaru dalam system.img dan mengabaikan
userdebug_plat_sepolicy.cil dari ramdisk debug. Lihat
CL untuk mengetahui detailnya.
GSI Android 11
Saat boot-debug.img atau vendor_boot-debug.img digunakan, sepolicy
sistem dimuat dari file userdebug_plat_sepolicy.cil di ramdisk
debug boot-debug.img atau vendor_boot-debug.img. Untuk mem-booting image
GSI, selalu sertakan perubahan sepolicy terbaru dari
cabang
android11-gsi untuk mem-build ulang boot-debug.img atau vendor_boot-debug.img.
Atau, alat repack_bootimg dapat digunakan untuk mem-build ulang
boot-debug.img atau vendor_boot-debug.img dengan sepolicy GSI yang diperbarui.
Memaketkan ulang ramdisk debug
Daripada menggabungkan perubahan sepolicy untuk mem-build ulang boot-debug.img, partner
dapat menggunakan repack_bootimg untuk mengupdate file sepolicy GSI menjadi boot-debug.img
(atau vendor_boot-debug.img jika perangkat menggunakan GKI).
Langkah-langkahnya adalah sebagai berikut:
Download
otatools.zipdari https://ci.android.com. Sebaiknya download dari artefak buildaosp_cf_arm64_only_phone-userdebugdi cabangaosp-android-latest-release.Siapkan lingkungan eksekusi untuk
repack_bootimg:unzip otatools.zip -d otatoolsexport PATH="${PWD}/otatools/bin:${PATH}"repack_bootimg --helpDownload
userdebug_plat_sepolicy.cilatauboot-with-debug-ramdisk-${KERNEL_VERSION}.imgdari build GSI yang Anda gunakan. Misalnya, jika Anda menggunakan GSI arm64 dariRJR1.211020.001 (7840830), download dari https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest.Update perangkat
boot-debug.imgatauvendor_boot-debug.imgdenganuserdebug_plat_sepolicy.cil:repack_bootimg --local --dst_bootimg boot-debug.img \ --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil# If using GKIrepack_bootimg --local --dst_bootimg vendor_boot-debug.img \ --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cilDengan
boot-with-debug-ramdisk-${KERNEL_VERSION}.img:repack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \ --dst_bootimg boot-debug.img \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil# If using GKIrepack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \ --dst_bootimg vendor_boot-debug.img \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cilArgumen
--ramdisk_adddapat disesuaikan sesuai dengan konfigurasi perangkat. Lihat bagian berikutnya untuk penjelasan mendetail.
Jalur sepolicy userdebug
repack_bootimg di atas menyalin file userdebug_plat_sepolicy.cil dari
ramdisk --src_bootimg ke ramdisk --dst_bootimg. Namun, jalur
dalam ramdisk debug mungkin berbeda di berbagai versi Android. Di
Android 10 dan 11, jalurnya adalah
first_stage_ramdisk/userdebug_plat_sepolicy.cil untuk perangkat dengan
androidboot.force_normal_boot=1 di command line kernel. Jika tidak, jalurnya adalah userdebug_plat_sepolicy.cil.
Jalankan perintah berikut untuk memeriksa apakah ada androidboot.force_normal_boot
di command line kernel:
adb rootadb shell cat /proc/cmdline | grep force_normal_boot
Mulai dari Android 12, jalur dalam
ramdisk debug selalu userdebug_plat_sepolicy.cil, terlepas dari keberadaan
androidboot.force_normal_boot=1 di command line kernel. Tabel
berikut menunjukkan jalur dalam ramdisk debug di berbagai versi Android.
| Gambar debug | Android 10 | Android 11 | Android 12 |
|---|---|---|---|
| GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | T/A | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
| boot-debug.img khusus perangkat | Bergantung pada force_normal_boot | Bergantung pada force_normal_boot | userdebug_plat_sepolicy.cil |
| vendor_boot-debug.img khusus perangkat | T/A | Bergantung pada force_normal_boot | userdebug_plat_sepolicy.cil |
Anda dapat menentukan --ramdisk_add untuk menyalin file dari dan ke jalur yang berbeda dengan
daftar pasangan src_path:dst_path. Misalnya, perintah berikut menyalin
file first_stage_ramdisk/userdebug_plat_sepolicy.cil dari boot-with-debug-ramdisk-5.4.img Android 11 ke
first_stage_ramdisk/userdebug_plat_sepolicy.cil dalam vendor_boot-debug.img Android 11.
repack_bootimg \
--src_bootimg boot-with-debug-ramdisk-5.4.img \
--dst_bootimg vendor_boot-debug.img \
--ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cilJika tidak ada androidboot.force_normal_boot=1 di command line kernel,
perintah harus disesuaikan seperti di bawah untuk mengubah jalur tujuan menjadi
userdebug_plat_sepolicy.cil.
repack_bootimg \
--src_bootimg boot-with-debug-ramdisk-5.4.img \
--dst_bootimg vendor_boot-debug.img \
--ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cilMenambahkan footer AVB
Jika image yang diteruskan ke --dst_bootimg dikonfigurasi sebagai
partisi
AVB-chained, footer AVB perlu ditambahkan setelah menjalankan perintah
repack_bootimg.
Misalnya, sebelum menjalankan repack_bootimg, jalankan perintah berikut untuk
memeriksa apakah vendor_boot-debug.img memiliki footer AVB berantai.
avbtool info_image --image vendor_boot-debug.imgJika awalnya memiliki footer AVB berantai, footer AVB perlu ditambahkan
setelah menjalankan perintah repack_bootimg. Menggunakan kunci pengujian apa pun untuk menandatangani
vendor_boot-debug.img berfungsi karena ramdisk debug hanya dapat digunakan saat
perangkat tidak terkunci, yang memungkinkan gambar yang ditandatangani kunci non-rilis di partisi boot atau
vendor_boot.
avbtool add_hash_footer --partition_name vendor_boot \
--partition_size 100663296 \
--algorithm SHA256_RSA4096 \
--key otatools/external/avb/test/data/testkey_rsa4096.pem \
--image vendor_boot-debug.img