Sejak Android 10, Generic System Image (GSI) yang digunakan untuk menjalankan
pengujian kepatuhan CTS-on-GSI/VTS berubah
dari jenis build userdebug menjadi user agar dapat ditandatangani untuk rilis. Hal ini menjadi masalah bagi pengujian VTS karena VTS memerlukan adb root
untuk berjalan, tetapi adb root
tidak tersedia di perangkat build pengguna.
Ramdisk debug (atau image boot debug) diperkenalkan untuk mengaktifkan adb root
di perangkat build pengguna yang bootloadernya tidak dikunci. Hal ini menyederhanakan alur pengujian dengan menggunakan GSI build pengguna yang sama system.img
untuk CTS-on-GSI dan VTS-on-GSI. Untuk penyiapan STS, penggunaan OEM userdebug system.img
lain masih diperlukan.
Tabel berikut menunjukkan perubahan jenis image dan build untuk pengujian kepatuhan di Android 10.
Rangkaian pengujian | Uji dengan | Build | 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 yang ditandatangani |
STS | Sistem OEM | userdebug | N | Y | Baru di Q |
VTS | GSI | pengguna | Y | Y | userdebug -> GSI pengguna rilis yang ditandatangani |
Ringkasan
File gambar tambahan ini dibuat di folder build
(${ANDROID_PRODUCT_OUT}
):
boot-debug.img
vendor_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 pengguna
system.img
(baik GSI maupun OEM).
Untuk
Generic Kernel Image (GKI)
yang menggunakan perangkat dengan 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 debug ramdisk.
Prasyarat untuk menggunakan ramdisk debug
Debug ramdisk disediakan oleh OEM yang menjalankan pengujian kepatuhan. 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_IMAGE
benarskip_initramfs
di command line kernel
GSI Android 12
Tidak ada petunjuk tambahan yang diperlukan untuk menggunakan debug ramdisk 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
-nya 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-boot image GSI, selalu sertakan perubahan sepolicy terbaru dari cabang android11-gsi
untuk membangun ulang boot-debug.img
atau vendor_boot-debug.img
Anda.
Atau, alat repack_bootimg
dapat digunakan untuk membangun kembali
boot-debug.img
atau vendor_boot-debug.img
dengan sepolicy GSI yang telah diupdate.
Mengemas ulang ramdisk debug
Daripada menggabungkan perubahan sepolicy untuk membangun ulang boot-debug.img
, partner dapat menggunakan repack_bootimg
untuk memperbarui file sepolicy GSI ke boot-debug.img
(atau vendor_boot-debug.img
jika perangkat menggunakan GKI).
Langkah-langkahnya adalah sebagai berikut:
Download
otatools.zip
dari https://ci.android.com. Sebaiknya download dari artefak buildaosp_cf_arm64_only_phone-userdebug
di cabangaosp-android-latest-release
.Siapkan lingkungan eksekusi untuk
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
Download
userdebug_plat_sepolicy.cil
atauboot-with-debug-ramdisk-${KERNEL_VERSION}.img
dari 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
boot-debug.img
atauvendor_boot-debug.img
perangkat denganuserdebug_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 GKI
repack_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.cil
Dengan
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 GKI
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.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
Argumen
--ramdisk_add
dapat 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 debug ramdisk mungkin berbeda di berbagai versi Android. Di
Android 10 dan 11, jalur tersebut adalah
first_stage_ramdisk/userdebug_plat_sepolicy.cil
untuk perangkat dengan
androidboot.force_normal_boot=1
di command line kernel. Jika tidak, jalur
adalah userdebug_plat_sepolicy.cil
.
Jalankan perintah berikut untuk memeriksa apakah ada androidboot.force_normal_boot
di command line kernel:
adb root
adb 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.cil
Jika 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.cil
Menambahkan footer AVB
Jika image yang diteruskan ke --dst_bootimg
dikonfigurasi sebagai partisi
berantai AVB, 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.img
Jika awalnya memiliki footer AVB berantai, footer AVB perlu ditambahkan setelah menjalankan perintah repack_bootimg
. Penggunaan kunci pengujian apa pun untuk menandatangani
vendor_boot-debug.img
akan berhasil 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