Начиная с Android 10, универсальный образ системы (GSI), используемый для запуска тестирования на соответствие CTS-on-GSI/VTS , был изменен с userdebug на тип пользовательской сборки, чтобы быть подписанным для выпуска. Это проблема для тестирования VTS, потому что VTS требует запуска adb 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 системного файла sepolicy и дополнительный файл свойств adb_debug.prop . Это позволяет использовать adb root с пользовательской сборкой system.img (либо GSI, либо OEM).
Для универсального образа ядра (GKI) , использующего устройства с vendor_boot , boot-debug.img не нужно прошивать, так как boot раздел должен быть прошит сертифицированным образом GKI. Вместо этого vendor_boot-debug.img следует прошить в раздел vendor_boot , чтобы облегчить отладку RAM-диска.
Предпосылки для использования отладочного виртуального диска
Виртуальный диск для отладки предоставляется OEM-производителем, выполняющим тесты на соответствие. Он не должен быть подписанным, и его можно использовать только в том случае, если устройство разблокировано.
Виртуальный диск отладки не будет создан или использован для обновления устройств с:
-
BOARD_BUILD_SYSTEM_ROOT_IMAGEверно -
skip_initramfsв командной строке ядра
Android 12 GSI
Для использования отладочного виртуального диска с Android 12 GSI не требуется никаких дополнительных инструкций.
Начиная с 29.09.2021 отладочные RAM-диски больше не требуют обновления с помощью инструмента repack_bootimg . Сборка Android 12 GSI после SGR1.210929.001 (7777720) включает обновленный файл userdebug_plat_sepolicy.cil в свой system.img и игнорирует userdebug_plat_sepolicy.cil из виртуального диска отладки. Подробнее см. в CL .
Android 11 GSI
Когда используется boot-debug.img или vendor_boot-debug.img , системная политика загружается из файла userdebug_plat_sepolicy.cil на отладочном виртуальном диске 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 для обновления файла sepolicy GSI в boot-debug.img (или vendor_boot-debug.img , если устройство использует GKI).
Шаги следующие:
Загрузите
otatools.zipс https://ci.android.com . Мы рекомендуем загружать из артефактов сборкиaosp_arm64-userdebugнаaosp-master.Настройте среду выполнения для
repack_bootimg:unzip otatools.zip -d otatoolsexport 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/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 GKIrepack_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 GKIrepack_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 на RAM-диск --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 rootadb 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 из 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 , необходимо добавить нижний колонтитул AVB после выполнения команды repack_bootimg .
Например, перед запуском repack_bootimg выполните следующую команду, чтобы проверить, есть ли у vendor_boot-debug.img связанный нижний колонтитул AVB.
avbtool info_image --image vendor_boot-debug.img
Если он изначально имеет связанный нижний колонтитул 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