פיתוח תכונות של תוכנת האתחול של Android

בדף הזה נסביר איך ליצור, להריץ ולפתח תכונות של Android bootloader במכשיר Cuttlefish.

מקורות AOSP

כדי לפתח תכונות של Android bootloader, משתמשים בתצורה של Cuttlefish ב-U-boot עם Cuttlefish ב-aosp-main או בהסתעפויות של generic system image (GSI) ל-Android 11 ואילך. אלה המקורות ב-AOSP:

פיתוח תוכנת אתחול

כדי ליצור, להריץ ולפתח תכונות של מנהל האתחול באופן מקומי:

  1. משכפלים את המניפסט של מזלג ה-U-boot של Android:

    $ 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. יוצרים את יעד תוכנת האתחול שמתאים לארכיטקטורת הדיונון. לדוגמה:

    • 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. כדי לבצע פעולות ב-bootloader, צריך להתחבר למסוף של bootloader.

    $ screen ~/cuttlefish_runtime/console
  5. כשמסיימים את האינטראקציות עם bootloader, ממשיכים את האתחול על ידי הקלדה של boot במסוף.

בדיקת תהליך האתחול עם ליבות שונות

כדי לבדוק את תהליך האתחול עם ליבות או מודולים שונים של ליבה, מעבירים את הארטיפקטים של היעד (ליבה ומודולים של ליבה) באמצעות הארגומנטים --kernel_path ו---initramfs_path. ה-Assembler מארז מחדש את קובצי האימג' להפעלה על סמך הפריטים שנשלחו בארגומנטים.

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.