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

הדף הזה מתאר איך ליצור, להפעיל ולפתח תכונות של תוכנת האתחול של Android במכשיר דיונון.

מקורות AOSP

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

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

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

  1. משכפלים את המניפסט של ההסתעפות של 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. יוצרים את היעד של מנהל האתחול שמתאים לארכיטקטורה של 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) או מודולי ליבה שונים, מעבירים את הארטיפקטים ביעד (מודולים של ליבה וליבה) באמצעות --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.