Esta página explica como implantar o binário da GBL.
Requisitos do firmware de inicialização
Para usar a GBL, o firmware de inicialização precisa atender aos seguintes requisitos:
Conformidade com a UEFI. O firmware precisa implementar e usar os protocolos UEFI necessários. O firmware também precisa permitir extensões específicas do fornecedor usando protocolos UEFI definidos.
Segurança. O firmware precisa implementar todos os aspectos da inicialização verificada do Android (AVB), garantindo que apenas imagens autenticadas sejam carregadas.
Modos de inicialização. O binário precisa ser capaz de processar vários modos de inicialização, como inicialização normal, de recuperação e fastboot.
Particionamento dinâmico. O firmware de inicialização precisa implementar a lógica de seleção de slot para oferecer suporte à leitura do slot de inicialização A/B correto e ser compatível com partições dinâmicas e userdata no super.
Configuração do SO. O firmware precisa ser capaz de modificar a linha de comando do kernel, a árvore de dispositivos (DTB, na sigla em inglês) e o bootconfig com as personalizações de OEM necessárias para inicializar o dispositivo.
Carregando a VM protegida. O binário precisa carregar corretamente o firmware de VM protegido pré-verificado antes do kernel do Android na presença de VMs protegidas. Para mais informações, consulte a sequência de inicialização do Microdroid.
Gerenciamento de memória. O firmware de inicialização precisa oferecer suporte à API de alocação de memória UEFI.
Compatibilidade e compatibilidade com versões anteriores. O firmware precisa funcionar em dispositivos com diferentes fornecedores, SOCs e manter a compatibilidade com a versão do Android correspondente.
Suporte a firmware de inicialização
Com as modificações necessárias para oferecer suporte aos requisitos na seção anterior, as seguintes implementações de firmware UEFI funcionam com o GBF:
- EDK2 (Tianocore). Um EDK2 é uma implementação de UEFI de código aberto conhecida. O suporte à GBL é necessário para carregador de inicialização baseado em EDK2, e o suporte à UEFI já está presente.
- U-Boot. Um projeto de inicializador de inicialização de código aberto flexível e amplamente usado que está ganhando compatibilidade com a UEFI para uso do GBL.
- LittleKernel (LK). Um carregador de inicialização de código aberto usado por alguns fornecedores.
Executar GBL
Você pode usar um binário GBL pré-criado ou criar o seu próprio e executá-lo.
Receber e executar o binário do GBL
O GBL é distribuído como um único binário de app EFI. É possível atualizar esse binário independentemente do firmware básico do dispositivo usando o mecanismo de atualização padrão do Android.
A partir do Android 16, se você enviar um dispositivo baseado em chipset ARM-64, recomendamos implantar a versão assinada pelo Google mais recente da GBL e integrá-la à cadeia de inicialização.
Criar e executar o GBL
Para criar e executar o GBL:
Verifique se você tem a ferramenta de repositório e o bootstrap do Bazel instalados:
sudo apt install repo bazel-bootstrap
Inicialize seu diretório atual para controle de origem usando o arquivo de manifesto
uefi-gbl-mainline
:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16
Crie o app EFI:
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
Execute o app EFI no Cuttlefish:
cvd start --android_efi_loader=path_to_the_EFI_app ...
Em vez de inicializar o Android diretamente, esse comando
cvd start
usa o app EFI para inicializar o Android.
Informar bugs e entrar em contato com a equipe do carregador de inicialização
Para informar um bug do GBL, navegue até o componente do carregador de inicialização genérico do Android no Buganizer.
Em caso de dúvidas, entre em contato com a equipe do GBL enviando um e-mail para android-gbl@google.com
.