בדף הזה נסביר איך ליצור, להריץ ולפתח תכונות של Android bootloader במכשיר Cuttlefish.
מקורות AOSP
כדי לפתח תכונות של Android bootloader, משתמשים בתצורה של Cuttlefish ב-U-boot עם Cuttlefish ב-aosp-main
או בהסתעפויות של generic system image (GSI) ל-Android 11 ואילך. אלה המקורות ב-AOSP:
פיתוח תוכנת אתחול
כדי ליצור, להריץ ולפתח תכונות של מנהל האתחול באופן מקומי:
משכפלים את המניפסט של מזלג ה-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
יוצרים את יעד תוכנת האתחול שמתאים לארכיטקטורת הדיונון. לדוגמה:
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
כשמסיימים את האינטראקציות עם 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.