لدعم إصدار 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-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
ربط الإصدار
تقترح إزالة os_version
من عنوان boot.img
.
وللمقارنة، فإن الاستخدام القديم للحصول على معلومات الإصدار من
رأس صورة بدء التشغيل موصوفة هنا أيضًا. لاحظ أن
os_version
في عنوان التشغيل إلى دمج إصدار نظام التشغيل ومستوى رمز تصحيح الأمان في
عدد صحيح غير موقَّع بحجم 32 بت. وتفترض هذه الآلية أن جميع الصور سيتم
يتم تعديلها معًا، وهي تصبح قديمة بعد تقسيم التقسيم في
مشروع 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;