Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Pengujian VTS dengan Debug Ramdisk

Sejak Android 10, yang Generic System Image (GSI) yang digunakan untuk menjalankan CTS-on-GSI / VTS pengujian kepatuhan berubah dari userdebug kepada pengguna membangun jenis agar rilis ditandatangani. Ini adalah masalah untuk pengujian VTS karena VTS membutuhkan adb root lari, tapi adb root tidak tersedia pada perangkat pengguna membangun.

Debug ramdisk (atau debug boot image) diperkenalkan untuk memungkinkan adb root pada perangkat pengguna membangun yang bootloader yang dibuka . Ini menyederhanakan aliran pengujian dengan menggunakan pengguna sama membangun GSI yang system.img untuk CTS-on-GSI dan VTS-on-GSI. Untuk pengaturan STS, menggunakan userdebug lain OEM system.img masih diperlukan.

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

Gambaran

File gambar tambahan ini dihasilkan di bawah folder membangun ( ${ANDROID_PRODUCT_OUT} ):

  • boot-debug.img
  • vendor_boot-debug.img

Ketika boot-debug.img berkelebat ke boot partisi perangkat, versi userdebug dari file sistem sepolicy dan file properti tambahan, adb_debug.prop , dimuat. Hal ini memungkinkan adb root dengan pengguna membangun system.img (baik GSI atau OEM).

Untuk Generic Kernel Gambar (GKI) menggunakan perangkat yang memiliki vendor_boot partisi, boot-debug.img tidak boleh melintas, sebagai boot partisi harus melintas dengan gambar GKI bersertifikat. Sebaliknya vendor_boot-debug.img harus melintas ke vendor_boot partisi untuk memfasilitasi men-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 dari 2021/09/29, ramdisks men-debug tidak lagi memerlukan memperbarui dengan repack_bootimg alat. Android 12 GSI membangun setelah SGR1.210929.001 (7777720) menggabungkan up-to-date userdebug_plat_sepolicy.cil file dalam nya system.img dan pengabaian userdebug_plat_sepolicy.cil dari ramdisk debug. Lihat CLS untuk rincian.

Android 11 GSI

Ketika boot-debug.img atau vendor_boot-debug.img digunakan, sistem sepolicy akan dimuat dari userdebug_plat_sepolicy.cil file dalam ramdisk debug dari boot-debug.img atau vendor_boot-debug.img . Dalam rangka untuk boot GSI gambar, silahkan selalu menggabungkan up-to-date perubahan sepolicy dari android11-gsi cabang untuk membangun kembali Anda boot-debug.img atau vendor_boot-debug.img .

Atau, repack_bootimg alat dapat digunakan untuk membangun kembali boot-debug.img atau vendor_boot-debug.img dengan update GSI sepolicy.

Mengemas ulang ramdisk debug

Alih-alih menggabungkan perubahan sepolicy untuk membangun kembali boot-debug.img , mitra dapat menggunakan repack_bootimg untuk memperbarui GSI sepolicy file ke boot-debug.img (atau vendor_boot-debug.img jika perangkat menggunakan GKI).

Langkah-langkahnya adalah sebagai berikut:

  1. Ambil otatools.zip dari https://ci.android.com . Sebaiknya download dari membangun artefak dari aosp_arm64-userdebug pada aosp-master .

  2. Pengaturan lingkungan eksekusi untuk repack_bootimg :

    unzip otatools.zip -d otatools
    export PATH="${PWD}/otatools/bin:${PATH}"
    repack_bootimg --help
    
  3. Download userdebug_plat_sepolicy.cil atau boot-with-debug-ramdisk-${KERNEL_VERSION}.img dari membangun GSI yang Anda gunakan. Misalnya, jika Anda menggunakan arm64 GSI dari RJR1.211020.001 (7840830) , kemudian download dari https://ci.android.com/builds/submitted/ 7.840.830 / aosp_arm64-user / terbaru .

  4. Update perangkat boot-debug.img atau vendor_boot-debug.img dengan userdebug_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 dari --ramdisk_add dapat disesuaikan sesuai dengan konfigurasi perangkat. Lihat bagian berikutnya untuk penjelasan rinci.

Jalur kebijakan debug pengguna

Di atas repack_bootimg salinan berkas userdebug_plat_sepolicy.cil dari ramdisk dari --src_bootimg ke ramdisk dari --dst_bootimg . Namun, jalur dalam ramdisk debug mungkin berbeda di versi Android yang berbeda. Dalam Android 10 dan 11, jalan adalah first_stage_ramdisk/userdebug_plat_sepolicy.cil untuk perangkat dengan androidboot.force_normal_boot=1 di baris perintah kernel. Jika tidak, jalan 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, jalan 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 src_path:dst_path pasang. Sebagai contoh, salinan perintah berikut mengajukan first_stage_ramdisk/userdebug_plat_sepolicy.cil dari Android 11 boot-with-debug-ramdisk-5.4.img ke first_stage_ramdisk/userdebug_plat_sepolicy.cil dalam sebuah Android 11 vendor_boot-debug.img .

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 untuk 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

Jika gambar diteruskan ke --dst_bootimg dikonfigurasi sebagai AVB-dirantai partisi, sebuah footer AVB perlu ditambahkan setelah menjalankan repack_bootimg perintah.

Misalnya, sebelum menjalankan repack_bootimg , jalankan perintah berikut untuk memeriksa apakah sebuah vendor_boot-debug.img memiliki AVB footer dirantai.

avbtool info_image --image vendor_boot-debug.img

Jika awalnya memiliki AVB footer dirantai, sebuah footer AVB perlu ditambahkan setelah menjalankan repack_bootimg perintah. Menggunakan kunci tes untuk menandatangani vendor_boot-debug.img karya karena ramdisk men-debug hanya dapat digunakan ketika perangkat terkunci, yang memungkinkan kunci non-rilis gambar ditandatangani pada boot atau vendor_boot partisi.

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