Để hỗ trợ phiên bản Keymaster ràng buộc, trình tải khởi động thiết bị dự kiến sẽ cung cấp phiên bản hệ điều hành (OS) và cấp bản vá bảo mật cho mỗi phân vùng. Phiên bản hệ điều hành và cấp bản vá bảo mật là hai cặp khoá-giá trị riêng biệt trong thuộc tính AVB. Ví dụ:
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'
Trình tải khởi động thiết bị có thể lấy các thuộc tính AVB đó từ hình ảnh vbmeta bằng cách sử dụng avb_property_lookup()
.
Có thể tải nhiều hình ảnh vbmeta bằng
avb_slot_verify()
và được lưu trữ trong
AvbSlotVerifyData**
out_data
tham số đầu ra.
Định dạng mặc định của thông tin phiên bản
Theo mặc định, hệ thống xây dựng Android sử dụng định dạng sau cho hệ điều hành và bản vá bảo mật tương ứng.
Định dạng của com.android.build.${partition}.os_version
là A[.B.C],
ví dụ: 12
hoặc 12.0.0
:
- A: phiên bản lớn
- B: phiên bản nhỏ, mặc định là 0 khi không có phiên bản này
- C: phiên bản phụ, mặc định là 0 khi không có
Định dạng của com.android.build.${partition}.security_patch
là YYYY-MM-DD.
Theo mặc định, hệ thống xây dựng sẽ tạo
com.android.build.${partition}.security_patch
cho system
,
Phân vùng system_ext
và product
. Nhà sản xuất thiết bị là
dự kiến sẽ đặt BOOT_SECURITY_PATCH
, VENDOR_SECURITY_PATCH
và các giá trị khác
bản vá cho các phân vùng không phải hệ thống. Ví dụ:
BOOT_SECURITY_PATCH := 2022-01-05
tạocom.android.build.boot.security_patch -> '2022-01-05'
VENDOR_SECURITY_PATCH := 2022-02-05
tạo racom.android.build.vendor.security_patch -> '2022-02-05'
Nhà sản xuất thiết bị có thể đặt *_SECURITY_PATCH
thành
$(PLATFORM_SECURITY_PATCH)
nếu hệ thống luôn cập nhật tất cả các phân vùng theo phiên bản có cùng mức bảo mật
bản vá.
BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
Chỉ định thông tin phiên bản tuỳ chỉnh
Kể từ Android 13, mỗi bản dựng thiết bị có thể có một giá trị tuỳ chỉnh cho phiên bản hệ điều hành mà trình tải khởi động thiết bị có thể nhận dạng. Ví dụ:
SYSTEM_OS_VERSION := 12.0.0
tạocom.android.build.system.os_version -> '12.0.0'
BOOT_OS_VERSION := a.b.c
tạocom.android.build.boot.os_version -> 'a.b.c'
VENDOR_OS_VERSION := 12.0.1
tạo racom.android.build.vendor.os_version -> '12.0.1'
Thông tin phiên bản đã lỗi thời trong tiêu đề hình ảnh khởi động
Kể từ Android 9, tính năng liên kết phiên bản của Keymaster đề xuất xoá os_version
khỏi tiêu đề boot.img
.
Để so sánh, việc sử dụng lỗi thời để lấy thông tin phiên bản từ
tiêu đề của hình ảnh khởi động cũng được mô tả ở đây. Xin lưu ý rằng trường os_version
trong tiêu đề khởi động kết hợp cả phiên bản hệ điều hành và cấp bản vá bảo mật thành một số nguyên 32 bit không dấu. Cơ chế này giả định rằng tất cả hình ảnh sẽ được cập nhật cùng nhau, điều này không còn phù hợp sau khi mô-đun hoá phân vùng trong Project 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;