בדף הזה מוסבר איך לבנות, להריץ ולפתח תכונות של טוען אתחול של Android במכשיר Cuttlefish.
מקורות AOSP
כדי לפתח תכונות של תוכנת האתחול של Android, משתמשים בהגדרת Cuttlefish של U-boot עם Cuttlefish בענפי הגרסה האחרונה (android17-release) או בענפי קובץ אימג' גנרי של המערכת (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יוצרים את יעד טוען האתחול שמתאים לארכיטקטורה של Cuttlefish. לדוגמה:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_distaarch64
$ 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כדי לבצע פעולות בתוכנת האתחול, מתחברים למסוף של תוכנת האתחול.
$ screen ~/cuttlefish_runtime/consoleכשמסיימים את האינטראקציות עם טוען האתחול, ממשיכים באתחול על ידי הקלדת
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.