Начиная с Android 10, общий образ системы (GSI), используемый для запуска тестирования на соответствие CTS-on-GSI/VTS, изменился с пользовательской отладки на тип пользовательской сборки, чтобы его можно было подписать выпуском. Это проблема для тестирования VTS, поскольку для запуска VTS требуется adb root
, но adb root
недоступен на устройстве пользовательской сборки.
Отладочный виртуальный диск (или отладочный загрузочный образ) введен для включения adb root
на пользовательском устройстве сборки, загрузчик которого разблокирован . Это упрощает процесс тестирования за счет использования одной и той же пользовательской сборки GSI system.img
для CTS-on-GSI и VTS-on-GSI. Для настройки STS по-прежнему требуется использование другого OEM-файла userdebug system.img
.
В следующей таблице показаны изменения образа и типа сборки для тестирования на соответствие в Android 10.
Набор тестов | Тест с | Строить | Отладочный виртуальный диск | корень адб? | Изменение варианта сборки Android 9 -> 10 |
---|---|---|---|---|---|
КТС | OEM-система | пользователь | Н | Н | Без изменений |
CTS-на-GSI | ГСИ | пользователь | Н | Н | userdebug -> пользователь GSI релиз подписан |
СТС | OEM-система | пользовательская отладка | Н | Да | Новое в Q |
СУДС | ГСИ | пользователь | Да | Да | userdebug -> пользователь GSI релиз подписан |
Обзор
Эти дополнительные файлы изображений создаются в папке сборки ( ${ANDROID_PRODUCT_OUT}
):
-
boot-debug.img
-
vendor_boot-debug.img
Когда boot-debug.img
прошивается в boot
раздел устройства, загружается версия userdebug файла системной политики и дополнительный файл свойств adb_debug.prop
. Это позволяет использовать adb root
с пользовательской сборкой system.img
(GSI или OEM).
Для универсального образа ядра (GKI) с использованием устройств с vendor_boot
нельзя прошивать boot-debug.img
, поскольку boot
раздел должен быть прошит сертифицированным образом GKI. Вместо этого vendor_boot-debug.img
следует записать в vendor_boot
, чтобы облегчить отладку виртуального диска.
Предварительные условия для использования отладочного виртуального диска
Отладочный виртуальный диск предоставляется OEM-производителем, проводящим тесты на соответствие. Он не должен быть подписан выпуском и может использоваться только в том случае, если устройство разблокировано.
Отладочный виртуальный диск не будет создан или использован для обновления устройств с помощью:
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
правда -
skip_initramfs
в командной строке ядра
Андроид 12 ГСИ
Для использования виртуального диска отладки с Android 12 GSI не требуется никаких дополнительных инструкций.
С 29.09.2021 отладочные рамдиски больше не требуют обновления инструментом repack_bootimg
. Сборка Android 12 GSI после SGR1.210929.001 (7777720)
включает обновленный файл userdebug_plat_sepolicy.cil
в свой system.img
и игнорирует userdebug_plat_sepolicy.cil
с виртуального диска отладки. Подробности смотрите в CL .
Андроид 11 ГСИ
При использовании boot-debug.img
илиvendor_boot vendor_boot-debug.img
системная политика безопасности загружается из файла userdebug_plat_sepolicy.cil
на виртуальном диске отладки boot-debug.img
илиvendor_boot vendor_boot-debug.img
. Чтобы загрузить образы GSI, всегда добавляйте актуальные изменения sepolicy из ветки android11-gsi
, чтобы перестроить ваш boot-debug.img
илиvendor_boot vendor_boot-debug.img
.
В качестве альтернативы можно использовать инструмент repack_bootimg
для пересборки boot-debug.img
vendor_boot-debug.img
с обновленной политикой GSI sepolicy.
Перепаковать отладочный виртуальный диск
Вместо внесения изменений sepolicy для пересборки boot-debug.img
партнеры могут использовать repack_bootimg
для обновления файла sepolicy GSI до boot-debug.img
( vendor_boot-debug.img
если устройство использует GKI).
Шаги следующие:
Загрузите
otatools.zip
с https://ci.android.com . Мы рекомендуем скачать из сборки артефактыaosp_arm64-userdebug
наaosp-main
.Настройте среду выполнения для
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
Загрузите
userdebug_plat_sepolicy.cil
илиboot-with-debug-ramdisk-${KERNEL_VERSION}.img
из используемой вами сборки GSI. Например, если вы используете GSI Arm64 отRJR1.211020.001 (7840830)
, загрузите его с https://ci.android.com/builds/submit/7840830/aosp_arm64-user/latest .Обновите устройство
boot-debug.img
vendor_boot-debug.img
с помощью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
С помощью
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
Аргументы
--ramdisk_add
можно настроить в соответствии с конфигурациями устройства. Подробное объяснение смотрите в следующем разделе .
Путь к политике пользовательской отладки
Вышеуказанный repack_bootimg
копирует файл userdebug_plat_sepolicy.cil
с виртуального диска --src_bootimg
на виртуальный диск --dst_bootimg
. Однако путь на виртуальном диске отладки может отличаться в разных версиях Android. В Android 10 и 11 путь — first_stage_ramdisk/userdebug_plat_sepolicy.cil
для устройств с androidboot.force_normal_boot=1
в командной строке ядра. В противном случае путь — userdebug_plat_sepolicy.cil
.
Запустите следующую команду, чтобы проверить, есть ли в командной строке ядра androidboot.force_normal_boot
:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
Начиная с Android 12, путь внутри виртуального диска отладки всегда userdebug_plat_sepolicy.cil
, независимо от наличия androidboot.force_normal_boot=1
в командной строке ядра. В следующей таблице показаны пути внутри виртуального диска отладки в разных версиях Android.
Отладочное изображение | Андроид 10 | Андроид 11 | Андроид 12 |
---|---|---|---|
GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | Н/Д | first_stage_ramdisk/userdebug_plat_sepolicy.cil | userdebug_plat_sepolicy.cil |
boot-debug.img для конкретного устройства | Зависит от Force_normal_boot | Зависит от Force_normal_boot | userdebug_plat_sepolicy.cil |
Vendor_boot-debug.img для конкретного устройства | Н/Д | Зависит от Force_normal_boot | userdebug_plat_sepolicy.cil |
Вы можете указать --ramdisk_add
для копирования файлов по разным путям и по разным путям со списком пар src_path:dst_path
. Например, следующая команда копирует файл first_stage_ramdisk/userdebug_plat_sepolicy.cil
из файла boot-with-debug-ramdisk-5.4.img
Android 11 в first_stage_ramdisk/userdebug_plat_sepolicy.cil
внутри 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
Если в командной строке ядра нет androidboot.force_normal_boot=1
, то команду следует изменить, как показано ниже, чтобы изменить путь назначения на 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
Добавьте нижний колонтитул AVB
Если изображение, переданное в --dst_bootimg
, настроено как раздел, связанный с AVB , после запуска команды repack_bootimg
необходимо добавить нижний колонтитул AVB.
Например, перед запуском repack_bootimg
выполните следующую команду, чтобы проверить, есть ли в vendor_boot-debug.img
связанный нижний колонтитул AVB.
avbtool info_image --image vendor_boot-debug.img
Если изначально у него есть связанный нижний колонтитул AVB, нижний колонтитул AVB необходимо добавить после запуска команды repack_bootimg
. Использование любого тестового ключа для подписания vendor_boot-debug.img
работает, поскольку отладочный виртуальный диск можно использовать только тогда, когда устройство разблокировано, что позволяет не выпускать подписанные ключом изображения в boot
разделе или 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