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

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

מקורות AOSP

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

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

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

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

מידע נוסף זמין במאמר בנושא פיתוח ליבות של Android.