На этой странице объясняется, как развернуть двоичный файл 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, и интегрировать ее в вашу цепочку загрузки.
Создание и запуск ГБЛ
Чтобы построить и запустить ГБЛ:
Убедитесь, что у вас установлены инструмент репозитория и загрузчик Bazel:
sudo apt install repo bazel-bootstrap
Инициализируйте текущий каталог для управления исходным кодом с помощью файла манифеста
uefi-gbl-mainline
:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16
Создайте приложение EFI:
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
Запустите приложение 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
.