עדכוני מערכת A/B

ב-SDV משתמשים בגישה הרגילה של Android לעדכוני מערכת A/B (ללא הפרעה). המסמכים של AOSP רלוונטיים בעיקר ל-SDV. בדף הזה מפורט השימוש הספציפי ל-SDV ונתיבים תקינים ידועים ליצירה ולהחלה של חבילות עדכון.

ה-SDV מוגדר להשתמש בעדכוני A/B לא וירטואליים. כדי להגדיר ולהפעיל עדכוני A/B למחיצה /oem_ab מותאמת אישית מחבילת שירות, קראו את המאמר עדכוני מחיצות AB של OEM.

הטמעת ה-HAL של בקרת ההפעלה

תמונת ה-SDV Core ל-Cuttlefish (sdv_core_cf) מספקת הטמעה סטנדרטית של בקרת האתחול ב-HAL שמבוססת על hardware/interfaces/boot/aidl/default/‎. מנהלי אתחול אחרים צריכים להטמיע את ה-HAL כדי לתמוך בעדכוני A/B.

פרטים נוספים זמינים בקטע הטמעת HAL לבקרת הפעלה במסמכי התיעוד של AOSP. כדי לבדוק את ההטמעה, אתם יכולים להשתמש ב-bootctl שכלול בקובצי אימג' של SDV לניפוי באגים (eng ו-userdebug).

יצירת חבילת OTA

מידע נוסף זמין במאמר יצירת חבילות OTA. ההוראות בדף הזה מבוססות על המסמכים של AOSP, עם שינויים קלים.

עדכון מלא

מהשורש של המאגר:

source build/envsetup.sh && lunch sdv_core_cf-aosp_current-userdebug
mkdir dist_output
m dist DIST_DIR=dist_output

הפקודות האלה יוצרות קובצי יעד בספרייה dist_output. בגרסאות build מקומיות של sdv_core_cf, בדרך כלל זה sdv_core_cf-target_files-$USER.zip.

כדי ליצור חבילת OTA, צריך להשתמש ב-ota_from_target_files. בניגוד ל-AOSP, החבילה לא נוצרת כחלק מ-m dist.

m ota_from_target_files
ota_from_target_files \
  dist_output/sdv_core_cf-target_files-$USER.zip \
  ota_update.zip

עדכון מצטבר

אותה קריאה ל-ota_from_target_files כמו ב-AOSP:

ota_from_target_files \
  -i PREVIOUS-sdv_core_cf-target_files.zip \
  dist_new/sdv_core_cf-target_files-$USER.zip \
  incremental_ota_update.zip

התקנת חבילת OTA

העדכונים מותקנים באמצעות השירות update_engine. גרסאות build של SDV לניפוי באגים כוללות את update_engine_client, שמאפשר לנפות באגים ולבדוק את תהליך העדכון.

כדי להתקין חבילת OTA, מריצים את הפקודה:

system/update_engine/scripts/update_device.py ota_update.zip

אם העדכון הותקן כמו שצריך (הסטטוס הסופי הוא UPDATE_STATUS_UPDATED_NEED_REBOOT והתוצאה היא ErrorCode::kSuccess), העדכון יופעל בהפעלה הבאה מחדש.

ניהול גרסאות

כדי לעדכן את המערכת, SDV משתמש במטא-נתונים של חבילת OTA של Android כדי לקבוע אם חבילת OTA עומדת בדרישות ואפשר להתקין אותה.

גם ב-APEX, ‏SDV פועל לפי העקרונות של Android בנוגע ליכולת העדכון. לכן, אפשר לעדכן APEX אם הוא לא APEX bootstrap. ‫Bootstrap צריך לעדכן את APEX באמצעות עדכוני מערכת, וגם:

  • הגרסה המוצהרת גבוהה יותר מהגרסה שהותקנה מראש, ושתיהן גדולות מ-1 או שוות לו.

או,

  • הגרסה המוצהרת היא APEX שלא הותקן מראש, והגרסה גבוהה יותר מהגרסה ברשימת הישויות שנחסמו, אם היא מופיעה ברשימה.

בדרך כלל, SDV נפרס בכמה מערכות ברשת. לכן, אתם צריכים לוודא שהעדכונים שבוצעו במערכת אחת מבוצעים בצורה נכונה. עם זאת, זה לא מבטיח שכל המערכות יוכלו לתקשר כמו שצריך.

חשוב גם לעדכן את הרשת כולה, ולשם כך צריך לפרוס את העדכונים של חבילות השירות בכל המכונות בו-זמנית, או לוודא שהעדכונים לא מכילים שינוי תוכנה שעלול לגרום לכשל. לדוגמה, שינויים בממשק שלא תואמים לגרסאות קודמות.

למרות ש-SDV לא מספק כלים לזיהוי שינויים לא תואמים, ההנחיות שלנו מתארות איך להתאים שינויים שבוצעו בממשקים, וגם את השיטות המומלצות לפריסת השינויים.

בנוסף, SDV תומך במנגנוני חזרה לגרסה קודמת של עדכוני מערכת ו-APEX. אם המערכת נכנסת בטעות למצב לא תקין, אנחנו יכולים לשחזר את המצב התקין האחרון שידוע לנו.