নন-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 ডিভাইসগুলি এখনও একটি ডেডিকেটেড পুনরুদ্ধার চিত্র ব্যবহার করতে পারে৷নন-A/B ডিভাইস যেগুলি Android 11 বা উচ্চতর সংস্করণের সাথে লঞ্চ হচ্ছে এবং 3-এর বুট হেডার সংস্করণ ব্যবহার করছে সেগুলি পুনরুদ্ধার চিত্রের জন্য আলাদাভাবে 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_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
অন্তর্ভুক্ত থাকে।
ACPIO বাস্তবায়ন
Android 9 বা উচ্চতর সংস্করণে চলমান নন-A/B ডিভাইসগুলি একটি ACPIO ওভারলে চিত্র ব্যবহার করতে পারে (একটি DTBO চিত্রের পরিবর্তে) এবং পুনরুদ্ধার চিত্রটির recovery_dtbo
বিভাগ ( recovery_acpio
বিভাগের পরিবর্তে) পূরণ করতে পারে। recovery.img
এ recovery_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
ভেরিয়েবল দ্বারা নির্দিষ্ট করা recovery.img
অন্তর্ভুক্ত থাকে।