AVB özelliklerindeki Sürüm Bilgileri

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;