במכשירים שאינם מסוג A/B, תמונת השחזור צריכה להכיל מידע device tree blob (DTB) או תצורה מתקדמת וממשק חשמל (ACPI). במקרים כאלה במכשירים האלה מופעלים מראש, תוכנת האתחול יכולה לטעון את תמונת שכבת-העל תואם לתמונת השחזור. מכשירים שתומכים ב-A/B (באופן חלק) עדכונים צריכים להשתמש בשחזור כהפעלה במקום מחיצת שחזור נפרדת (לפרטים, ראו הטמעת A/B) עדכונים).
האפשרויות להכללה של DTBO/ACPIO לשחזור כחלק מהאתחול/השחזור התמונה משתנה בין גרסאות Android.
פריט תוכן | עדכון סכימה | תאימות ל-GKI | גרסת כותרת ההפעלה (הפעלת מכשירים) | גרסת כותרת ההפעלה (שדרוג מכשירים) | נדרשת תמונה ייעודית לשחזור החשבון |
---|---|---|---|---|---|
11 | A/B, Virtual A/B |
כן | 3* | לא רלוונטי | לא |
A/B, Virtual 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 ומעלה ושימוש בתמונת ליבה גנרית" (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 עם Android 9 ומעלה יכול לציין תמונת DTBO/ACPIO לשחזור שמכילה מידע משכבת-העל תמונה כקטע נפרד בפורמט תמונת האתחול (חובה להשתמש בכותרת אתחול) גרסה 1 או 2).
שינויים בתמונת האתחול
לאפשר לקובץ האימג' לשחזור להכיל את ה-DTBO או את ACPIO לשחזור במכשיר שאינו A/B במכשירים עם Android מגרסה 9 ואילך, יש לעדכן את תהליך ההפעלה של מבנה התמונה באופן הבא.
קטע בנושא תמונת הפעלה | מספר הדפים |
---|---|
כותרת הפעלה (דף אחד) | 1 |
ליבה (l דפים) | l = (kernel_size + page_size -)
1) / page_size |
Ramdisk (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 בגרסת 9 ואילך יכולים לאכלס את
הקטע recovery_dtbo
בתמונת השחזור. כדי לכלול את recovery_dtbo
תמונה בקובץ recovery.img
, במכשיר BoardConfig.mk
:
קובעים את ההגדרה
BOARD_INCLUDE_RECOVERY_DTBO
ל-true
:BOARD_INCLUDE_RECOVERY_DTBO := true
מרחיבים את המשתנה
BOARD_MKBOOTIMG_ARGS
כדי לציין את הכותרת של תמונת האתחול version: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
כדי לציין את הכותרת של תמונת האתחול . כדי לתמוך בשחזור, המשתנה חייב להיות גדול מ-1 או שווה לו ACPIO.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