Sejak Android 10, Generic System Image (GSI) yang digunakan untuk menjalankan pengujian kepatuhan CTS-on-GSI/VTS diubah dari userdebug menjadi tipe build pengguna untuk ditandatangani rilis. Ini adalah masalah untuk pengujian VTS karena VTS memerlukan adb root
untuk dijalankan, tetapi adb root
tidak tersedia pada perangkat build pengguna.
Debug ramdisk (atau debug boot image) diperkenalkan untuk mengaktifkan adb root
pada perangkat build pengguna yang bootloadernya tidak terkunci . Ini menyederhanakan alur pengujian dengan menggunakan pengguna yang sama membangun GSI system.img
untuk CTS-on-GSI dan VTS-on-GSI. Untuk penyiapan STS, masih diperlukan penggunadebug OEM system.img
lain.
Tabel berikut menunjukkan perubahan gambar dan jenis build untuk pengujian kepatuhan di Android 10.
Paket tes | Uji dengan | Membangun | Debug ramdisk | akar adb? | Android 9 -> 10 perubahan varian build |
---|---|---|---|---|---|
CTS | sistem OEM | pengguna | n | n | Tidak ada perubahan |
CTS-on-GSI | GSI | pengguna | n | n | userdebug -> GSI pengguna rilis ditandatangani |
STS | sistem OEM | debug pengguna | n | kamu | Baru di Q |
VTS | GSI | pengguna | kamu | kamu | userdebug -> GSI pengguna rilis ditandatangani |
Ringkasan
File gambar tambahan ini dibuat di bawah folder build ( ${ANDROID_PRODUCT_OUT}
):
-
boot-debug.img
-
vendor_boot-debug.img
Saat boot-debug.img
di-flash ke partisi boot
perangkat, versi userdebug dari file kebijakan keamanan sistem dan file properti tambahan, adb_debug.prop
, dimuat. Ini memungkinkan adb root
dengan pengguna membangun system.img
(baik 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 bersertifikat. Sebagai gantinya vendor_boot-debug.img
harus di-flash ke partisi vendor_boot
untuk memfasilitasi debug ramdisk.
Prasyarat untuk menggunakan ramdisk debug
Ramdisk debug disediakan oleh OEM yang menjalankan tes kepatuhan. Itu tidak boleh ditandatangani rilis, dan itu hanya dapat digunakan jika perangkat tidak terkunci.
Ramdisk debug tidak akan dibuat atau digunakan untuk memutakhirkan perangkat dengan:
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
benar -
skip_initramfs
di baris perintah kernel
Android 12 GSI
Tidak diperlukan instruksi tambahan untuk menggunakan ramdisk debug dengan Android 12 GSI.
Mulai 29/09/2021, ramdisk debug tidak lagi memerlukan pembaruan dengan alat repack_bootimg
. Android 12 GSI build setelah SGR1.210929.001 (7777720)
menggabungkan file userdebug_plat_sepolicy.cil
terbaru di system.img
dan mengabaikan userdebug_plat_sepolicy.cil
dari ramdisk debug. Lihat CL untuk detailnya.
Android 11 GSI
Ketika boot-debug.img
atau vendor_boot-debug.img
digunakan, kebijakan sistem dimuat dari file userdebug_plat_sepolicy.cil
di ramdisk debug dari boot-debug.img
atau vendor_boot-debug.img
. Untuk mem-boot image GSI, harap selalu sertakan perubahan kebijakan terkini dari cabang android11-gsi
untuk membangun kembali boot-debug.img
atau vendor_boot-debug.img
.
Atau, alat repack_bootimg
dapat digunakan untuk membangun kembali boot-debug.img
atau vendor_boot-debug.img
dengan kebijakan GSI yang diperbarui.
Mengemas ulang ramdisk debug
Alih-alih memasukkan perubahan kebijakan untuk membangun kembali boot-debug.img
, partner dapat menggunakan repack_bootimg
untuk memperbarui file kebijakan GSI ke boot-debug.img
(atau vendor_boot-debug.img
jika perangkat menggunakan GKI).
Langkah-langkahnya adalah sebagai berikut:
Unduh
otatools.zip
dari https://ci.android.com . Sebaiknya unduh dari artefak buildaosp_arm64-userdebug
diaosp-master
.Siapkan lingkungan eksekusi untuk
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
Unduh
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)
, unduh dari https://ci.android.com/builds/submitted/ 7840830 /aosp_arm64-user/latest .Perbarui perangkat
boot-debug.img
atauvendor_boot-debug.img
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 dengan konfigurasi perangkat. Lihat bagian selanjutnya untuk penjelasan rinci.
Jalur kebijakan debug pengguna
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 versi Android yang berbeda. Di Android 10 dan 11, jalurnya adalah first_stage_ramdisk/userdebug_plat_sepolicy.cil
untuk perangkat dengan androidboot.force_normal_boot=1
di baris perintah kernel. Jika tidak, jalurnya adalah userdebug_plat_sepolicy.cil
.
Jalankan perintah berikut untuk memeriksa apakah ada androidboot.force_normal_boot
di baris perintah 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 baris perintah kernel. Tabel berikut menunjukkan jalur dalam ramdisk debug dalam versi Android yang berbeda.
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 | Tergantung pada force_normal_boot | Tergantung pada force_normal_boot | userdebug_plat_sepolicy.cil |
Vendor_boot-debug.img khusus perangkat | T/A | Tergantung 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 baris perintah kernel, maka perintah harus disesuaikan seperti di bawah ini untuk mengubah jalur tujuan ke 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 gambar yang diteruskan ke --dst_bootimg
dikonfigurasi sebagai partisi rantai 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 yang dirantai.
avbtool info_image --image vendor_boot-debug.img
Jika awalnya memiliki footer AVB yang dirantai, footer AVB perlu ditambahkan setelah menjalankan perintah repack_bootimg
. Menggunakan kunci uji apa pun untuk menandatangani vendor_boot-debug.img
berfungsi karena ramdisk debug hanya dapat digunakan saat perangkat dibuka kuncinya, yang memungkinkan gambar yang ditandatangani kunci non-rilis pada 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