A partir de Android 10,
Es una imagen genérica del sistema (GSI) que se usa para correr.
Se modificó la prueba de cumplimiento de CTS en GSI/VTS
de userdebug a tipo de compilación de user para firmar la versión. Este es un
problema para las pruebas de VTS, ya que requiere
adb root
para ejecutar, pero
adb root
no está disponible en un dispositivo de compilación del usuario.
Se introduce el ramdisk de depuración (o imagen de arranque de depuración) para habilitar adb root
en un
de compilación de usuario cuyo bootloader es
desbloqueada. Esto simplifica las pruebas
con la misma GSI de compilación de usuario system.img
para CTS en GSI
VTS en GSI. Para la configuración de STS, el uso de otro OEM de userdebug system.img
sigue siendo
como en los productos necesarios.
En la siguiente tabla, se muestran los cambios en el tipo de compilación y imagen para las pruebas de cumplimiento en Android 10
Paquete de pruebas | Probar con | Compilación | Depura ramdisk | ¿raíz de adb? | Android 9 -> 10 cambios en la variante de compilación |
---|---|---|---|---|---|
CTS | Sistema del OEM | user | N | N | Sin cambios |
CTS en GSI | GSI | user | N | N | userdebug -> GSI del usuario versión firmada |
STS | Sistema del OEM | userdebug | N | S | Novedad en Q |
VTS | GSI | user | S | S | userdebug -> GSI del usuario versión firmada |
Descripción general
Estos archivos de imagen adicionales se generan en la carpeta de compilación
(${ANDROID_PRODUCT_OUT}
):
boot-debug.img
vendor_boot-debug.img
Cuando se instala boot-debug.img
en la partición boot
del dispositivo, el elemento
userdebug del archivo sepolicy del sistema y un archivo de propiedades adicional,
Se cargaron adb_debug.prop
. Esto permite adb root
con la compilación de usuario
system.img
(ya sea de la GSI o del OEM).
Para
Imagen genérica del kernel (GKI)
usando dispositivos que tienen una partición vendor_boot
, boot-debug.img
no debe
Se escribe en la memoria flash, ya que la partición boot
debe escribirse en la memoria flash con una imagen de GKI certificada.
En su lugar, se debe escribir vendor_boot-debug.img
en la memoria flash del vendor_boot
para facilitar la depuración de ramdisk.
Requisitos previos para usar un ramdisk de depuración
El OEM que ejecuta las pruebas de cumplimiento proporciona el ramdisk de depuración. Integra no debe tener una firma de autorización y solo se puede usar si el dispositivo está desbloqueado.
No se generará ni se usará el ramdisk de depuración para actualizar dispositivos con lo siguiente:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
(verdadero)skip_initramfs
en la línea de comandos del kernel
GSI de Android 12
No se requieren instrucciones adicionales para usar el ramdisk de depuración con la GSI de Android 12.
A partir del 29/09/2021, ya no es necesario actualizar los ramdisks de depuración con el
repack_bootimg
. GSI de Android 12
compilar después de que SGR1.210929.001 (7777720)
incorpore la versión actualizada
userdebug_plat_sepolicy.cil
en su system.img
y lo ignora
userdebug_plat_sepolicy.cil
del ramdisk de depuración. Consulta la
CL para
más detalles.
GSI de Android 11
Cuando se usan boot-debug.img
o vendor_boot-debug.img
, el sistema
se carga la política desde el archivo userdebug_plat_sepolicy.cil
en el archivo de depuración
ramdisk del boot-debug.img
o vendor_boot-debug.img
Para iniciar la GSI
imágenes, incorpore siempre cambios de políticas actualizados desde la
android11-gsi
para volver a compilar tu boot-debug.img
o vendor_boot-debug.img
.
Como alternativa, puedes usar la herramienta repack_bootimg
para recompilar un
boot-debug.img
o vendor_boot-debug.img
con la política de GSI actualizada.
Vuelve a empaquetar un ramdisk de depuración
En lugar de incorporar cambios en las políticas para recompilar boot-debug.img
, los socios
Puedes usar repack_bootimg
para actualizar el archivo de política de GSI a boot-debug.img
(o vendor_boot-debug.img
si el dispositivo usa GKI).
Los pasos son los siguientes:
Descargar
otatools.zip
de https://ci.android.com Recomendamos descargar desde los artefactos de compilación deaosp_arm64-userdebug
elaosp-main
.Configura el entorno de ejecución para
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
Descarga el archivo
userdebug_plat_sepolicy.cil
oboot-with-debug-ramdisk-${KERNEL_VERSION}.img
de la compilación de la GSI usan. Por ejemplo, si usas una GSI de arm64 deRJR1.211020.001 (7840830)
y, luego, descargar desde https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest.Actualiza el 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
Los argumentos de
--ramdisk_add
se pueden ajustar según el dispositivo. parámetros de configuración. Consulta la siguiente sección para obtener más información explicación.
Ruta de acceso de la política userdebug
El repack_bootimg
anterior copia el archivo userdebug_plat_sepolicy.cil
del
ramdisk de --src_bootimg
al ramdisk de --dst_bootimg
. Sin embargo, la ruta
dentro de un ramdisk de depuración pueden ser diferentes en diferentes versiones de Android. En
Android 10 y 11, la ruta es
first_stage_ramdisk/userdebug_plat_sepolicy.cil
para dispositivos con
androidboot.force_normal_boot=1
en la línea de comandos del kernel. De lo contrario, el
ruta de acceso es userdebug_plat_sepolicy.cil
.
Ejecuta el siguiente comando para verificar si hay androidboot.force_normal_boot
.
en la línea de comandos del kernel:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
A partir de Android 12, la ruta dentro de una depuración
ramdisk siempre es userdebug_plat_sepolicy.cil
, independientemente de la existencia de
androidboot.force_normal_boot=1
en la línea de comandos del kernel. Lo siguiente
En la tabla, se muestran las rutas de acceso de un ramdisk de depuración en diferentes versiones de Android.
Depurar imagen | Android 10 | Android 11 | Android 12 |
---|---|---|---|
GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | N/A | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
boot-debug.img específico del dispositivo | Depende de force_normal_boot. | Depende de force_normal_boot. | userdebug_plat_sepolicy.cil |
Proveedor_boot-debug.img específico del dispositivo | N/A | Depende de force_normal_boot. | userdebug_plat_sepolicy.cil |
Puedes especificar --ramdisk_add
para copiar archivos desde y hacia rutas diferentes con un
lista de pares src_path:dst_path
. Por ejemplo, el siguiente comando copia
el archivo first_stage_ramdisk/userdebug_plat_sepolicy.cil
de un boot-with-debug-ramdisk-5.4.img
de Android 11 a
first_stage_ramdisk/userdebug_plat_sepolicy.cil
en una vendor_boot-debug.img
de 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
Si no hay androidboot.force_normal_boot=1
en la línea de comandos del kernel,
entonces el comando se debe ajustar como se muestra a continuación para cambiar la ruta de destino a
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
Agregar un pie de página de AVB
Si la imagen que se pasa a --dst_bootimg
se configura como
Encadenado de AVB
partición, se debe agregar un pie de página de AVB después de ejecutar repack_bootimg
kubectl.
Por ejemplo, antes de ejecutar repack_bootimg
, ejecuta el siguiente comando para
Verifica si un elemento vendor_boot-debug.img
tiene un pie de página de AVB encadenado.
avbtool info_image --image vendor_boot-debug.img
Si originalmente tiene un pie de página de AVB encadenado, se debe agregar un pie de página de AVB.
después de ejecutar el comando repack_bootimg
. Usar cualquier clave de prueba para firmar
vendor_boot-debug.img
funciona porque el ramdisk de depuración solo se puede usar cuando se
el dispositivo está desbloqueado, lo que permite imágenes firmadas de claves que no se liberarán en boot
o
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