Phát triển các tính năng của trình tải khởi động Android

Trang này mô tả cách tạo, chạy và phát triển các tính năng của trình tải khởi động Android trên thiết bị Cuttlefish.

Nguồn AOSP

Để phát triển các tính năng của trình tải khởi động Android, hãy sử dụng cấu hình Cuttlefish của U-boot với Cuttlefish trong nhánh phát hành mới nhất (android16-release) hoặc trên các nhánh hình ảnh hệ thống chung (GSI) cho Android 11 trở lên. Sau đây là các nguồn trong AOSP:

Phát triển trình tải khởi động

Để tạo, chạy và phát triển các tính năng của trình tải khởi động cục bộ, hãy làm theo các bước sau:

  1. Sao chép tệp kê khai cho nhánh Android của U-boot:

    $ mkdir u-boot-mainline
    $ cd u-boot-mainline
    $ repo init -u https://android.googlesource.com/kernel/manifest -b u-boot-mainline
    $ repo sync -j$(nproc) -q
  2. Tạo mục tiêu trình tải khởi động phù hợp với cấu trúc Cuttlefish. Ví dụ:

    • x86_64

      $ tools/bazel run //u-boot:crosvm_x86_64_dist
    • aarch64

      $ tools/bazel run //u-boot:crosvm_aarch64_dist

    Bạn có thể tìm thấy tệp nhị phân trình tải khởi động thu được (u-boot.bin cho arm64 và u-boot.rom cho x86_64) trong $PATH_TO_REPO/out/u-boot-mainline/dist.

  3. Khởi chạy thiết bị Cuttlefish bằng trình tải khởi động. Thêm tham số pause_in_bootloader để tắt tính năng khởi động tự động và cho phép bạn tương tác với trình tải khởi động.

    $ launch_cvd \
        -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \
        -pause_in_bootloader -console=true
  4. Để tương tác với trình tải khởi động, hãy kết nối với bảng điều khiển trình tải khởi động.

    $ screen ~/cuttlefish_runtime/console
  5. Khi hoàn tất các hoạt động tương tác với trình tải khởi động, hãy tiếp tục khởi động bằng cách nhập boot vào bảng điều khiển.

Kiểm thử quy trình trình tải khởi động bằng nhiều nhân

Để kiểm thử quy trình trình tải khởi động bằng các nhân hoặc mô-đun nhân khác nhau, hãy truyền vào các cấu phần phần mềm mục tiêu (nhân và mô-đun nhân) bằng cách sử dụng các đối số --kernel_path--initramfs_path. Trình hợp ngữ đóng gói lại hình ảnh khởi động dựa trên các cấu phần phần mềm được truyền trong các đối số.

cvd create \
    -kernel_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/bzImage \
    -initramfs_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/initramfs.img

Để biết thêm thông tin, hãy xem bài viết Phát triển nhân Android.