כדי לתמוך באיגוד גרסת Keymaster , טוען האתחול של המכשיר צפוי לספק את גרסת מערכת ההפעלה (OS) ואת רמת תיקון האבטחה עבור כל מחיצה. גרסת מערכת ההפעלה ורמת תיקון האבטחה הם שני צמדי מפתח נפרדים -> ערכים במאפייני AVB . לְמָשָׁל,
-
com.android.build.system.os_version -> '12'
-
com.android.build.system.security_patch -> '2022-02-05'
-
com.android.build.vendor.os_version -> '12'
-
com.android.build.vendor.security_patch -> '2022-02-05'
-
com.android.build.boot.os_version -> '12'
-
com.android.build.boot.security_patch -> '2022-02-05'
טוען האתחול של המכשיר יכול לקבל את מאפייני ה-AVB האלה מתמונת vbmeta דרך avb_property_lookup()
. ניתן לטעון תמונות vbmeta מרובות על ידי avb_slot_verify()
והן יאוחסנו בפרמטר הפלט AvbSlotVerifyData**
out_data
.
פורמט ברירת המחדל של מידע הגרסה
כברירת מחדל, מערכת הבנייה של אנדרואיד תשתמש בפורמט הבא עבור גרסת מערכת ההפעלה ותיקון האבטחה, בהתאמה.
הפורמט של com.android.build.${partition}.os_version
הוא A[.BC], למשל, '12' או '12.0.0':
- ת: גרסה מרכזית
- B: גרסה מינורית, ברירת המחדל היא אפס כאשר היא נעדרת
- C: גרסה תת-מינורית, ברירת המחדל היא אפס כאשר היא נעדרת
הפורמט של com.android.build.${partition}.security_patch
הוא YYYY-MM-DD.
כברירת מחדל, מערכת ה-build תיצור רק com.android.build.${partition}.security_patch
עבור system
, system_ext
ומחיצות product
. יצרן המכשיר צפוי להגדיר BOOT_SECURITY_PATCH
, VENDOR_SECURITY_PATCH
וכו' עבור מחיצות שאינן מערכתיות. לְמָשָׁל,
-
BOOT_SECURITY_PATCH := 2022-01-05
יוצר-
com.android.build.boot.security_patch -> '2022-01-05'
-
-
VENDOR_SECURITY_PATCH := 2022-02-05
יוצר-
com.android.build.vendor.security_patch -> '2022-02-05'
-
יצרן המכשיר יכול להגדיר את *_SECURITY_PATCH
ל $(PLATFORM_SECURITY_PATCH)
אם הוא יעדכן תמיד את כל המחיצות לגרסה עם אותה רמת תיקון אבטחה.
-
BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
-
VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
ציון פרטי גרסה מותאמת אישית
החל מאנדרואיד 13, לכל בניית מכשיר יכול להיות ערך מותאם אישית עבור גרסת מערכת ההפעלה שניתן לזהות על ידי טוען האתחול של המכשיר. לְמָשָׁל,
-
SYSTEM_OS_VERSION := 12.0.0
יוצר-
com.android.build.system.os_version -> '12.0.0'
-
-
BOOT_OS_VERSION := abc
יוצר-
com.android.build.boot.os_version -> 'abc'
-
-
VENDOR_OS_VERSION := 12.0.1
יוצר-
com.android.build.vendor.os_version -> '12.0.1'
-
מידע הגרסה המיושן בכותרת תמונת האתחול
החל מאנדרואיד 9, קשירת גרסת Keymaster מציעה להסיר os_version
מהכותרת boot.img
.
לשם השוואה, השימוש המיושן בהשגת מידע הגרסה מכותרת תמונת האתחול מתואר גם כאן. שים לב שהשדה os_version בכותרת האתחול משלב גם את גרסת מערכת ההפעלה וגם את רמת תיקון האבטחה למספר שלם של 32 סיביות ללא סימן. והמנגנון הזה מניח שכל התמונות יתעדכנו יחד, וזה מיושן לאחר מודולריזציה של מחיצות ב- Project Treble .
// Operating system version and security patch level.
// For version "A.B.C" and patch level "Y-M-D":
// (7 bits for each of A, B, C; 7 bits for (Y-2000), 4 bits for M)
// A = os_version[31:25]
// B = os_version[24:18]
// C = os_version[17:11]
// Y = 2000 + os_version[10:4]
// M = os-version[3:0]
uint32_t os_version;