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 sụn 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. Firmware 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 phải triển khai mọi khía cạnh của quy trình Khởi động đã xác minh (AVB) của Android, đảm bảo chỉ tải các hình ảnh đã 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 ở chế độ khôi phục và khởi động nhanh.

  • Phân vùng động. Firmware khởi động phải triển khai logic chọn khe cắm để hỗ trợ việc đọc khe cắm khởi động A/B chính xác và tương thích với các phân vùng động và dữ liệu người dùng trong siêu dữ liệu.

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

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

  • Quản lý bộ nhớ. Chương trình 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. Firmware phải hoạt động trên các thiết bị có nhà cung cấp, SoC khác nhau 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 những điểm sửa đổi cần thiết để hỗ trợ các yêu cầu trong phần trước, các hoạt động triển khai phần sụn UEFI sau đây sẽ hoạt động với GBF:

  • EDK2 (Tianocore). EDK2 là một cách triển khai UEFI mã nguồn mở phổ biến. Cần có sự hỗ trợ của GBL cho trình tải khởi động dựa trên EDK2 và sự hỗ trợ của 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 có khả năng tương thích với UEFI để sử dụng GBL.
  • LittleKernel (LK). Một trình tải khởi động nguồn mở được một số nhà cung cấp sử dụng.

Chạy GBL

Bạn có thể lấy một tệp nhị phân GBL dựng sẵn để chạy hoặc tự tạo và chạy tệp nhị phân đó.

Lấy 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ơ bản của thiết bị bằng cơ chế cập nhật tiêu chuẩn của Android.

Kể từ Android 16, nếu phát hành một 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 này 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à Bazel bootstrap:

    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 Android trực tiếp, 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 phụ trách 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.