Sejak Android 10,
Generic System Image (GSI) yang digunakan untuk menjalankan
Pengujian kepatuhan CTS-on-GSI/VTS berubah
dari userdebug ke jenis build pengguna agar bisa ditandatangani rilis. Ini adalah
masalah untuk pengujian VTS
karena VTS memerlukan
adb root
yang akan dijalankan, tetapi
adb root
tidak tersedia di perangkat build pengguna.
Ramdisk debug (atau image boot debug) diperkenalkan untuk mengaktifkan adb root
pada
perangkat build pengguna yang bootloader-nya
terbuka. Hal ini menyederhanakan pengujian
dengan menggunakan system.img
GSI build pengguna yang sama untuk CTS-on-GSI dan
VTS-on-GSI. Untuk penyiapan STS, penggunaan system.img
OEM userdebug lain masih
tidak diperlukan.
Tabel berikut menunjukkan perubahan jenis build dan image untuk pengujian kepatuhan di Android 10.
Rangkaian pengujian | Uji dengan | Build | Men-debug ramdisk | root adb? | Android 9 -> 10 perubahan varian build |
---|---|---|---|---|---|
CTS | Sistem OEM | pengguna | T | T | Tidak ada perubahan |
CTS-on-GSI | GSI | pengguna | T | T | userdebug -> GSI pengguna ditandatangani rilis |
STS | Sistem OEM | debug pengguna | T | Y | Baru di Q |
VTS | GSI | pengguna | Y | Y | userdebug -> GSI pengguna ditandatangani rilis |
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,
versi userdebug dari file sepolicy sistem dan file properti tambahan,
adb_debug.prop
dimuat. Hal ini memungkinkan adb root
dengan build pengguna
system.img
(GSI atau OEM).
Sebagai
Gambar Kernel Generik (GKI)
menggunakan perangkat yang memiliki partisi vendor_boot
, boot-debug.img
tidak boleh
di-flash, karena partisi boot
harus di-flash dengan image GKI yang tersertifikasi.
Sebagai gantinya, vendor_boot-debug.img
harus di-flash ke vendor_boot
partisi untuk
memfasilitasi {i>debug ramdisk<i}.
Prasyarat untuk menggunakan ramdisk debug
Ramdisk debug disediakan oleh OEM yang menjalankan uji kepatuhan. Ini 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 diperlukan petunjuk tambahan untuk menggunakan ramdisk debug dengan GSI Android 12.
Mulai tanggal 29/09/2021, debug ramdisk tidak lagi memerlukan pembaruan dengan
Alat repack_bootimg
. GSI Android 12
build setelah SGR1.210929.001 (7777720)
menggabungkan
userdebug_plat_sepolicy.cil
file dalam system.img
dan mengabaikan
userdebug_plat_sepolicy.cil
dari ramdisk debug. Lihat
CL untuk
spesifikasi
pendukung.
GSI Android 11
Jika boot-debug.img
atau vendor_boot-debug.img
digunakan, sistem
sepolicy dimuat dari file userdebug_plat_sepolicy.cil
dalam debug
ramdisk boot-debug.img
atau vendor_boot-debug.img
. Untuk mem-booting GSI
gambar, harap selalu sertakan perubahan keamanan terkini dari
android11-gsi
untuk membuat ulang boot-debug.img
atau vendor_boot-debug.img
.
Atau, alat repack_bootimg
dapat digunakan untuk membuat ulang
boot-debug.img
atau vendor_boot-debug.img
dengan sekebijakan GSI yang diupdate.
Kemas ulang ramdisk debug
Partner tidak menyertakan perubahan kebijakan untuk membangun ulang boot-debug.img
dapat menggunakan repack_bootimg
untuk mengupdate file sepolicy GSI ke boot-debug.img
(atau vendor_boot-debug.img
jika perangkat menggunakan GKI).
Langkah-langkahnya sebagai berikut:
Download
otatools.zip
dari https://ci.android.com. Sebaiknya download dari artefak buildaosp_arm64-userdebug
padaaosp-main
.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)
, lalu download dari https://ci.android.com/builds/submitted/7840830/AOSP_arm64-user/latest.Update 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 perangkatnya konfigurasi standar. Lihat bagian berikutnya untuk mengetahui informasi selengkapnya penjelasan.
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 versi Android yang berbeda. Di beberapa
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 root
adb shell cat /proc/cmdline | grep force_normal_boot
Mulai dari Android 12, jalur dalam debug
ramdisk selalu userdebug_plat_sepolicy.cil
, terlepas dari keberadaan
androidboot.force_normal_boot=1
di command line kernel. Hal berikut
tabel yang menunjukkan jalur dalam ramdisk debug pada versi Android yang berbeda.
Gambar debug | Android 10 | Android 11 | Android 12 |
---|---|---|---|
Booting-with-debug-ramdisk GKI-${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,
maka perintahnya harus disesuaikan seperti
di bawah ini 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 gambar yang diteruskan ke --dst_bootimg
dikonfigurasi sebagai
Dirantai AVB
partisi, footer AVB perlu ditambahkan setelah menjalankan repack_bootimg
perintah.
Misalnya, sebelum menjalankan repack_bootimg
, jalankan perintah berikut untuk
periksa 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
. Menggunakan kunci uji apa pun untuk menandatangani
vendor_boot-debug.img
berfungsi karena ramdisk debug hanya dapat digunakan saat
perangkat tidak dikunci, yang mengizinkan image bertanda tangan non-rilis di boot
atau
Partisi 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