開發 Android 系統啟動載入程式功能

本頁面說明如何在 Cuttlefish 裝置上建構、執行及開發 Android 系統啟動載入程式功能。

Android 開放原始碼計畫來源

如要開發 Android 系統啟動載入程式功能,請在 aosp-main 或 Android 11 以上版本的通用系統映像檔 (GSI) 分支版本上使用 U-boot 的 Cuttlefish 設定。以下是 Android 開放原始碼計畫的來源:

開發系統啟動載入程式

如要在本機建構、執行及開發系統啟動載入程式功能,請按照下列步驟操作:

  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
    • aarch64

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

    您可以在 $PATH_TO_REPO/out/u-boot-mainline/dist 中找到產生的系統啟動載入程式二進位檔 (arm64 的 u-boot.bin 和 x86_64 的 u-boot.rom)。

  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 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

詳情請參閱「開發 Android 核心」。