Triển khai GBL

Trang này giải thích cách triển khai tệp nhị phân GBL.

Yêu cầu về chương trình cơ sở khởi động

Để sử dụng GBL, phần mềm khởi động phải đáp ứng các yêu cầu sau:

  • Tuân thủ UEFI. Chương trình cơ sở phải triển khai và sử dụng các giao thức UEFI bắt buộc. Bộ nhớ đệm cũng phải cho phép các tiện ích dành riêng cho nhà cung cấp bằng cách sử dụng các giao thức UEFI đã xác định.

  • Bảo mật. Phần mềm cơ sở phải triển khai tất cả khía cạnh của tính năng Khởi động được xác minh của Android (AVB), đảm bảo chỉ tải hình ảnh đã được xác thực.

  • Chế độ khởi động. Tệp nhị phân phải có khả năng xử lý nhiều chế độ khởi động, chẳng hạn như khởi động bình thường, khởi động khôi phục và khởi động nhanh.

  • Phân vùng động. Phần mềm khởi động phải triển khai logic lựa chọn khe để hỗ trợ đọc đúng khe khởi động A/B và tương thích với các phân vùng động và userdata trong super.

  • Cấu hình hệ điều hành. Phần mềm cơ sở phải có khả năng sửa đổi dòng lệnh hạt nhân, cây thiết bị (DTB) và bootconfig bằng các tuỳ chỉnh của OEM cần thiết để khởi động thiết bị.

  • Đang tải máy ảo được bảo vệ. Tệp nhị phân phải tải đúng cách phần mềm cơ sở của máy ảo được bảo vệ đã xác minh trước trước khi tải hạt nhân Android khi có máy ảo được bảo vệ. Để biết thêm thông tin, hãy xem trình tự khởi động của Microdroid.

  • Quản lý bộ nhớ. Phần mềm cơ sở khởi động phải hỗ trợ API phân bổ bộ nhớ UEFI.

  • Khả năng tương thích và khả năng tương thích ngược. Phần mềm cơ sở phải hoạt động trên các thiết bị của nhiều nhà cung cấp, SOC và duy trì khả năng tương thích ngược với phiên bản Android tương ứng.

Hỗ trợ chương trình cơ sở khởi động

Với các sửa đổi cần thiết để hỗ trợ các yêu cầu trong phần trước, các cách triển khai phần mềm UEFI sau đây sẽ hoạt động với GBF:

  • EDK2 (Tianocore). EDK2 là một phương thức triển khai UEFI nguồn mở phổ biến. Cần có tính năng hỗ trợ GBL cho trình tải khởi động dựa trên EDK2 và tính năng hỗ trợ UEFI đã có sẵn.
  • U-Boot. Một dự án trình tải khởi động nguồn mở linh hoạt và được sử dụng rộng rãi, đang đạt được khả năng tương thích UEFI để sử dụng GBL.
  • LittleKernel (LK). Trình tải khởi động nguồn mở mà một số nhà cung cấp sử dụng.

Chạy GBL

Bạn có thể lấy tệp nhị phân GBL tạo sẵn để chạy hoặc tạo tệp nhị phân của riêng mình và chạy tệp đó.

Tải và chạy tệp nhị phân GBL

GBL được phân phối dưới dạng một tệp nhị phân ứng dụng EFI duy nhất. Bạn có thể cập nhật tệp nhị phân này độc lập với chương trình cơ sở của thiết bị bằng cách sử dụng cơ chế cập nhật tiêu chuẩn của Android.

Kể từ Android 16, nếu vận chuyển thiết bị dựa trên chipset ARM-64, bạn nên triển khai phiên bản mới nhất do Google ký của GBL và tích hợp phiên bản đó vào chuỗi khởi động.

Tạo và chạy GBL

Cách tạo và chạy GBL:

  1. Xác minh rằng bạn đã cài đặt công cụ repo và trình khởi động Bazel:

    sudo apt install repo bazel-bootstrap
    
  2. Khởi động thư mục hiện tại để kiểm soát nguồn bằng tệp kê khai uefi-gbl-mainline:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. Tạo ứng dụng EFI:

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. Chạy ứng dụng EFI trong Cuttlefish:

    cvd start --android_efi_loader=path_to_the_EFI_app ...
    

    Thay vì khởi động trực tiếp Android, lệnh cvd start này sử dụng ứng dụng EFI để khởi động Android.

Báo cáo lỗi và liên hệ với nhóm trình tải khởi động

Để báo cáo lỗi cho GBL, hãy chuyển đến thành phần Trình tải khởi động chung của Android trong Buganizer.

Nếu bạn có thắc mắc, hãy liên hệ với nhóm GBL bằng cách gửi email đến android-gbl@google.com.