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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание и запуск ГБЛ

Чтобы построить и запустить ГБЛ:

  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 .