Развернуть ГБЛ

На этой странице объясняется, как развернуть двоичный файл GBL.

Требования к загрузочной прошивке

Для использования GBL загрузочная прошивка должна соответствовать следующим требованиям:

  • Соответствие UEFI. Прошивка должна реализовывать и использовать требуемые протоколы UEFI. Прошивка также должна допускать расширения, специфичные для поставщика, с использованием определенных протоколов UEFI.

  • Безопасность. Прошивка должна реализовывать все аспекты Android Verified Boot (AVB), гарантируя загрузку только аутентифицированных образов.

  • Режимы загрузки. Двоичный файл должен уметь обрабатывать различные режимы загрузки, такие как обычная загрузка, загрузка восстановления и быстрая загрузка.

  • Динамическое разбиение на разделы. Загрузочная прошивка должна реализовывать логику выбора слота, чтобы она поддерживала чтение правильного загрузочного слота A/B и была совместима с динамическими разделами и пользовательскими данными в super.

  • Конфигурация ОС. Прошивка должна иметь возможность изменять командную строку ядра, дерево устройств (DTB) и конфигурацию загрузки с настройками OEM, необходимыми для загрузки устройства.

  • Загрузка защищенной виртуальной машины. Двоичный файл должен правильно загружать предварительно проверенную защищенную прошивку виртуальной машины перед ядром Android при наличии защищенных виртуальных машин. Для получения дополнительной информации см. Последовательность загрузки Microdroid.

  • Управление памятью. Загрузочная прошивка должна поддерживать API распределения памяти UEFI.

  • Совместимость и обратная совместимость. Прошивка должна работать на устройствах с разными поставщиками, SOC и поддерживать обратную совместимость с соответствующей версией Android.

Поддержка загрузочной прошивки

С учетом изменений, необходимых для поддержки требований, изложенных в предыдущем разделе, с GBF работают следующие реализации прошивки UEFI:

  • EDK2 (Tianocore) . EDK2 — это популярная реализация UEFI с открытым исходным кодом. Для загрузчиков на основе EDK2 необходима поддержка GBL, а поддержка UEFI уже присутствует.
  • U-Boot . Гибкий и широко используемый проект загрузчика с открытым исходным кодом, который приобретает совместимость с UEFI для использования GBL.
  • LittleKernel (LK) . Загрузчик с открытым исходным кодом, используемый некоторыми поставщиками.

Запустить ГБЛ

Вы можете получить готовый двоичный файл GBL для запуска или собрать свой собственный и запустить его.

Получите и запустите двоичный файл GBL

GBL распространяется как единый двоичный файл приложения EFI. Вы можете обновить этот двоичный файл независимо от базовой прошивки устройства, используя стандартный механизм обновления Android.

Начиная с Android 16, если вы поставляете устройство на базе чипсета ARM-64, мы настоятельно рекомендуем вам развернуть последнюю версию GBL, подписанную Google, и интегрировать ее в вашу цепочку загрузки.

Постройте и запустите GBL

Чтобы построить и запустить GBL:

  1. Убедитесь, что у вас установлены инструмент репозитория и загрузчик Bazel:

    sudo apt install repo bazel-bootstrap
    
  2. Инициализируйте текущий каталог для управления исходным кодом с помощью файла манифеста uefi-gbl-mainline :

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. Создайте приложение EFI:

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. Запустите приложение EFI в Cuttlefish:

    cvd start --android_efi_loader=path_to_the_EFI_app ...
    

    Вместо прямой загрузки Android эта команда cvd start использует приложение EFI для загрузки Android.

Сообщайте об ошибках и обращайтесь к команде разработчиков загрузчика

Чтобы сообщить об ошибке в GBL, перейдите к компоненту Android Generic Bootloader в Buganizer .

Если у вас есть вопросы, свяжитесь с командой GBL, отправив электронное письмо на android-gbl@google.com .