Keymaster sürüm bağlamayı desteklemek için, cihaz önyükleyicisinin her bölüm için işletim sistemi (OS) sürümünü ve güvenlik düzeltme eki düzeyini sağlaması beklenir. İşletim sistemi sürümü ve güvenlik yaması düzeyi, AVB özelliklerindeki iki ayrı anahtar -> değer çiftidir. Örneğin,
-
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'
Aygıtın önyükleyicisi, bu AVB özelliklerini avb_property_lookup()
aracılığıyla vbmeta görüntüsünden alabilir. avb_slot_verify()
tarafından birden fazla vbmeta görüntüsü yüklenebilir ve AvbSlotVerifyData**
out_data
çıkış parametresinde depolanır.
Sürüm bilgilerinin varsayılan formatı
Varsayılan olarak Android derleme sistemi, işletim sistemi sürümü ve güvenlik yaması için sırasıyla aşağıdaki biçimi kullanacaktır.
com.android.build.${partition}.os_version
biçimi A[.BC]'dir, örneğin '12' veya '12.0.0':
- A: ana sürüm
- B: ikincil sürüm, bulunmadığında varsayılan olarak sıfır olur
- C: alt küçük sürüm, bulunmadığında varsayılan olarak sıfırdır
com.android.build.${partition}.security_patch
biçimi YYYY-AA-GG şeklindedir.
Varsayılan olarak derleme sistemi, system
, system_ext
ve product
bölümleri için yalnızca com.android.build.${partition}.security_patch
oluşturur. Cihaz üreticisinin sistem dışı bölümler için BOOT_SECURITY_PATCH
, VENDOR_SECURITY_PATCH
vb. ayarlaması beklenir. Örneğin,
-
BOOT_SECURITY_PATCH := 2022-01-05
şunu oluşturur-
com.android.build.boot.security_patch -> '2022-01-05'
-
-
VENDOR_SECURITY_PATCH := 2022-02-05
şunu oluşturur-
com.android.build.vendor.security_patch -> '2022-02-05'
-
Cihaz üreticisi, tüm bölümleri her zaman aynı güvenlik düzeltme eki düzeyine sahip sürüme güncelleyecekse *_SECURITY_PATCH
$(PLATFORM_SECURITY_PATCH)
olarak ayarlayabilir.
-
BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
-
VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
Özel sürüm bilgilerini belirtme
Android 13'ten itibaren her cihaz yapısı, işletim sistemi sürümü için cihazın önyükleyicisi tarafından tanınabilecek özel bir değere sahip olabilir. Örneğin,
-
SYSTEM_OS_VERSION := 12.0.0
şunu oluşturur-
com.android.build.system.os_version -> '12.0.0'
-
-
BOOT_OS_VERSION := abc
oluşturur-
com.android.build.boot.os_version -> 'abc'
-
-
VENDOR_OS_VERSION := 12.0.1
şunu oluşturur-
com.android.build.vendor.os_version -> '12.0.1'
-
Önyükleme görüntüsü başlığındaki eski sürüm bilgileri
Android 9'dan itibaren Keymaster sürüm bağlama , os_version
boot.img
başlığından kaldırılmasını önerir.
Karşılaştırma amacıyla, sürüm bilgilerinin önyükleme görüntüsü başlığından alınmasının eski kullanımı da burada açıklanmaktadır. Önyükleme başlığındaki os_version alanının hem işletim sistemi sürümünü hem de güvenlik yaması düzeyini 32 bitlik işaretsiz bir tam sayı halinde birleştirdiğini unutmayın. Ve bu mekanizma, tüm görüntülerin birlikte güncelleneceğini varsayar; bu, Project Treble'daki bölüm modülerleştirmesinden sonra geçersizdir.
// 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;