Тестирование VTS с помощью Debug Ramdisk

Так как Android 10, Generic System Image (GSI) , используемый для запуска CTS-на-GSI / VTS тестирования соответствия изменялось от userdebug пользовательской типа сборки для того , чтобы быть подписан релиз. Это проблема для тестирования СДСА , поскольку СДС требует adb root , чтобы бежать, но adb root не доступен на устройстве пользователя сборки.

Отладки виртуальный диск (или отладки загрузочный образ) вводится для того, чтобы adb root на пользователем устройства сборки которого загрузчик разблокирован . Это упрощает поток тестирования, используя тот же пользователь сборки GSI system.img для CTS-на-GSI и СДС-на-GSI. Для установки STS, используя другой userdebug OEM system.img все еще требуется.

В следующей таблице показаны изменения образа и типа сборки для тестирования на соответствие в Android 10.

Тестирование Тест с Строить Отладочный ramdisk корень adb? Изменение варианта сборки Android 9 -> 10
CTS Система OEM Пользователь N N Без изменений
CTS-на-GSI GSI Пользователь N N

userdebug -> пользовательский GSI

выпуск подписан

СТС Система OEM userdebug N Y Новое в Q
СУДС GSI Пользователь Y Y

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 - й или ОЙ).

Для Generic образа ядра (ГКО) с помощью устройств , которые имеют vendor_boot раздел, boot-debug.img не должен быть прошит, как boot раздел должен быть прошит с сертифицированным ГКИ изображением. Вместо vendor_boot-debug.img должен быть прошит на vendor_boot раздел для того , чтобы облегчить отладки псевдодиска.

Предварительные условия для использования отладочного ramdisk

Отладочный виртуальный диск предоставляется OEM-производителем, выполняющим тесты на соответствие. Он не должен быть подписан о выпуске, и его можно использовать только в том случае, если устройство разблокировано.

Отладочный виртуальный диск не будет сгенерирован или использован для обновления устройств с:

  • BOARD_BUILD_SYSTEM_ROOT_IMAGE правда
  • skip_initramfs в командной строке ядра

Android 12 GSI

Никаких дополнительных инструкций для использования отладочного RAM-диска с Android 12 GSI не требуется.

Начиная с 09/29/2021, отлаживать RAMдиск , больше не требуют обновления с repack_bootimg инструмента. Android 12 GSI сборки после SGR1.210929.001 (7777720) включает уточненный userdebug_plat_sepolicy.cil файл в system.img и игнорирует userdebug_plat_sepolicy.cil от отладки псевдодиска. Смотрите КН для деталей.

Android 11 GSI

Когда boot-debug.img или vendor_boot-debug.img используется система sepolicy загружается из 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 sepolicy.

Переупаковка отладочного ramdisk

Вместо того , чтобы внедрить изменения sepolicy восстановить boot-debug.img , партнеры могут использовать repack_bootimg обновить sepolicy файл GSI в boot-debug.img (или vendor_boot-debug.img , если устройство использует ГКИ).

Шаги следующие:

  1. Скачать otatools.zip из https://ci.android.com . Мы рекомендуем загрузить из сборки артефактов aosp_arm64-userdebug на aosp-master .

  2. Настройка среды выполнения для repack_bootimg :

    unzip otatools.zip -d otatools
    export PATH="${PWD}/otatools/bin:${PATH}"
    repack_bootimg --help
    
  3. Скачать 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 пользователя / последнего .

  4. Обновление устройства 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.

Изображение отладки 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 Зависит от force_normal_boot Зависит от force_normal_boot userdebug_plat_sepolicy.cil
Зависит от устройства vendor_boot-debug.img N / A Зависит от 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

Если изображение передается --dst_bootimg сконфигурировано как АВБ-приковано раздела, AVB сноска должна быть добавлена после запуска repack_bootimg команды.

Например, перед запуском 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