Начиная с Android 10, Generic System Image (GSI), используемый для запуска тестирования соответствия CTS-on-GSI/VTS, изменился с userdebug на тип сборки пользователя, чтобы иметь возможность подписи релиза. Это проблема для тестирования VTS, поскольку VTS требует adb root
для запуска, но adb root
недоступен на устройстве сборки пользователя.
Отладочный ramdisk (или отладочный загрузочный образ) вводится для включения adb root
на устройстве пользовательской сборки, загрузчик которого разблокирован . Это упрощает поток тестирования за счет использования того же пользовательского GSI system.img
для CTS-on-GSI и VTS-on-GSI. Для настройки STS по-прежнему требуется использование другого пользовательского OEM system.img
.
В следующей таблице показаны изменения образа и типа сборки для тестирования соответствия в Android 10.
Тестовый набор | Тест с | Строить | Отладочный электронный диск | adb root? | Изменение варианта сборки 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 системного файла sepolicy и дополнительный файл свойств adb_debug.prop
. Это позволяет использовать adb root
с пользовательской сборкой system.img
(либо GSI, либо OEM).
Для Generic Kernel Image (GKI) , использующего устройства с разделом vendor_boot
, boot-debug.img
не должен быть прошит, так как boot
раздел должен быть прошит сертифицированным образом GKI. Вместо этого vendor_boot-debug.img
должен быть прошит на раздел vendor_boot
, чтобы облегчить отладочный ramdisk.
Предварительные условия для использования отладочного электронного диска
Отладочный ramdisk предоставляется OEM, который проводит тесты на соответствие. Он не должен быть подписан релизом и может использоваться только если устройство разблокировано.
Отладочный электронный диск не будет создан или использован для обновления устройств с:
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
правда -
skip_initramfs
в командной строке ядра
Android 12 GSI
Для использования отладочного ramdisk с Android 12 GSI дополнительных инструкций не требуется.
Начиная с 29.09.2021 отладочные ramdisk больше не требуют обновления с помощью инструмента repack_bootimg
. Сборка Android 12 GSI после SGR1.210929.001 (7777720)
включает в себя обновленный файл userdebug_plat_sepolicy.cil
в своем system.img
и игнорирует userdebug_plat_sepolicy.cil
из отладочного ramdisk. Подробности см. в CL .
Android 11 GSI
При использовании boot-debug.img
или vendor_boot-debug.img
системная sepolicy загружается из файла userdebug_plat_sepolicy.cil
в отладочном ramdisk boot-debug.img
или vendor_boot-debug.img
. Для загрузки образов GSI всегда включайте последние изменения sepolicy из ветки android11-gsi
для пересборки boot-debug.img
или vendor_boot-debug.img
.
В качестве альтернативы можно использовать инструмент repack_bootimg
для пересборки boot-debug.img
или vendor_boot-debug.img
с обновленной политикой GSI.
Перепаковка отладочного ramdisk
Вместо включения изменений sepolicy для пересборки boot-debug.img
партнеры могут использовать repack_bootimg
для обновления файла GSI sepolicy в boot-debug.img
(или vendor_boot-debug.img
если устройство использует GKI).
Шаги следующие:
Загрузите
otatools.zip
с https://ci.android.com . Мы рекомендуем загрузку из артефактов сборкиaosp_cf_arm64_only_phone-userdebug
на веткеaosp-android-latest-release
.Настройте среду выполнения для
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, которую вы используете. Например, если вы используете arm64 GSI изRJR1.211020.001 (7840830)
, то загрузите с https://ci.android.com/builds/submitted/ 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
из ramdisk --src_bootimg
в ramdisk --dst_bootimg
. Однако путь внутри отладочного ramdisk может отличаться в разных версиях 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, путь внутри отладочного ramdisk всегда userdebug_plat_sepolicy.cil
, независимо от наличия androidboot.force_normal_boot=1
в командной строке ядра. В следующей таблице показаны пути внутри отладочного ramdisk в разных версиях 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
из Android 11 boot-with-debug-ramdisk-5.4.img
в first_stage_ramdisk/userdebug_plat_sepolicy.cil
в 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
Если в командной строке ядра отсутствует 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
работает, поскольку отладочный ramdisk можно использовать только при разблокированном устройстве, что позволяет использовать подписанные ключом non-release образы на 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