בהתקנים שאינם A/B, תמונת השחזור צריכה להכיל מידע מתמונת שכבת-על של עץ מכשיר (DTB) או תמונת שכבת-על מתקדמת של תצורה וממשק מתח (ACPI) . כאשר מכשירים כאלה מאתחלים לשחזור, טוען האתחול יכול לטעון את תמונת השכבה התואמת לתמונת השחזור. התקנים התומכים בעדכוני A/B (חלקים) צריכים להשתמש בשחזור כאתחול במקום במחיצת שחזור נפרדת (לפרטים, ראה הטמעת עדכוני A/B ).
האפשרויות לכלול DTBO/ACPIO לשחזור כחלק מתמונת האתחול/שחזור שונות בין גרסאות אנדרואיד.
לְשַׁחְרֵר | עדכון סכימה | תאימות GKI | גרסת כותרת אתחול (השקה התקני) | גרסת כותרת אתחול (שדרוג מכשירים) | נדרשת תמונת שחזור ייעודית |
---|---|---|---|---|---|
11 | A/B, 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 (ש) | א/ב | לא | 2 | 0, 1, 2 | לא |
לא A/B | לא | 2 | 0, 1, 2 | כן | |
9 (P) | א/ב | לא | 1 | 0, 1 | לא |
לא A/B | לא | 1 | 0, 1 | כן | |
8 (O) | א/ב | לא | לא רלוונטי (נחשב 0) | לא רלוונטי (נחשב 0) | לא |
לא A/B | לא | לא רלוונטי (נחשב 0) | לא רלוונטי (נחשב 0) | כן |
* מכשירי A/B המריצים אנדרואיד 11 ומעלה ומשתמשים בתמונת ליבה כללית (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 ותמונות שחזור
כדי למנוע כשלים באוויר (OTA) במכשירים שאינם A/B, תמונת השחזור צריכה להיות עצמאית ובלתי תלויה בתמונות אחרות. במהלך עדכון OTA, אם מתרחשת בעיה לאחר שתמונת שכבת העל עודכנה (אך לפני השלמת העדכון המלא), המכשיר מנסה לאתחל למצב שחזור כדי להשלים את עדכון ה-OTA. עם זאת, מכיוון שמחיצת השכבה כבר עודכנה, עלולה להתרחש אי התאמה עם תמונת השחזור (שעדיין לא עודכנה).
כדי למנוע מהשחזור להתלות במחיצת DTBO/ACPIO במהלך עדכון, התקנים שאינם A/B המריצים אנדרואיד 9 ומעלה יכולים לציין תמונת DTBO/ACPIO לשחזור המכילה מידע מתמונת השכבה כחלק נפרד בפורמט תמונת האתחול ( חייב להשתמש בגרסת כותרת אתחול של 1 או 2).
שינויים בתמונת האתחול
כדי לאפשר לתמונת השחזור להכיל את DTBO או ACPIO לשחזור במכשירים שאינם A/B המריצים Android 9 ומעלה, עדכן את מבנה תמונת האתחול באופן הבא.
קטע תמונת אתחול | מספר דפים |
---|---|
כותרת אתחול (עמוד אחד) | 1 |
ליבה (1 עמודים) | l = ( kernel_size + page_size - 1) / page_size |
Ramdisk (מ דפים) | 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 עם 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. מערכת הבנייה של אנדרואיד משתמשת במשתנה כדי להגדיר את הארגומנטrecovery_dtbo
של הכליmkbootimg
במהלך יצירת תמונת השחזור.
אם המשתנים BOARD_INCLUDE_RECOVERY_DTBO
, BOARD_MKBOOTIMG_ARGS
ו- BOARD_PREBUILT_DTBOIMAGE
מוגדרים כהלכה, מערכת הבנייה של אנדרואיד כוללת את ה-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
כדי לציין את גרסת הכותרת של תמונת האתחול. המשתנה חייב להיות גדול או שווה ל-1 כדי לתמוך ב-ACPIO לשחזור.BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
ודא שהמשתנה
BOARD_RECOVERY_ACPIO
מוגדר לנתיב של תמונת ACPIO. מערכת הבנייה של אנדרואיד משתמשת במשתנה כדי להגדיר את הארגומנטrecovery_acpio
של הכליmkbootimg
במהלך יצירת תמונת השחזור.
אם המשתנים BOARD_INCLUDE_RECOVERY_ACPIO
, BOARD_MKBOOTIMG_ARGS
ו- BOARD_RECOVERY_ACPIO
מוגדרים כהלכה, מערכת הבנייה של אנדרואיד כוללת את ה-ACPIO שצוין על ידי המשתנה BOARD_RECOVERY_ACPIO
ב- recovery.img
.