Phát triển các tính năng bootloader của Android

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

Nguồn AOSP

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

Phát triển bộ nạp khởi động

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

  1. Sao chép bảng 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. Xây dựng mục tiêu bootloader phù hợp với kiến ​​trúc Mực nang của bạn. Ví dụ:

    • x86_64

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

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

    Tệp nhị phân bootloader kết quả ( u-boot.bin cho arm64 và u-boot.rom cho x86_64) được tìm thấy trong $PATH_TO_REPO/out/u-boot-mainline/dist .

  3. Khởi chạy thiết bị Mực nang bằng bộ nạp khởi động. Bao gồm tham số pause_in_bootloader để tắt tính năng tự động khởi động và cho phép bạn tương tác với bộ nạp 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 bootloader, hãy kết nối với bảng điều khiển bootloader.

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

Kiểm tra luồng bootloader với các kernel khác nhau

Để kiểm tra luồng bộ nạp khởi động với các hạt nhân hoặc mô-đun hạt nhân khác nhau, hãy chuyển vào các tạo phẩm đích (nhân và mô-đun hạt nhân) bằng cách sử dụng các đối số --kernel_path--initramfs_path . Trình biên dịch mã đóng gói lại các ảnh khởi động dựa trên các tạo phẩm được truyền trong các đối số.

cvd start \
    -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 Phát triển hạt nhân Android .