لإتاحة ربط الإصدار في 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
:
- أ: رقم الإصدار الرئيسي
- ب: رقم الإصدار الثانوي، والقيمة التلقائية هي صفر في حال عدم توفّره
- ج: رقم الإصدار الفرعي، والقيمة التلقائية هي صفر في حال عدم توفّره
يكون تنسيق 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-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)
تحديد معلومات الإصدار المخصّصة
اعتبارًا من Android 13، يمكن أن يتضمّن كل إصدار من الجهاز قيمة مخصّصة لإصدار نظام التشغيل يمكن أن يتعرّف عليها برنامج إقلاع الجهاز. مثلاً:
- تُنشئ
SYSTEM_OS_VERSION := 12.0.0
com.android.build.system.os_version -> '12.0.0'
- تُنشئ
BOOT_OS_VERSION := a.b.c
com.android.build.boot.os_version -> 'a.b.c'
- تُنشئ
VENDOR_OS_VERSION := 12.0.1
com.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;