রিকভারি ইমেজ

নন-A/B ডিভাইসে, রিকভারি ইমেজে ডিভাইস ট্রি ব্লব (DTB) বা অ্যাডভান্সড কনফিগারেশন অ্যান্ড পাওয়ার ইন্টারফেস (ACPI) ওভারলে ইমেজ থেকে তথ্য থাকা উচিত। যখন এই ধরনের ডিভাইসগুলি পুনরুদ্ধারে বুট হয়, তখন বুটলোডার ওভারলে চিত্রটি লোড করতে পারে যা পুনরুদ্ধার চিত্রের সাথে সামঞ্জস্যপূর্ণ। যে ডিভাইসগুলি A/B (বিজোড়) আপডেট সমর্থন করে সেগুলিকে আলাদা পুনরুদ্ধার পার্টিশনের পরিবর্তে বুট হিসাবে পুনরুদ্ধার ব্যবহার করা উচিত (বিশদ বিবরণের জন্য, A/B আপডেটগুলি বাস্তবায়ন করা দেখুন)।

বুট/পুনরুদ্ধার চিত্রের অংশ হিসাবে একটি পুনরুদ্ধার DTBO/ACPIO অন্তর্ভুক্ত করার বিকল্পগুলি Android রিলিজের মধ্যে আলাদা।

মুক্তি স্কিম আপডেট করুন GKI সম্মতি বুট হেডার সংস্করণ (লঞ্চিং ডিভাইস) বুট হেডার সংস্করণ (ডিভাইস আপগ্রেড করা) ডেডিকেটেড রিকভারি ইমেজ প্রয়োজন
11 এ/বি,
ভার্চুয়াল A/B
হ্যাঁ* N/A না
এ/বি,
ভার্চুয়াল A/B
না 2, 3 0, 1, 2, 3 না
অ-এ/বি হ্যাঁ 3 N/A হ্যাঁ
অ-এ/বি না 2, 3 0, 1, 2, 3 হ্যাঁ
10 (প্রশ্ন) A/B N/A 2 0, 1, 2 না
অ-এ/বি N/A 2 0, 1, 2 হ্যাঁ
9 (P) A/B N/A 1 0, 1 না
অ-এ/বি N/A 1 0, 1 হ্যাঁ
8 (ও) A/B N/A N/A (0 বিবেচিত) N/A (0 বিবেচিত) না
অ-এ/বি N/A N/A (0 বিবেচিত) N/A (0 বিবেচিত) হ্যাঁ

* A/B ডিভাইসগুলি যেগুলি Android 11 বা উচ্চতর সংস্করণে চলছে এবং জেনেরিক কার্নেল ইমেজ (GKI) ব্যবহার করছে তাদের অবশ্যই বিক্রেতা বুট পার্টিশনের সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য 3-এর একটি প্রাথমিক বুট হেডার সংস্করণ ব্যবহার করতে হবে৷

গুরুত্বপূর্ণ দিক:

  • A/B ডিভাইসগুলির একটি পুনরুদ্ধার চিত্র নির্দিষ্ট করার প্রয়োজন নেই কারণ A/B আপডেটগুলি পার্টিশনের দুটি সেট ব্যবহার করে ( boot এবং dtbo সহ) এবং আপডেটের সময় তাদের মধ্যে স্যুইচ করে, একটি পুনরুদ্ধার চিত্রের প্রয়োজনীয়তা দূর করে। যদি ইচ্ছা হয়, A/B ডিভাইসগুলি এখনও একটি ডেডিকেটেড পুনরুদ্ধার চিত্র ব্যবহার করতে পারে৷

  • Android 11 বা উচ্চতর সংস্করণের সাথে লঞ্চ করা এবং 3-এর বুট হেডার সংস্করণ ব্যবহার করা নন-A/B ডিভাইসগুলি পুনরুদ্ধার চিত্রের জন্য আলাদাভাবে 2-এর একটি বুট হেডার সংস্করণ স্পষ্টভাবে উল্লেখ করতে হবে। উদাহরণ স্বরূপ:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • ডিভাইস ট্রি সমর্থন করে না এমন আর্কিটেকচারের জন্য, রিকভারি ইমেজে DTBO ইমেজের পরিবর্তে একটি ACPIO ইমেজ থাকতে পারে।

OTA ব্যর্থতা এবং পুনরুদ্ধারের চিত্র সম্পর্কে

নন-এ/বি ডিভাইসে ওভার-দ্য-এয়ার (OTA) ব্যর্থতা রোধ করতে, পুনরুদ্ধার চিত্রটি স্বয়ংসম্পূর্ণ এবং অন্যান্য চিত্র থেকে স্বাধীন হওয়া উচিত। একটি OTA আপডেটের সময়, যদি ওভারলে ইমেজ আপডেট হওয়ার পরে কোনো সমস্যা হয় (কিন্তু সম্পূর্ণ আপডেট সম্পূর্ণ করার আগে), ডিভাইসটি OTA আপডেট সম্পূর্ণ করার জন্য রিকভারি মোডে বুট করার চেষ্টা করে। যাইহোক, যেহেতু ওভারলে পার্টিশনটি ইতিমধ্যেই আপডেট করা হয়েছে, তাই পুনরুদ্ধার চিত্রের সাথে একটি অমিল ঘটতে পারে (যা এখনও আপডেট করা হয়নি)।

একটি আপডেটের সময় DTBO/ACPIO পার্টিশনের উপর নির্ভর করে পুনরুদ্ধার রোধ করতে, Android 9 বা উচ্চতর চলমান নন-A/B ডিভাইসগুলি বুট ইমেজ ফরম্যাটে একটি পৃথক বিভাগ হিসাবে ওভারলে ইমেজ থেকে তথ্য ধারণকারী একটি পুনরুদ্ধার DTBO/ACPIO চিত্র নির্দিষ্ট করতে পারে ( 1 বা 2 এর একটি বুট হেডার সংস্করণ ব্যবহার করতে হবে)।

বুট ইমেজ পরিবর্তন

অ্যান্ড্রয়েড 9 বা উচ্চতর সংস্করণে চলমান নন-এ/বি ডিভাইসগুলিতে পুনরুদ্ধার চিত্রটিকে পুনরুদ্ধার DTBO বা ACPIO ধারণ করার অনুমতি দিতে, বুট চিত্রের কাঠামোটি নিম্নরূপ আপডেট করুন।

বুট ইমেজ বিভাগ পৃষ্ঠা সংখ্যা
বুট হেডার (1 পৃষ্ঠা) 1
কার্নেল (l পৃষ্ঠা) l = ( kernel_size + page_size - 1) / page_size
রামডিস্ক (মি পৃষ্ঠা) m = ( ramdisk_size + page_size - 1) / page_size
দ্বিতীয় পর্যায়ের বুটলোডার (n পৃষ্ঠা) n = ( second_size + page_size - 1) / page_size
পুনরুদ্ধার DTBO বা ACPIO (ও পৃষ্ঠা) o = ( recovery_[dtbo|acpio]_size + page_size - 1) / page_size

বুট ইমেজ হেডার ভার্সন এবং ওভারলে ইমেজ পাথ নির্দিষ্ট করার জন্য mkbootimg টুল আর্গুমেন্টের বিস্তারিত জানার জন্য, বুট ইমেজ হেডার ভার্সনিং দেখুন।

DTBO বাস্তবায়ন

নন-A/B ডিভাইসগুলি 9 বা তার বেশি চলমান রিকভারি ইমেজের recovery_dtbo সেকশনকে পপুলেট করতে পারে। recovery.imgrecovery_dtbo ইমেজ অন্তর্ভুক্ত করতে, ডিভাইস BoardConfig.mk এ:

  • কনফিগারেশন BOARD_INCLUDE_RECOVERY_DTBO true সেট করুন:

     BOARD_INCLUDE_RECOVERY_DTBO := true
    
  • বুট ইমেজ হেডার সংস্করণ নির্দিষ্ট করতে BOARD_MKBOOTIMG_ARGS ভেরিয়েবলটি প্রসারিত করুন:

    BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • নিশ্চিত করুন যে BOARD_PREBUILT_DTBOIMAGE ভেরিয়েবলটি DTBO চিত্রের পথে সেট করা আছে। অ্যান্ড্রয়েড বিল্ড সিস্টেম রিকভারি ইমেজ তৈরির সময় mkbootimg টুলের recovery_dtbo আর্গুমেন্ট সেট করতে ভেরিয়েবল ব্যবহার করে।

BOARD_INCLUDE_RECOVERY_DTBO , BOARD_MKBOOTIMG_ARGS , এবং BOARD_PREBUILT_DTBOIMAGE ভেরিয়েবল সঠিকভাবে সেট করা থাকলে, Android বিল্ড সিস্টেমে BOARD_PREBUILT_DTBOIMAGE recovery.img দ্বারা নির্দিষ্ট করা DTBO অন্তর্ভুক্ত থাকে।

ACPIO বাস্তবায়ন

Android 9 বা উচ্চতর সংস্করণে চলমান নন-A/B ডিভাইসগুলি একটি ACPIO ওভারলে চিত্র ব্যবহার করতে পারে (একটি DTBO চিত্রের পরিবর্তে) এবং পুনরুদ্ধার চিত্রটির recovery_acpio বিভাগ ( recovery_dtbo বিভাগের পরিবর্তে) পূরণ করতে পারে৷ recovery.imgrecovery_acpio ইমেজ অন্তর্ভুক্ত করতে, ডিভাইস BoardConfig.mk এ:

  • কনফিগারেশন BOARD_INCLUDE_RECOVERY_ACPIO true সেট করুন:

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • বুট ইমেজ হেডার সংস্করণ নির্দিষ্ট করতে BOARD_MKBOOTIMG_ARGS ভেরিয়েবল প্রসারিত করুন। রিকভারি ACPIO সমর্থন করার জন্য ভেরিয়েবলটি অবশ্যই 1 এর থেকে বেশি বা সমান হতে হবে।

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • নিশ্চিত করুন যে BOARD_RECOVERY_ACPIO ভেরিয়েবল ACPIO চিত্রের পাথে সেট করা আছে। অ্যান্ড্রয়েড বিল্ড সিস্টেম রিকভারি ইমেজ তৈরির সময় mkbootimg টুলের recovery_acpio আর্গুমেন্ট সেট করতে ভেরিয়েবল ব্যবহার করে।

যদি BOARD_INCLUDE_RECOVERY_ACPIO , BOARD_MKBOOTIMG_ARGS , এবং BOARD_RECOVERY_ACPIO ভেরিয়েবল সঠিকভাবে সেট করা থাকে, তাহলে Android বিল্ড সিস্টেমে BOARD_RECOVERY_ACPIO ভেরিয়েবল দ্বারা নির্দিষ্ট করা ACPIO অন্তর্ভুক্ত recovery.img