لإتاحة ربط الإصدار في KeyMint (المعروفة سابقًا باسم Keymaster)، من المتوقّع أن يوفّر برنامج الإقلاع في الجهاز إصدار نظام التشغيل ومستوى رمز تصحيح الأمان لكل قسم. إصدار نظام التشغيل ومستوى رمز تصحيح الأمان هما زوجان منفصلان من المفتاح والقيمة في خصائص 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
معلَمة الإخراج.
التنسيق التلقائي لمعلومات الإصدار
يستخدم نظام تصميم Android تلقائيًا التنسيق التالي لإصدار نظام التشغيل وحزمة الأمان على التوالي.
يكون تنسيق com.android.build.${partition}.os_version هو A[.B.C]،
على سبيل المثال، 12 أو 12.0.0:
- أ: رقم الإصدار الرئيسي
- B: رقم الإصدار الثانوي، ويتم ضبط القيمة التلقائية على صفر في حال عدم توفّره
- C: رقم الإصدار الفرعي، ويتم ضبط القيمة التلقائية على صفر في حال عدم توفّره
يكون تنسيق com.android.build.${partition}.security_patch هو YYYY-MM-DD.
يُنشئ نظام التصميم تلقائيًا com.android.build.${partition}.security_patch لكل من أقسام system وsystem_ext وproduct. من المتوقّع أن تضبط الشركة المصنّعة للجهاز BOOT_SECURITY_PATCH وVENDOR_SECURITY_PATCH وحِزم تصحيح أخرى للأقسام غير التابعة للنظام. على سبيل المثال:
- تنشئ
BOOT_SECURITY_PATCH := 2022-01-05com.android.build.boot.security_patch -> '2022-01-05'
- تنشئ
VENDOR_SECURITY_PATCH := 2022-02-05com.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)
تحديد معلومات الإصدار المخصّصة
اعتبارًا من Android 13، يمكن أن يتضمّن كل إصدار من الجهاز قيمة مخصّصة لإصدار نظام التشغيل يمكن أن يتعرّف عليها برنامج إقلاع الجهاز. على سبيل المثال:
- تنشئ
SYSTEM_OS_VERSION := 12.0.0com.android.build.system.os_version -> '12.0.0'
- تنشئ
BOOT_OS_VERSION := a.b.ccom.android.build.boot.os_version -> 'a.b.c'
- تنشئ
VENDOR_OS_VERSION := 12.0.1com.android.build.vendor.os_version -> '12.0.1'
معلومات الإصدار القديم في عنوان صورة التشغيل
في الإصدار 9 من نظام التشغيل Android والإصدارات الأحدث، تقترح ميزة ربط الإصدار في Keymaster 4 إزالة 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;