Mengembangkan fitur bootloader Android

Halaman ini menjelaskan cara mem-build, menjalankan, dan mengembangkan fitur bootloader Android di perangkat Cuttlefish.

Sumber AOSP

Untuk mengembangkan fitur bootloader Android, gunakan konfigurasi Cuttlefish U-boot dengan Cuttlefish di aosp-main atau di cabang image sistem generik (GSI) untuk Android 11 atau yang lebih tinggi. Berikut adalah sumber di AOSP:

Mengembangkan bootloader

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

  1. Clone manifes untuk fork Android 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. 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) ditemukan di $PATH_TO_REPO/out/u-boot-mainline/dist.

  3. Luncurkan perangkat Cuttlefish dengan bootloader. Sertakan parameter pause_in_bootloader untuk menonaktifkan booting otomatis 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 dengan interaksi bootloader, lanjutkan booting dengan mengetik boot ke 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 memaketkan 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.