KeyMint (আগে Keymaster) ভার্সন বাইন্ডিং-কে সাপোর্ট করতে, ডিভাইস বুটলোডারকে প্রতিটি পার্টিশনের জন্য অপারেটিং সিস্টেম (OS) ভার্সন ও নিরাপত্তা প্যাচ লেভেল প্রদান করতে হবে। OS ভার্সন ও নিরাপত্তা প্যাচ লেভেল হল AVB প্রপার্টি-তে দুটি আলাদা কী-ভ্যালু পেয়ার। যেমন:
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'
ডিভাইস বুটলোডার
avb_property_lookup() ব্যবহার করে vbmeta ইমেজ থেকে সেইসব AVB প্রপার্টি পেতে পারে।
একাধিক vbmeta ছবি
avb_slot_verify()
দ্বারা লোড করা যেতে পারে এবং
AvbSlotVerifyData**
out_data
আউটপুট প্যারামিটারে স্টোর করা হয়।
ভার্সন সংক্রান্ত তথ্যের ডিফল্ট ফর্ম্যাট
ডিফল্ট হিসেবে, Android বিল্ড সিস্টেম OS ভার্সন ও নিরাপত্তা প্যাচের জন্য যথাক্রমে নিম্নলিখিত ফর্ম্যাট ব্যবহার করে।
com.android.build.${partition}.os_version-এর ফর্ম্যাট হল A[.B.C],
যেমন, 12 বা 12.0.0:
- উত্তর: মেজর ভার্সন
- B: মাইনর ভার্সন, এটি না থাকলে ডিফল্ট হিসেবে শূন্য ধরা হয়
- গ: সাব-মাইনর ভার্সন, এটি না থাকলে ডিফল্ট হিসেবে শূন্য ধরা হয়
com.android.build.${partition}.security_patch-এর ফর্ম্যাট হল YYYY-MM-DD.
ডিফল্ট হিসেবে বিল্ড সিস্টেম
system, system_ext ও product পার্টিশনের জন্য
com.android.build.${partition}.security_patch তৈরি করে। ডিভাইস প্রস্তুতকারকের কাছ থেকে
BOOT_SECURITY_PATCH, VENDOR_SECURITY_PATCH এবং অন্যান্য
প্যাচ সেট করার আশা করা হয়, যা নন-সিস্টেম পার্টিশনের জন্য। যেমন:
BOOT_SECURITY_PATCH := 2022-01-05জেনারেট করেcom.android.build.boot.security_patch -> '2022-01-05'
VENDOR_SECURITY_PATCH := 2022-02-05জেনারেট করেcom.android.build.vendor.security_patch -> '2022-02-05'
ডিভাইস প্রস্তুতকারক *_SECURITY_PATCH-কে
$(PLATFORM_SECURITY_PATCH)-এ সেট করতে পারে
যদি এটি সবসময় সব পার্টিশনকে একই সিকিউরিটি প্যাচ লেভেল সহ ভার্সনে
আপডেট করে।
BOOT_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)VENDOR_SECURITY_PATCH := $(PLATFORM_SECURITY_PATCH)
কাস্টম ভার্সন সংক্রান্ত তথ্য উল্লেখ করুন
Android 13 থেকে শুরু করে, প্রতিটি ডিভাইস বিল্ডে OS ভার্সনের জন্য একটি কাস্টম ভ্যালু থাকতে পারে যা ডিভাইস বুটলোডার শনাক্ত করতে পারে। যেমন:
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জেনারেট করেcom.android.build.vendor.os_version -> '12.0.1'
বুট ইমেজ হেডারে পুরনো ভার্সন সংক্রান্ত তথ্য
Android 9 ও তার পরবর্তী ভার্সনে, Keymaster 4-এর
ভার্সন বাইন্ডিং
boot.img হেডার থেকে os_version সরানোর সাজেশন দেয়।
তুলনা করার জন্য, বুট ইমেজ হেডার থেকে ভার্সন সংক্রান্ত তথ্য পাওয়ার
পুরনো পদ্ধতিও এখানে বর্ণনা করা হয়েছে। মনে রাখবেন যে বুট হেডারের
os_version
ফিল্ডটি OS ভার্সন এবং সিকিউরিটি প্যাচ লেভেল, দুটিকেই একটি ৩২-বিট আনসাইনড ইন্টিজারে
একত্রিত করে। এই মেকানিজম ধরে নেয় যে সব ছবি একসাথে আপডেট করা হবে, যা
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;