במכשירים שאינם A/B, קובץ האימג' לשחזור צריך להכיל מידע מ-device tree blob (DTB) או מתמונת שכבת-על של Advanced Configuration and Power Interface (ACPI). כשמכשירים כאלה מתחילים לפעול במצב שחזור, מנהל האתחול יכול לטעון את תמונת השכבה העליונה שתואמת לתמונת השחזור. במכשירים שתומכים בעדכוני A/B (חלקים), צריך להשתמש בתהליך השחזור כמצב הפעלה במקום במחיצה נפרדת לשחזור (פרטים נוספים זמינים במאמר הטמעת עדכוני A/B).
האפשרויות להכללה של DTBO/ACPIO לשחזור כחלק מהאתחול/השחזור התמונה משתנה בין גרסאות Android.
פריט תוכן | עדכון סכימה | תאימות ל-GKI | גרסת הכותרת של האתחול (מכשירים להשקה) | גרסת הכותרת של האתחול (שדרוג מכשירים) | נדרשת קובץ אימג' ייעודי לשחזור |
---|---|---|---|---|---|
11 | A/B, Virtual A/B |
כן | 3* | לא רלוונטי | לא |
A/B, A/B וירטואלי |
לא | 2, 3 | 0, 1, 2, 3 | לא | |
שאינו A/B | כן | 3 | לא רלוונטי | כן | |
ללא בדיקת A/B | לא | 2, 3 | 0, 1, 2, 3 | כן | |
10 (Q) | A/B | לא רלוונטי | 2 | 0, 1, 2 | לא |
שאינו A/B | לא רלוונטי | 2 | 0, 1, 2 | כן | |
9 (P) | בדיקת A/B | לא רלוונטי | 1 | 0, 1 | לא |
שאינו A/B | לא רלוונטי | 1 | 0, 1 | כן | |
8 (O) | בדיקת A/B | לא רלוונטי | לא רלוונטי (נחשב כ-0) | לא רלוונטי (נחשב כ-0) | לא |
שאינו A/B | לא רלוונטי | לא רלוונטי (נחשב כ-0) | לא רלוונטי (נחשב כ-0) | כן |
* מכשירי A/B עם Android מגרסה 11 ואילך שמשתמשים ב-Generic Kernel Image (GKI) חייבים להשתמש בגרסה ראשית של כותרת האתחול 3 כדי להיות תואמים למחיצה של אתחול הספק.
נקודות עיקריות:
במכשירי A/B לא צריך לציין תמונה לשחזור, כי בעדכוני A/B נעשה שימוש בשתי ערכות של המחיצות (כולל
boot
ו-dtbo
) ולעבור ביניהן במהלך בלי צורך בתמונת שחזור. מכשירי A/B יכולים עדיין להשתמש בתמונת שחזור ייעודית.במכשירים שאינם A/B שמופעלים עם Android מגרסה 11 ואילך, שמשתמשים בכותרת אתחול בגרסה 3, צריך לציין בנפרד כותרת אתחול בגרסה 2 עבור קובץ האימג' לשחזור. לדוגמה:
BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
בארכיטקטורות שלא תומכות בעצי מכשירים, קובץ האימג' של השחזור יכול לכלול קובץ אימג' של ACPIO במקום קובץ אימג' של DTBO.
מידע על כשלים בעדכונים אוטומטיים ועל קובצי אימג' לשחזור
כדי למנוע כשלים בחיבור אלחוטי (OTA) במכשירים שאינם מסוג A/B, קובץ האימג' לשחזור מערכת ההפעלה להיות עצמאים ולא תלויים בתמונות אחרות. במהלך עדכון OTA, אם בעיה מתרחשת לאחר שתמונת שכבת-העל עודכנה (אבל לפני השלמת העדכון המלא), המכשיר ינסה לאתחל במצב שחזור כדי להשלים את עדכון ה-OTA. עם זאת, מכיוון שמחיצת שכבת-העל כבר עשויה להתרחש אי-התאמה עם תמונת השחזור (שלא הייתה עדיין בוצע עדכון).
כדי למנוע התאוששות ממחיצת DTBO/ACPIO במהלך עדכון, מכשירים שאינם A/B עם Android 9 ומעלה יכול לציין תמונת DTBO/ACPIO לשחזור שמכילה מידע משכבת-העל תמונה כקטע נפרד בפורמט תמונת האתחול (חובה להשתמש בכותרת אתחול) גרסה 1 או 2).
שינויים בקובץ האימג' לאתחול
כדי לאפשר לתמונת השחזור להכיל את ה-DTBO או את ה-ACPIO של השחזור במכשירים שאינם A/B עם Android מגרסה 9 ואילך, מעדכנים את המבנה של קובץ האימג' של האתחול באופן הבא.
הקטע של קובץ האימג' לאתחול | מספר הדפים |
---|---|
כותרת אתחול (דף אחד) | 1 |
ליבה (l דפים) | l = (kernel_size + page_size -)
1) / page_size |
דיסק זיכרון (m דפים) | m = (ramdisk_size + page_size -)
1) / page_size |
תוכנת אתחול בשלב שני (n דפים) | n = (second_size + page_size -
1) / page_size |
DTBO או ACPIO לשחזור (דפי אתר) | o = (recovery_[dtbo|acpio]_size + page_size -
1) / page_size |
פרטים על הארגומנטים של הכלי mkbootimg
להגדרת גרסת הכותרת של קובץ האימג' לאתחול ונתיבי קובצי האימג' של שכבת-העל מופיעים במאמר ניהול גרסאות של כותרות של קובצי אימג' לאתחול.
הטמעת DTBO
במכשירים ללא תמיכה ב-A/B עם Android מגרסה 9 ואילך אפשר לאכלס את הקטע recovery_dtbo
בתמונת השחזור. כדי לכלול את התמונה recovery_dtbo
ב-recovery.img
, במכשיר BoardConfig.mk
:
קובעים את ההגדרה
BOARD_INCLUDE_RECOVERY_DTBO
ל-true
:BOARD_INCLUDE_RECOVERY_DTBO := true
מרחיבים את המשתנה
BOARD_MKBOOTIMG_ARGS
כדי לציין את גרסת הכותרת של קובץ האימג' לאתחול:BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
מוודאים שהמשתנה
BOARD_PREBUILT_DTBOIMAGE
מוגדר לנתיב של קובץ האימג' של ה-DTBO. מערכת ה-build של Android משתמשת במשתנה כדי להגדיר את הארגומנטrecovery_dtbo
של הכליmkbootimg
במהלך היצירה של קובץ האימג' לשחזור.
אם BOARD_INCLUDE_RECOVERY_DTBO
, BOARD_MKBOOTIMG_ARGS
וגם
BOARD_PREBUILT_DTBOIMAGE
המשתנים מוגדרים בצורה נכונה, מערכת ה-build של Android
כולל את ה-DTBO שצוין על ידי המשתנה BOARD_PREBUILT_DTBOIMAGE
ב-
recovery.img
הטמעת ACPIO
ניתן להשתמש במכשירים שאינם מסוג A/B עם Android מגרסה 9 ואילך
תמונת שכבת-על של ACPIO (במקום תמונת DTBO) ויכולה לאכלס את
הקטע recovery_acpio
(במקום הקטע recovery_dtbo
) של
קובץ אימג' לשחזור מערכת ההפעלה. כדי לכלול את התמונה recovery_acpio
ב-recovery.img
, במכשיר BoardConfig.mk
:
קובעים את ההגדרה
BOARD_INCLUDE_RECOVERY_ACPIO
ל-true
:BOARD_INCLUDE_RECOVERY_ACPIO := true
מרחיבים את המשתנה
BOARD_MKBOOTIMG_ARGS
כדי לציין את הכותרת של תמונת האתחול . כדי לתמוך בשחזור של ACPIO, הערך של המשתנה צריך להיות גדול מ-1 או שווה לו.BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
יש לוודא שהמשתנה
BOARD_RECOVERY_ACPIO
מוגדר לנתיב של תמונה של ACPIO. מערכת ה-build של Android משתמשת במשתנה כדי להגדיר את הארגומנטrecovery_acpio
של הכליmkbootimg
במהלך היצירה של קובץ האימג' לשחזור.
אם המשתנים BOARD_INCLUDE_RECOVERY_ACPIO
, BOARD_MKBOOTIMG_ARGS
ו-BOARD_RECOVERY_ACPIO
מוגדרים בצורה נכונה, מערכת ה-build של Android תכלול את ה-ACPIO שצוין על ידי המשתנה BOARD_RECOVERY_ACPIO
בקובץ recovery.img
.