Keymaster sürümünü desteklemek için bağlama cihaz bootloader'ının işletim sistemi (OS) sürümünü sağlaması beklenir ve her bölümün güvenlik yaması düzeyini içerir. OS sürümü ve güvenlik yaması düzeyi, AVB özelliklerinde iki ayrı anahtar/değer çiftidir. Örnek:
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'
Cihaz önyükleyicisi, avb_property_lookup()
kullanarak bu AVB özelliklerini bir vbmeta görüntüsünden alabilir.
Birden fazla vbmeta resmi avb_slot_verify()
tarafından yüklenebilir ve AvbSlotVerifyData**
out_data
çıkış parametresinde depolanır.
Sürüm bilgilerinin varsayılan biçimi
Android derleme sistemi varsayılan olarak işletim sistemi için aşağıdaki biçimi kullanır sürümünü ve güvenlik yamasını gösterir.
com.android.build.${partition}.os_version
biçimi A[.B.C] şeklindedir.
örneğin, 12
veya 12.0.0
:
- C: ana sürüm
- B: alt sürüm, olmadığında varsayılan olarak sıfırlanır
- C: alt küçük sürüm, yoksa varsayılan olarak sıfır değerine ayarlanır
com.android.build.${partition}.security_patch
biçimi YYYY-AA-GG şeklindedir.
Varsayılan olarak, derleme sistemi
system
için com.android.build.${partition}.security_patch
,
system_ext
ve product
bölümleri. Cihaz üreticisi:
BOOT_SECURITY_PATCH
, VENDOR_SECURITY_PATCH
ve diğer parametrelerin ayarlanması bekleniyor
yamalardır. Örnek:
BOOT_SECURITY_PATCH := 2022-01-05
oluştururcom.android.build.boot.security_patch -> '2022-01-05'
VENDOR_SECURITY_PATCH := 2022-02-05
oluştururcom.android.build.vendor.security_patch -> '2022-02-05'
Cihaz üreticisi, tüm bölümleri her zaman aynı güvenlik yaması düzeyine sahip sürüme güncelliyorsa *_SECURITY_PATCH
değerini $(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 derlemesi, işletim sistemi sürümü için cihaz önyükleyicisi tarafından tanınabilen özel bir değere sahip olabilir. Örnek:
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
oluştururcom.android.build.vendor.os_version -> '12.0.1'
Önyükleme resmi başlığındaki eski sürüm bilgileri
Android 9'dan itibaren Keymaster sürüm bağlama, boot.img
üstbilgisinde os_version
öğesinin kaldırılmasını önerir.
Karşılaştırma amacıyla, önyükleme resmi üstbilgisinde sürüm bilgilerini almayla ilgili eski kullanım da burada açıklanmıştır. Başlatma üstbilgisinde yer alan os_version
alanın hem işletim sistemi sürümünü hem de güvenlik yaması düzeyini 32 bitlik imzasız bir tam sayıyla birleştirdiğini unutmayın. Bu mekanizma, tüm resimlerin birlikte güncelleneceğini varsayar. Bu varsayım, Project Treble'da bölüm modülerleştirmesinden sonra geçerliliğini yitirmiştir.
// 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;