Da Android 10,
Generic System Image (GSI) utilizzata per l'esecuzione
Test di conformità CTS-on-GSI/VTS cambiati
da userdebug al tipo di build dell'utente per ottenere la firma della release. Si tratta di un
problemi per i test VTS perché VTS richiede
adb root
per essere eseguito,
adb root
non è disponibile su un dispositivo di build dell'utente.
Viene introdotto il ramdisk di debug (o immagine di avvio di debug) per abilitare adb root
su un
dispositivo di build dell'utente il cui bootloader
sbloccato. Ciò semplifica le fasi di test
il flusso di lavoro utilizzando la stessa build dell'utente system.img
per CTS-on-GSI e
VTS su GSI. Per la configurazione di STS, l'utilizzo di un altro OEM userdebug system.img
è ancora
obbligatorio.
La tabella seguente mostra le modifiche al tipo di immagine e di build per i test di conformità in Android 10.
Suite di test | Testa con | Crea | Debug di ramdisk | root ADB? | Android 9 -> 10 modifiche alle varianti della build |
---|---|---|---|---|---|
CTS | Sistema dell'OEM | utente | N | N | Nessuna influenza |
CTS su GSI | GSI | utente | N | N | debug utente -> GSI dell'utente release firmata |
STIT | Sistema dell'OEM | debug utente | N | Y | Novità nel trimestre |
VTS | GSI | utente | Y | Y | debug utente -> GSI dell'utente release firmata |
Panoramica
Questi file immagine aggiuntivi vengono generati nella cartella di build
(${ANDROID_PRODUCT_OUT}
):
boot-debug.img
vendor_boot-debug.img
Quando il flash boot-debug.img
viene eseguito sulla partizione boot
del dispositivo,
la versione userdebug del file sepolicy di sistema e un altro file delle proprietà,
adb_debug.prop
sono caricati. Questo permette a adb root
di creare contenuti
system.img
(di GSI o dell'OEM).
Per
Immagine del kernel generica (GKI)
che utilizzano dispositivi con una partizione vendor_boot
, boot-debug.img
poiché la partizione boot
deve essere inclusa in un flashing con un'immagine GKI certificata.
Al contrario, deve essere eseguito il flashing di vendor_boot-debug.img
su vendor_boot
per facilitare il debug del ramdisk.
Prerequisiti per l'utilizzo di un ramdisk di debug
Il ramdisk di debug viene fornito dall'OEM che esegue i test di conformità. it non deve avere la firma di release e può essere utilizzato soltanto se il dispositivo è sbloccato.
Il ramdisk di debug non verrà generato o utilizzato per l'upgrade dei dispositivi con:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
veroskip_initramfs
nella riga di comando del kernel
GSI per Android 12
Non sono necessarie istruzioni aggiuntive per utilizzare il ramdisk di debug con Android 12 GSI.
A partire dal 29/09/2021, i ramdisk di debug non richiedono più l'aggiornamento con
repack_bootimg
. GSI per Android 12
creare dopo che SGR1.210929.001 (7777720)
incorpora lo stato
userdebug_plat_sepolicy.cil
file nel suo system.img
e ignora
userdebug_plat_sepolicy.cil
dal ramdisk di debug. Consulta le
CL per
i dettagli.
GSI per Android 11
Quando si utilizza boot-debug.img
o vendor_boot-debug.img
, il sistema
sepolicy viene caricato dal file userdebug_plat_sepolicy.cil
nella fase di debug
ramdisk di boot-debug.img
o vendor_boot-debug.img
. Per avviare GSI
immagini, ti invitiamo a incorporare sempre le modifiche
Sepolicy aggiornate nel
android11-gsi
ramo per ricreare boot-debug.img
o vendor_boot-debug.img
.
In alternativa, potrebbe essere utilizzato lo strumento repack_bootimg
per ricreare
boot-debug.img
o vendor_boot-debug.img
con sepolicy GSI aggiornato.
Recompressione di un ramdisk di debug
Anziché incorporare modifiche al programma per ricreare boot-debug.img
, i partner
puoi utilizzare repack_bootimg
per aggiornare il file GSI sepolicy in boot-debug.img
(o vendor_boot-debug.img
se il dispositivo utilizza GKI).
Ecco la procedura:
Scarica
otatools.zip
da https://ci.android.com. Ti consigliamo di eseguire il download dagli elementi della build diaosp_arm64-userdebug
il giornoaosp-main
.Configura l'ambiente di esecuzione per
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
Scarica l'
userdebug_plat_sepolicy.cil
oboot-with-debug-ramdisk-${KERNEL_VERSION}.img
della build GSI che stai che utilizzano. Ad esempio, se utilizzi un GSI arm64RJR1.211020.001 (7840830)
, quindi scarica da https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest.Aggiorna il dispositivo
boot-debug.img
ovendor_boot-debug.img
conuserdebug_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
Con
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
Gli argomenti di
--ramdisk_add
possono essere regolati in base al dispositivo configurazioni. Per informazioni dettagliate, consulta la sezione successiva spiegazione.
Percorso del sepolicy userdebug
Il pulsante repack_bootimg
sopra copia il file userdebug_plat_sepolicy.cil
dal
ramdisk di --src_bootimg
al ramdisk di --dst_bootimg
. Tuttavia, il percorso
all'interno di un ramdisk di debug potrebbe essere diverso nelle diverse versioni di Android. Nella
Android 10 e 11, il percorso
first_stage_ramdisk/userdebug_plat_sepolicy.cil
per i dispositivi con
androidboot.force_normal_boot=1
nella riga di comando del kernel. In caso contrario,
il percorso è userdebug_plat_sepolicy.cil
.
Esegui questo comando per verificare se è presente androidboot.force_normal_boot
nella riga di comando del kernel:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
A partire da Android 12, il percorso all'interno di un debug
ramdisk è sempre userdebug_plat_sepolicy.cil
, indipendentemente dall'esistenza di
androidboot.force_normal_boot=1
nella riga di comando del kernel. Le seguenti
mostra i percorsi all'interno di un ramdisk di debug in diverse versioni di Android.
Immagine di debug | Android 10 | Android 11 | Android 12 |
---|---|---|---|
Avvio-GKI-con-ramdisk-debug-${KERNEL_VERSION}.img | N/D | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
boot-debug.img specifico per dispositivo | Dipende da force_normal_boot | Dipende da force_normal_boot | userdebug_plat_sepolicy.cil |
Vendor_boot-debug specifico per dispositivo | N/D | Dipende da force_normal_boot | userdebug_plat_sepolicy.cil |
Puoi specificare il criterio --ramdisk_add
per la copia di file da e in percorsi diversi con un
elenco di src_path:dst_path
coppie. Ad esempio, il seguente comando copia
il file first_stage_ramdisk/userdebug_plat_sepolicy.cil
da un dispositivo Android 11 boot-with-debug-ramdisk-5.4.img
a
first_stage_ramdisk/userdebug_plat_sepolicy.cil
in un vendor_boot-debug.img
di 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
Se nella riga di comando del kernel non è presente androidboot.force_normal_boot=1
,
il comando deve essere modificato come segue per cambiare il percorso di destinazione in
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
Aggiungi un piè di pagina AVB
Se l'immagine passata a --dst_bootimg
è configurata come
Collegamento AVB
devi aggiungere un piè di pagina AVB dopo aver eseguito repack_bootimg
.
Ad esempio, prima di eseguire repack_bootimg
, esegui questo comando per
verifica se vendor_boot-debug.img
ha un piè di pagina AVB concatenato.
avbtool info_image --image vendor_boot-debug.img
Se originariamente ha un piè di pagina AVB concatenato, dovrà essere aggiunto un piè di pagina AVB
dopo aver eseguito il comando repack_bootimg
. L'utilizzo di qualsiasi chiave di test per firmare
vendor_boot-debug.img
funziona perché il ramdisk di debug può essere utilizzato solo quando un
dispositivo è sbloccato, il che consente immagini con chiave non rilasciato su boot
o
vendor_boot
partizione.
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