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
আউটপুট প্যারামিটারে সংরক্ষণ করা হবে।
সংস্করণ তথ্যের ডিফল্ট বিন্যাস
ডিফল্টরূপে, অ্যান্ড্রয়েড বিল্ড সিস্টেম যথাক্রমে OS সংস্করণ এবং নিরাপত্তা প্যাচের জন্য নিম্নলিখিত বিন্যাসটি ব্যবহার করবে।
com.android.build.${partition}.os_version
এর ফর্ম্যাট হল A[.BC], যেমন, '12' বা '12.0.0':
- উত্তর: প্রধান সংস্করণ
- বি: ছোট সংস্করণ, যখন এটি অনুপস্থিত থাকে তখন ডিফল্ট শূন্য
- C: উপ-অপ্রধান সংস্করণ, যখন এটি অনুপস্থিত থাকে তখন ডিফল্ট শূন্য হয়
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)
কাস্টম সংস্করণ তথ্য নির্দিষ্ট করা হচ্ছে
অ্যান্ড্রয়েড 13 থেকে শুরু করে, প্রতিটি ডিভাইস বিল্ডে OS সংস্করণের জন্য একটি কাস্টম মান থাকতে পারে যা ডিভাইস বুটলোডার দ্বারা স্বীকৃত হতে পারে। যেমন,
-
SYSTEM_OS_VERSION := 12.0.0
জেনারেট করে-
com.android.build.system.os_version -> '12.0.0'
-
-
BOOT_OS_VERSION := abc
জেনারেট করে-
com.android.build.boot.os_version -> 'abc'
-
-
VENDOR_OS_VERSION := 12.0.1
তৈরি করে-
com.android.build.vendor.os_version -> '12.0.1'
-
বুট ইমেজ হেডারে অপ্রচলিত সংস্করণ তথ্য
Android 9 থেকে শুরু করে, Keymaster সংস্করণ বাইন্ডিং boot.img
হেডার থেকে os_version
সরানোর পরামর্শ দেয়।
তুলনা করার জন্য, বুট ইমেজ হেডার থেকে সংস্করণ তথ্য প্রাপ্ত করার অপ্রচলিত ব্যবহার এখানে বর্ণনা করা হয়েছে। মনে রাখবেন যে বুট হেডারে os_version ক্ষেত্রটি OS সংস্করণ এবং নিরাপত্তা প্যাচ উভয় স্তরকে একটি 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যাতে একত্রিত করে। এবং এই প্রক্রিয়াটি অনুমান করে যে সমস্ত চিত্র একসাথে আপডেট করা হবে, যা প্রজেক্ট ট্রেবলে পার্টিশন মডুলারাইজেশনের পরে অপ্রচলিত।
// 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;