GBL 배포

이 페이지에서는 GBL 바이너리를 배포하는 방법을 설명합니다.

부팅 펌웨어 요구사항

GBL을 사용하려면 부팅 펌웨어가 다음 요구사항을 충족해야 합니다.

  • UEFI 규정 준수 펌웨어는 필요한 UEFI 프로토콜을 구현하고 사용해야 합니다. 또한 정의된 UEFI 프로토콜을 사용하는 공급업체별 확장 프로그램을 허용해야 합니다.

  • 보안 펌웨어는 Android 자체 검사 부팅 (AVB)의 모든 측면을 구현하여 인증된 이미지만 로드되도록 해야 합니다.

  • 부팅 모드 바이너리는 일반 부팅, 복구 부팅, 빠른 부팅과 같은 다양한 부팅 모드를 처리할 수 있어야 합니다.

  • 동적 파티션 부팅 펌웨어는 올바른 A/B 부팅 슬롯 읽기를 지원하고 super의 동적 파티션 및 사용자 데이터와 호환되도록 슬롯 선택 로직을 구현해야 합니다.

  • OS 구성 기기를 부팅하는 데 필요한 OEM 맞춤설정으로 커널 명령줄, 기기 트리 (DTB), bootconfig를 수정할 수 있어야 합니다.

  • 보호된 VM 로드 바이너리는 보호된 VM이 있는 경우 Android 커널 전에 사전 확인된 보호된 VM 펌웨어를 올바르게 로드해야 합니다. 자세한 내용은 Microdroid 부팅 시퀀스를 참고하세요.

  • 메모리 관리 부팅 펌웨어는 UEFI 메모리 할당 API를 지원해야 합니다.

  • 호환성 및 하위 호환성 펌웨어는 공급업체, SoC가 다른 기기에서 작동하고 해당 Android 버전과의 하위 호환성을 유지해야 합니다.

부팅 펌웨어 지원

이전 섹션의 요구사항을 지원하는 데 필요한 수정사항을 적용하면 다음 UEFI 펌웨어 구현이 GBF와 함께 작동합니다.

  • EDK2 (Tianocore) EDK2는 널리 사용되는 오픈소스 UEFI 구현입니다. EDK2 기반 부트로더에는 GBL 지원이 필요하며 UEFI 지원은 이미 있습니다.
  • U-Boot GBL 사용을 위한 UEFI 호환성을 얻고 있는 유연하고 널리 사용되는 오픈소스 부트로더 프로젝트입니다.
  • LittleKernel (LK) 일부 공급업체에서 사용하는 오픈소스 부트로더입니다.

GBL 실행

사전 빌드된 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. Cuttlefish 내에서 EFI 앱을 실행합니다.

    cvd start --android_efi_loader=path_to_the_EFI_app ...
    

    cvd start 명령어는 Android를 직접 부팅하는 대신 EFI 앱을 사용하여 Android를 부팅합니다.

버그 신고 및 부트로더팀에 문의

GBL 버그를 신고하려면 Buganizer의 Android Generic Bootloader 구성요소로 이동합니다.

궁금한 점이 있으면 GBL팀에 문의하여 android-gbl@google.com에 이메일을 보내세요.