Mengembangkan fitur bootloader Android

Halaman ini menjelaskan cara membuat, menjalankan, dan mengembangkan fitur bootloader Android di perangkat Cuttlefish.

Sumber AOSP

Untuk mengembangkan fitur bootloader Android, gunakan konfigurasi Cuttlefish U-boot dengan Cuttlefish di cabang rilis terbaru (android16-release) atau di cabang generic system image (GSI) untuk Android 11 atau yang lebih tinggi. Berikut adalah sumber di AOSP:

Mengembangkan bootloader

Untuk membuat, menjalankan, dan mengembangkan fitur bootloader secara lokal, ikuti langkah-langkah berikut:

  1. Clone manifes untuk fork 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. Bangun target bootloader yang sesuai untuk arsitektur Cuttlefish Anda. Contoh:

    • x86_64

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

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

    Biner bootloader yang dihasilkan (u-boot.bin untuk arm64 dan u-boot.rom untuk x86_64) dapat ditemukan di $PATH_TO_REPO/out/u-boot-mainline/dist.

  3. Luncurkan perangkat Cuttlefish dengan bootloader. Sertakan parameter pause_in_bootloader untuk menonaktifkan autoboot dan memungkinkan Anda berinteraksi dengan bootloader.

    $ launch_cvd \
        -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \
        -pause_in_bootloader -console=true
  4. Untuk berinteraksi dengan bootloader, hubungkan ke konsol bootloader.

    $ screen ~/cuttlefish_runtime/console
  5. Setelah selesai berinteraksi dengan bootloader, lanjutkan booting dengan mengetik boot ke dalam konsol.

Menguji alur bootloader dengan kernel yang berbeda

Untuk menguji alur bootloader dengan kernel atau modul kernel yang berbeda, teruskan artefak target (kernel dan modul kernel) menggunakan argumen --kernel_path dan --initramfs_path. Assembler mengemas ulang image booting berdasarkan artefak yang diteruskan dalam argumen.

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

Untuk mengetahui informasi selengkapnya, lihat Mengembangkan Kernel Android.