תמונות לשחזור

במכשירים שאינם מסוג 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