ویژگی های بوت لودر اندروید را توسعه دهید

این صفحه نحوه ساخت، اجرا و توسعه ویژگی‌های بوت لودر اندروید در دستگاه Cuttlefish را شرح می‌دهد.

منابع AOSP

برای توسعه ویژگی‌های بوت لودر اندروید، از پیکربندی Cuttlefish مربوط به U-boot با Cuttlefish در آخرین شاخه انتشار ( android16-qpr1-release ) یا روی شاخه‌های تصویر سیستم عمومی (GSI) برای اندروید ۱۱ یا بالاتر استفاده کنید. منابع زیر در AOSP هستند:

توسعه یک بوت لودر

برای ساخت، اجرا و توسعه ویژگی‌های بوت لودر به صورت محلی، این مراحل را دنبال کنید:

  1. مانیفست را برای نسخه اندروید 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. بوت لودر مورد نظر را متناسب با معماری Cuttlefish خود بسازید. برای مثال:

    • x86_64

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

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

    فایل باینری بوت‌لودر حاصل ( u-boot.bin برای arm64 و u-boot.rom برای x86_64) در مسیر $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 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

برای اطلاعات بیشتر، به بخش توسعه هسته‌های اندروید مراجعه کنید.