開發Android引導程式功能

本頁介紹如何在 Cuttlefish 裝置上建置、執行和開發Android 引導程式功能。

AOSP 來源

若要開發 Android 引導程式功能,請在aosp-main或 Android 11 或更高版本的通用系統映像 (GSI)分支上使用U-boot的 Cuttlefish 設定和 Cuttlefish。以下是AOSP中的來源:

開發引導程式

若要在本機建置、執行和開發引導程式功能,請按照以下步驟操作:

  1. 複製 U-boot 的 Android 分支的清單:

    $ 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. 建立適合您的 Cuttlefish 架構的引導程式目標。例如:

    • x86_64

      $ tools/bazel run //u-boot:crosvm_x86_64_dist
      
    • 架構64

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

    產生的引導程式二進位檔案(對於 arm64 為u-boot.bin ,對於 x86_64 為u-boot.rom )可在$PATH_TO_REPO/out/u-boot-mainline/dist中找到。

  3. 使用引導程式啟動 Cuttlefish 設備。包含pause_in_bootloader參數以停用自動引導並讓您與引導程式互動。

    $ launch_cvd \
        -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \
        -pause_in_bootloader -console=true
    
  4. 若要與引導程式交互,請連接到引導程式控制台。

    $ screen ~/cuttlefish_runtime/console
    
  5. 完成引導程式互動後,透過在控制台中輸入boot來繼續引導。

使用不同核心測試引導程式流程

若要使用不同的核心或核心模組測試引導程式流程,請使用--kernel_path--initramfs_path參數傳入目標工件(核心和核心模組)。彙編器根據參數中傳遞的工件重新打包啟動映像。

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

有關更多信息,請參閱開發 Android 核心