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