این صفحه نحوه ساخت، اجرا و توسعه ویژگیهای بوت لودر اندروید در دستگاه Cuttlefish را شرح میدهد.
منابع AOSP
برای توسعه ویژگیهای بوت لودر اندروید، از پیکربندی Cuttlefish مربوط به U-boot با Cuttlefish در آخرین شاخه انتشار ( android16-qpr1-release ) یا روی شاخههای تصویر سیستم عمومی (GSI) برای اندروید ۱۱ یا بالاتر استفاده کنید. منابع زیر در AOSP هستند:
توسعه یک بوت لودر
برای ساخت، اجرا و توسعه ویژگیهای بوت لودر به صورت محلی، این مراحل را دنبال کنید:
مانیفست را برای نسخه اندروید 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بوت لودر مورد نظر را متناسب با معماری Cuttlefish خود بسازید. برای مثال:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_distaarch64
$ 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یافت میشود.دستگاه 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برای تعامل با بوت لودر، به کنسول بوت لودر متصل شوید.
$ screen ~/cuttlefish_runtime/consoleوقتی کار با بوت لودر تمام شد، با تایپ کردن
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برای اطلاعات بیشتر، به بخش توسعه هستههای اندروید مراجعه کنید.