নন-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.img এ recovery_dtbo ইমেজ অন্তর্ভুক্ত করতে, ডিভাইস BoardConfig.mk এ:
কনফিগারেশন
BOARD_INCLUDE_RECOVERY_DTBOtrueসেট করুন: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 ভেরিয়েবল দ্বারা নির্দিষ্ট করা DTBO অন্তর্ভুক্ত থাকে recovery.img
ACPIO প্রয়োগ করুন
Android 9 বা উচ্চতর সংস্করণে চলমান নন-A/B ডিভাইসগুলি একটি ACPIO ওভারলে চিত্র ব্যবহার করতে পারে (একটি DTBO চিত্রের পরিবর্তে) এবং পুনরুদ্ধার চিত্রটির recovery_acpio বিভাগ ( recovery_dtbo বিভাগের পরিবর্তে) পূরণ করতে পারে৷ recovery.img এ recovery_acpio ইমেজ অন্তর্ভুক্ত করতে, ডিভাইস BoardConfig.mk এ:
কনফিগারেশন
BOARD_INCLUDE_RECOVERY_ACPIOtrueসেট করুন: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