이 페이지에서는 GBL 바이너리를 배포하는 방법을 설명합니다.
부팅 펌웨어 요구사항
GBL을 사용하려면 부팅 펌웨어가 다음 요구사항을 충족해야 합니다.
UEFI 규정 준수 펌웨어는 필수 UEFI 프로토콜을 구현하고 사용해야 합니다. 펌웨어는 정의된 UEFI 프로토콜을 사용하여 공급업체별 확장을 허용해야 합니다.
보안 펌웨어는 인증된 이미지만 로드되도록 Android 자체 검사 부팅 (AVB)의 모든 측면을 구현해야 합니다.
부팅 모드 바이너리는 일반 부팅, 복구 부팅, 빠른 부팅과 같은 다양한 부팅 모드를 처리할 수 있어야 합니다.
동적 파티션 나누기 부팅 펌웨어는 올바른 A/B 부팅 슬롯을 읽을 수 있고 슈퍼의 동적 파티션 및 사용자 데이터와 호환되도록 슬롯 선택 논리를 구현해야 합니다.
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 칩셋을 기반으로 하는 기기를 출시하는 경우 최신 Google 서명 버전의 GBL을 배포하고 이를 부팅 체인에 통합할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
GBL 빌드 및 실행
GBL을 빌드하고 실행하려면 다음을 실행하세요.
repo 도구와 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
Cuttlefish 내에서 EFI 앱을 실행합니다.
cvd start --android_efi_loader=path_to_the_EFI_app ...
Android를 직접 부팅하는 대신 이
cvd start
명령어는 EFI 앱을 사용하여 Android를 부팅합니다.
버그 신고 및 부트로더팀에 문의
GBL의 버그를 신고하려면 Buganizer의 Android 일반 부트로더 구성요소로 이동하세요.
궁금한 점이 있으면 GBL팀에 문의하거나 android-gbl@google.com
로 이메일을 보내세요.