תמיכה בעדכוני OTA

כדי לתמוך בעדכוני האויר-האוויר (OTA) , על טוען האתחול להיות מסוגל לגשת לדיסק RAM לשחזור במהלך האתחול. אם ההתקן משתמש בתמונת שחזור AOSP ללא שינוי, טוען האתחול קורא את 32 הבתים הראשונים במחיצת misc ; אם הנתונים שם מתאימים ל- boot-recovery , טוען האתחול מאתחל בתמונת recovery . שיטה זו מאפשרת לכל עבודת שחזור ממתינה (לדוגמה, החלת OTA או הסרת נתונים) להמשיך ולהשלים.

לפרטים על התוכן של בלוק ב-Flash המשמש לתקשורת על ידי שחזור ומטען האתחול, עיין ב- bootable/recovery/bootloader_message/bootloader_message.h .

מכשירים עם עדכוני A/B

כדי לתמוך בעדכוני OTA במכשירים המשתמשים בעדכוני A/B , ודא שמטען האתחול של המכשיר עומד בקריטריונים הבאים.

קריטריונים כלליים

  • כל המחיצות המעודכנות באמצעות OTA צריכות להיות ניתנות לעדכון בזמן שהמערכת הראשית מופעלת (ולא מעודכנת בשחזור).

  • כדי לאתחל את מחיצת system , טוען האתחול מעביר את הערך הבא בשורת הפקודה של הליבה: ro root=/dev/[node] rootwait init=/init .

  • באחריות מסגרת אנדרואיד לקרוא ל- markBootSuccessful מה-HAL. מטעין האתחול לעולם לא אמור לסמן מחיצה כאותחול בהצלחה.

תמיכה בבקרת אתחול HAL

טוען האתחול חייב לתמוך ב- boot_control HAL כפי שמוגדר ב- hardware/libhardware/include/hardware/boot_control.h ). המעדכן שואל את בקרת האתחול HAL , מעדכן את חריץ האתחול שאינו בשימוש כעת, משנה את החריץ הפעיל באמצעות ה-HAL, ומפעיל מחדש את מערכת ההפעלה המעודכנת. לפרטים, ראה יישום בקרת האתחול HAL .

תמיכה בחריצים

טוען האתחול חייב לתמוך בפונקציונליות הקשורה למחיצות ולחריצים, כולל:

  • שמות המחיצות חייבים לכלול סיומת המזהה אילו מחיצות שייכות למשבצת מסוימת במטען האתחול. עבור כל מחיצה כזו, יש משתנה תואם has-slot: partition base name עם הערך של yes . משבצות נקראות בסדר אלפביתי בתור a, b, c וכו' המתאימות למחיצות עם הסיומת _a , _b , _c וכו'. טוען האתחול צריך ליידע את מערכת ההפעלה איזה משבצת אותחל באמצעות מאפיין שורת הפקודה androidboot.slot_suffix . מאפיין זה מוגדר באמצעות bootconfig עבור מכשירים המופעלים עם Android 12 ואילך.

  • ערך ה- slot-retry-count מאופס לערך חיובי (בדרך כלל 3 ), או על ידי בקרת האתחול HAL דרך setActiveBootSlot callback או דרך הפקודה fastboot set_active . בעת שינוי מחיצה שהיא חלק ממשבץ, טוען האתחול מנקה את "אתחול בהצלחה" ומאפס את ספירת הניסיונות החוזרים עבור המשבצת.

טוען האתחול אמור גם לקבוע איזה חריץ לטעון. האיור מציג דוגמה לתהליך החלטה.

זרימת חריץ של טוען האתחול
איור 1. זרימת חריצים של טוען האתחול
  1. קבע איזה משבצת לנסות. אל תנסה לטעון חריץ המסומן slot-unbootable . משבצת זו צריכה להיות עקבית עם הערכים המוחזרים על ידי fastboot, והיא מכונה המשבצת הנוכחית.

  2. אם המשבצת הנוכחית אינה מסומנת slot-successful ויש לה slot-retry-count = 0 , סמן את המשבצת הנוכחית כמשבצת slot-unbootable . לאחר מכן בחר חריץ אחר שאינו מסומן unbootable ומסומן slot-successful ; משבצת זו היא כעת המשבצת שנבחרה. אם אין חריץ נוכחי זמין, אתחל לשחזור או הצג הודעת שגיאה משמעותית למשתמש.

  3. בחר את boot.img המתאים וכלול את הנתיב למחיצת המערכת הנכונה בשורת הפקודה של הליבה.

  4. אכלס את הפרמטר של שורת הפקודה הליבה slot_suffix .

  5. מַגָף. אם לא מסומן slot-successful , הקטנת משבצת- slot-retry-count .

כלי השירות fastboot קובע איזו מחיצה להבהב בעת הפעלת פקודות הבזק כלשהן. לדוגמה, הפעלת הפקודה fastboot flash system system.img מבצעת שאילתות תחילה על משתנה ה- current-slot ולאחר מכן משרשרת את התוצאה למערכת כדי ליצור את שם המחיצה שאמורה להיות מהבהב ( system_a , system_b , וכו').

כאשר מגדירים את המשבצת הנוכחית באמצעות הפקודה fastboot set_active או הפקודה HAL setActiveBootSlot בקרת האתחול, על טוען האתחול לעדכן את המשבצת הנוכחית, לנקות slot-unbootable slot-successful , ולאפס את ספירת הניסיון החוזר (זו הדרך היחידה לנקות slot-unbootable ).

מכשירים ללא עדכוני A/B

כדי לתמוך בעדכוני OTA במכשירים שאינם משתמשים בעדכוני A/B (ראה התקנים שאינם ניתנים לעדכון A/B ), ודא שמטען האתחול של המכשיר עומד בקריטריונים הבאים.

  • מחיצת recovery צריכה להכיל תמונה שמסוגלת לקרוא תמונת מערכת ממחיצה נתמכת כלשהי ( cache , userdata ) ולכתוב אותה למחיצת system .

  • טוען האתחול אמור לתמוך באתחול מחדש ישירות למצב שחזור.

  • אם עדכוני תמונת רדיו נתמכים, מחיצת recovery אמורה להיות מסוגלת גם להבהב את הרדיו. ניתן להשיג זאת באחת משתי דרכים:

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

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