AVB বৈশিষ্ট্য সংস্করণ তথ্য

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 প্রোপার্টিগুলো পেতে পারে। avb_slot_verify() দ্বারা একাধিক vbmeta ইমেজ লোড করা যায় এবং সেগুলো AvbSlotVerifyData** out_data আউটপুট প্যারামিটারে সংরক্ষিত থাকে।

সংস্করণ তথ্যের ডিফল্ট বিন্যাস

ডিফল্টরূপে, অ্যান্ড্রয়েড বিল্ড সিস্টেম যথাক্রমে ওএস সংস্করণ এবং নিরাপত্তা প্যাচের জন্য নিম্নলিখিত বিন্যাসটি ব্যবহার করে।

com.android.build.${partition}.os_version এর ফরম্যাট হলো A[.BC], যেমন, 12 বা 12.0.0 :

  • এ: প্রধান সংস্করণ
  • B: গৌণ সংস্করণ, অনুপস্থিত থাকলে এর মান শূন্য হয়।
  • 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)

কাস্টম সংস্করণ তথ্য নির্দিষ্ট করুন

অ্যান্ড্রয়েড ১৩ থেকে শুরু করে, প্রতিটি ডিভাইস বিল্ডে ওএস ভার্সনের জন্য একটি কাস্টম ভ্যালু থাকতে পারে, যা ডিভাইস বুটলোডার দ্বারা স্বীকৃত হবে। উদাহরণস্বরূপ:

  • 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'

বুট ইমেজ হেডারে অপ্রচলিত সংস্করণের তথ্য

অ্যান্ড্রয়েড ৯ এবং এর পরবর্তী সংস্করণগুলোতে, Keymaster 4-এর ভার্সন বাইন্ডিং boot.img হেডার থেকে os_version সরিয়ে ফেলার পরামর্শ দেয়।

তুলনার জন্য, বুট ইমেজ হেডার থেকে ভার্সন তথ্য পাওয়ার অপ্রচলিত ব্যবহারটিও এখানে বর্ণনা করা হয়েছে। উল্লেখ্য যে, বুট হেডারের os_version ফিল্ডটি OS ভার্সন এবং সিকিউরিটি প্যাচ লেভেল উভয়কে একত্রিত করে একটি ৩২-বিট আনসাইনড ইন্টিজারে পরিণত করে। এবং এই পদ্ধতিটি ধরে নেয় যে সমস্ত ইমেজ একসাথে আপডেট করা হবে, যা প্রজেক্ট ট্রিবল -এ পার্টিশন মডুলারাইজেশনের পর অপ্রচলিত হয়ে গেছে।

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