AVB mülklerindeki sürüm bilgileri

Keymaster sürüm bağlamasını desteklemek için cihaz önyükleyicisinin her bölüm için işletim sistemi (OS) sürümünü ve güvenlik yaması düzeyini sağlaması gerekir. 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 bootloader'ı, bu AVB özelliklerini bir vbmeta görüntüsünden avb_property_lookup(). 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:

  • A: 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, YYYY-AA-GG biçimindedir.

Derleme sistemi varsayılan olarak system, system_ext ve product bölümleri için com.android.build.${partition}.security_patch oluşturur. Cihaz üreticisinin, sistem dışı bölümler için BOOT_SECURITY_PATCH, VENDOR_SECURITY_PATCH ve diğer yamaları ayarlamasının beklenmesi Örnek:

  • BOOT_SECURITY_PATCH := 2022-01-05 oluşturur
    • com.android.build.boot.security_patch -> '2022-01-05'
  • VENDOR_SECURITY_PATCH := 2022-02-05 oluşturur
    • com.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 oluşturur
    • 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'

Ö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 tek bir resim yerine bölüm modülerleştirmesi sonrasında geçerliliğini yitirmiş olan Treble Projesi.

// 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;