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

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

מקורות AOSP

כדי לפתח תכונות של תוכנת האתחול של Android, משתמשים בהגדרת Cuttlefish של U-boot עם Cuttlefish בענפי הגרסה האחרונה (android17-release) או בענפי קובץ אימג' גנרי של המערכת (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. יוצרים את יעד טוען האתחול שמתאים לארכיטקטורה של 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. הכלי 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.