בדף הזה נסביר איך ליצור, להריץ ולפתח תכונות של Android bootloader במכשיר Cuttlefish.
מקורות AOSP
כדי לפתח תכונות של מנהל האתחול של Android, משתמשים בהגדרות של Cuttlefish ל-U-boot עם Cuttlefish בהסתעפות הגרסה האחרונה (android16-release
) או בהסתעפויות של תמונת מערכת גנרית (GSI) ל-Android מגרסה 11 ואילך. אלה המקורות ב-AOSP:
פיתוח של תוכנת אתחול
כדי ליצור, להריץ ולפתח תכונות של מנהל האתחול באופן מקומי:
משכפלים את המניפסט של ההסתעפות של 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
יוצרים את היעד של מנהל האתחול שמתאים לארכיטקטורה של 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
.מפעילים את מכשיר 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
כדי לבצע פעולות ב-bootloader, צריך להתחבר למסוף של bootloader.
$ screen ~/cuttlefish_runtime/console
בסיום האינטראקציות עם מנהל האתחול, ממשיכים את האתחול על ידי הקלדה של
boot
במסוף.
בדיקת תהליך האתחול עם ליבות שונות
כדי לבדוק את תהליך האתחול עם ליבות או מודולים של ליבות שונים, מעבירים את הארטיפקטים של היעד (הליבה והמודולים של הליבה) באמצעות הארגומנטים --kernel_path
ו---initramfs_path
. ה-Assembler מארז מחדש את קובצי האימג' להפעלה על סמך הפריטים שנוצרו בתהליך הפיתוח (artifacts) שהועברו בארגומנטים.
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
למידע נוסף, ראו פיתוח ליבות Android.