כדי להטמיע את העדכונים אלחוטיים (OTA), תוכנת האתחול צריכה להיות מסוגלת לגשת לדיסק RAM של שחזור במהלך האתחול. אם המכשיר משתמש בקובץ אימג' לשחזור מערכת ההפעלה של AOSP שלא שונתה, תוכנת האתחול קוראת את 32 הבייטים הראשונים במחיצה misc. אם הנתונים שם תואמים ל-boot-recovery, תוכנת האתחול מבצעת אתחול לקובץ אימג' recovery. השיטה הזו מאפשרת להמשיך את כל פעולות השחזור שממתינות (לדוגמה, החלת עדכון OTA או הסרת נתונים) עד לסיום.
פרטים על התוכן של בלוק בזיכרון הפלאש שמשמש לתקשורת על ידי שחזור ותוכנת אתחול זמינים במאמר bootable/recovery/bootloader_message/bootloader_message.h.
מכשירים עם עדכוני A/B
כדי לתמוך בעדכוני OTA במכשירים שמשתמשים בעדכוני A/B, צריך לוודא שתוכנת האתחול של המכשיר עומדת בקריטריונים הבאים.
קריטריונים כלליים
אפשר לעדכן את כל המחיצות באמצעות OTA בזמן שהמערכת הראשית מופעלת (ולא מתעדכנת בשחזור).
כדי לאתחל את המחיצה
system, תוכנת האתחול מעבירה את הערך הבא בשורת הפקודה של ליבת המערכת:ro root=/dev/[node] rootwait init=/init.באחריות של מסגרת Android לקרוא ל-
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או באמצעות הפקודהfastboot set_active. כשמשנים מחיצה שהיא חלק מחריץ, תוכנת האתחול מוחקת את הערך 'האתחול בוצע בהצלחה' ומאפסת את מספר הניסיונות החוזרים של החריץ.
תוכנת האתחול צריכה גם לקבוע איזה משבצת לטעון. באיור מוצגת דוגמה לתהליך קבלת החלטות.
קובעים באיזה משבצת זמן לנסות. אל תנסו לטעון משבצת שסומנה כ-
slot-unbootable. המשבצת הזו צריכה להיות עקבית עם הערכים שמוחזרים על ידי fastboot, והיא נקראת המשבצת הנוכחית.אם המשבצת הנוכחית לא מסומנת כ-
slot-successfulויש להslot-retry-count = 0, מסמנים את המשבצת הנוכחית כ-slot-unbootable. אחר כך בוחרים יחידת קיבולת אחרת שלא מסומנת בסימןunbootableומסומנת בסימןslot-successful. יחידת הקיבולת הזו היא עכשיו יחידת הקיבולת שנבחרה. אם אין משבצת זמינה, המכשיר יופעל במצב שחזור או תוצג הודעת שגיאה משמעותית למשתמש.בוחרים את
boot.imgהמתאים וכוללים את הנתיב למחיצת המערכת הנכונה בשורת הפקודה של ליבת המערכת.מאכלסים את הפרמטר
slot_suffixשל שורת הפקודה של ליבת המערכת.מגף. אם לא מסומן
slot-successful, מפחיתים את הערך שלslot-retry-count.
כלי השירות fastboot קובע איזו מחיצה להפעיל כשמריצים פקודות הפעלה. לדוגמה, כשמריצים את הפקודה fastboot flash system system.img, המערכת קודם שולפת את הערך של המשתנה current-slot ואז משרשרת את התוצאה למערכת כדי ליצור את השם של המחיצה שצריך להעביר (system_a, system_b וכו').
כשמגדירים את המשבצת הנוכחית באמצעות הפקודה fastboot set_active או הפקודה setActiveBootSlot של boot control HAL, טוען האתחול צריך לעדכן את המשבצת הנוכחית, לנקות את slot-unbootable ואת slot-successful ולאפס את מספר הניסיונות (זו הדרך היחידה לנקות את slot-unbootable).
מכשירים ללא עדכוני A/B
כדי לתמוך בעדכוני OTA במכשירים שלא משתמשים בעדכוני A/B (ראו מכשירים שאפשר לעדכן אבל לא מסוג A/B), צריך לוודא שתוכנת האתחול של המכשיר עומדת בקריטריונים הבאים.
המחיצה
recoveryצריכה להכיל קובץ אימג' שיכול לקרוא קובץ אימג' של המערכת ממחיצה נתמכת כלשהי (cache,userdata) ולכתוב אותו במחיצהsystem.תוכנת האתחול צריכה לתמוך באתחול ישירות למצב שחזור.
אם יש תמיכה בעדכונים של תמונות רדיו, מחיצת
recoveryצריכה גם להיות מסוגלת להפעיל את הרדיו. אפשר לעשות זאת באחת משתי דרכים:תוכנת האתחול מהבהבת ברדיו. במקרה כזה, אמורה להיות אפשרות לאתחל מחדש ממחיצת השחזור בחזרה לתוכנת האתחול כדי להשלים את העדכון.
קובץ אימג' לשחזור מערכת ההפעלה יעדכן את הרדיו. הפונקציונליות הזו יכולה להיות מסופקת כספרייה או ככלי בינארי.