Mengembangkan fitur bootloader Android

Halaman ini menjelaskan cara membangun, menjalankan, dan mengembangkan fitur bootloader Android pada perangkat Cuttlefish.

Sumber AOSP

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

Kembangkan bootloader

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

  1. Kloning 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 dengan arsitektur Sotong Anda. Misalnya:

    • 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 Sotong 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, sambungkan ke konsol bootloader.

    $ screen ~/cuttlefish_runtime/console
    
  5. Setelah selesai dengan interaksi bootloader, lanjutkan boot dengan mengetikkan boot ke konsol.

Uji aliran bootloader dengan kernel yang berbeda

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

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

Untuk informasi selengkapnya, lihat Mengembangkan Kernel Android .