אנדרואיד 10 תומך במחיצות דינמיות , מערכת מחיצות למרחב משתמש שיכולה ליצור, לשנות גודל ולהרוס מחיצות במהלך עדכוני אויר (OTA).
דף זה מתאר כיצד לשנות את גודל המחיצות הדינמיות במהלך עדכון עבור מכשירי A/B שהושקו עם תמיכה במחיצות דינמיות, עבור מכשירים עם אנדרואיד 9 ומטה .
רקע כללי
יש מחיצת super
אחת במכשיר. מחיצה זו אינה סיומת חריץ. התקן החסימה חייב להתקיים יחד עם הערך blk_device
עבור /misc
ב- fstab
. לדוגמה, אם הקובץ fstab
רשום:
/dev/block/bootdevice/by-name/misc /misc # Other fields
אז התקן החסימה של super
חייב להתקיים ב- /dev/block/bootdevice/by-name/super
, אבל מחיצת super
לא צריכה להיות רשומה בקובץ fstab
.
במחיצת super
, ישנם שני חריצי מטא נתונים , הממוספרים 0 ו-1, המתאימים לחריצי A/B עבור מחיצות. בדף זה, חריצי המטא נתונים נקראים Metadata S (מקור) ומטא נתונים T (יעד). באופן דומה, מחיצות מכונות system_s
, vendor_t
וכן הלאה.
לפני השדרוג, Metadata S מכיל את המידע עבור המחיצות הדינמיות שבהן נעשה שימוש (בדרך כלל, system_s
, vendor_s
, product_s
וכן הלאה). המערכת קוראת את היקף המחיצות הללו במהלך העדכון, כך שלא ניתן למחוק אותן.
מחיצות שייכות לקבוצות עדכון . ראה הטמעת מחיצות דינמיות לפרטים.
דוגמה למטא נתונים במכשיר היא כדלקמן.
- מטא נתונים 0
- קבוצה
foo_a
-
system_a
מחיצות_א - חלוקה
product_services_a
- מחיצות אחרות שעודכנו על ידי Foo
-
- קבוצה בר_א
- ספק מחיצה_
vendor_a
- מחיצה
product_a
- מחיצות אחרות שעודכנו על ידי בר
- ספק מחיצה_
- קבוצה
foo_b
(שארית מהשדרוג הקודם) - קבוצה
bar_b
(שארית מהשדרוג הקודם)
- קבוצה
- מטא נתונים 1
- קבוצה
foo_a
(שארית מהשדרוג הקודם) - קבוצה
bar_a
(שארית מהשדרוג הקודם) - קבוצה
foo_b
-
system_b
מחיצות_ב - חלוקה
product_services_b
- מחיצות אחרות שעודכנו על ידי Foo
-
- קבוצה
bar_b
- ספק
vendor_b
- מחיצה
product_b
- מחיצות אחרות שעודכנו על ידי בר
- ספק
- קבוצה
אתה יכול להשתמש בכלי lpdump
(קוד מקור תחת system/extras/partition_tools
) כדי לזרוק את המטא נתונים במכשיר שלך. לדוגמה:
lpdump --slot 0 /dev/block/bootdevice/by-name/super
lpdump --slot 1 /dev/block/bootdevice/by-name/super
עדכון זרימה
- אתחל את המטא נתונים של מחיצת
super
.- טען את ההיקפים עבור מחיצות המקור הדינמיות מ- Metadata S. תן ל-M להיות המטא-נתונים הטעונים.
- הסר קבוצות יעד ומחיצות (לדוגמה,
foo_t
,bar_t
) מ-M כך ש-M יכיל רק מחיצות וקבוצות עם סיומת_s
. - הוסף קבוצות יעד ומחיצות לפי השדה
dynamic_partition_metadata
במניפסט העדכון.
ניתן למצוא את הגודל של כל מחיצה ב-new_partition_info
. - כתוב M ל- Metadata T.
- מפה את המחיצות שנוספו בממפ המכשיר כניתנות לכתיבה.
- החל את העדכון על מכשירי החסימה.
- במידת הצורך, מפה את מחיצות המקור בממפה המכשיר כקריאה בלבד. זה הכרחי עבור טעינת צד מכיוון שמחיצות המקור אינן ממופה לפני העדכון.
- החל עדכון מלא או דלתא על כל מכשירי החסימה בחריץ היעד.
- התקן את המחיצות כדי להפעיל את הסקריפט שלאחר ההתקנה, ולאחר מכן בטל את טעינת המחיצות.
- בטל את מיפוי מחיצות היעד.
לפני ואחרי העדכון, מאפייני המערכת הבאים צריכים להיות בעלי הערכים המתאימים:
ro.boot.dynamic_partitions=true ro.boot.dynamic_partitions_retrofit=true
הוסף קבוצות ומחיצות למניפסט העדכון
בעת ביצוע עדכון OTA במכשיר A/B עם מחיצות דינמיות, או התקן A/B שמוסיף תמיכה למחיצות דינמיות, עליך להוסיף קבוצות ומחיצות למניפסט העדכון. הקטע שלהלן מציג מידע נוסף על מניפסט העדכון לתמיכה במחיצות דינמיות. ראה update_metadata.proto לתיעוד מפורט על כל שדה.
message DeltaArchiveManifest { optional DynamicPartitionMetadata dynamic_partition_metadata; } message DynamicPartitionMetadata { repeated DynamicPartitionGroup groups; } message DynamicPartitionGroup { required string name; optional uint64 size; // maximum size of group repeated string partition_names; }