יצירת מכשיר היברידי מסוג Cuttlefish

בדף הזה מוסבר איך ליצור מכשיר היברידי של Cuttlefish‏ (CHD).

מכשיר CHD הוא מכשיר Cuttlefish וירטואלי היברידי שמריץ תמונת מערכת של מכשיר פיזי במקום תמונת מערכת של Cuttlefish ב-HAL של המכשיר. היתרונות של הגישה הזו:

  • פיתוח ובדיקות מוקדמים: קובצי CHD מאפשרים פיתוח ובדיקות מוקדמים של תוכנת מערכת מהדור הבא לפני שהחומרה הפיזית זמינה.

  • יכולת הרחבה: CHDs מאפשרים להרחיב בקלות את יכולות הפיתוח והבדיקה.

יצירת תמונת CHD

כדי ליצור תמונת CHD, פועלים לפי השלבים הבאים:

  1. יוצרים את קובצי היעד לטירגוט הספק ולמכשיר הפיזי באמצעות make dist. יוצרים את קובצי הטירגוט של הספק באמצעות אחת מהאפשרויות הבאות:

  2. משלבים את שני קובצי היעד לקובץ יעד CHD ומריצים את הסקריפט build_cf_hybrid_device.py כדי ליצור את תמונות ה-CHD מקובץ היעד CHD. הסקריפט הזה משלב את שני קובצי היעד לקובץ יעד של CHD באמצעות merge_target_files.py, ויוצר את תמונות ה-CHD מקובץ היעד של ה-CHD באמצעות img_from_target_files.

    python3 tools/treble/cuttlefish/build_cf_hybrid_device.py \
      --framework_target_files_zip <physical_device_target_files.zip> \
      --vendor_target_files_zip <cuttlefish_device_target_files.zip> \
      --otatools_zip <cuttlefish_otatools.zip> \
      --target chd \
      --output_dir <output_directory>
    

יצירת יעד ספק ב-Cuttlefish

אפשר להשתמש ב-aosp_cf_vendor.mk כדי להגדיר את היעד aosp_cf_arm64_phone_vendor, שאפשר להשתמש בו כקובץ היעד של הספק לתמונת CHD.

כדי ליצור יעד של ספק בלבד ב-Cuttlefish, פועלים לפי השלבים הבאים:

  1. הורשה של יעד Cuttlefish שיוצר פריטי Artifact מלאים:

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. מגדירים את שם היעד:

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. משביתים בנייה מיותרת מתוך הארטיפקטים המלאים:

    PRODUCT_BUILD_SYSTEM_IMAGE := false
    PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false
    PRODUCT_BUILD_PRODUCT_IMAGE := false
    PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
    PRODUCT_BUILD_SUPER_PARTITION := false
    TARGET_SKIP_OTA_PACKAGE := true
    

בחירת סביבת אירוח להפעלת CHD

כדי להגדיר סביבת хост שניתן להרחיב אותה להפעלה ולניהול של קובצי CHD מבוססי ARM64, בוחרים הגדרה על סמך תהליך העבודה:

  • Google Cloud C4A bare metal (מומלץ): מכונות Google Cloud C4A bare metal, כמו c4a-standard-96-metal או c4a-highmem-96-metal, מספקות האצת חומרה מקורית של ARM64 KVM שמבוססת על מעבדי Google Axion. ההגדרה הזו מספקת ביצועים גבוהים וניתנת להרחבה בקלות עבור קובצי CHD של ARM64 בענן, ללא תקורה של וירטואליזציה מקוננת. בנוסף, OmniLab ATS Cloud Orchestration משתלב עם c4a-metal כדי לבצע אוטומציה של הקצאת מכשירים, תזמור בדיקות וניהול תשתית.

  • הגדרה ידנית של מארח או של מערכות מקומיות (אפשרות חלופית): אם אתם מריצים את Cuttlefish על חומרה מקומית או חומרה של מעבד ARM בהתאמה אישית, או אם אתם מגדירים ידנית סביבת מארח בלי OmniLab ATS, תוכלו לעיין במאמר בנושא הרצת Cuttlefish בשרת מקומי.