ডিটিবি ছবি

অ্যান্ড্রয়েড বাস্তবায়নে বুটলোডার দ্বারা ব্যবহারের জন্য একটি ডিভাইস ট্রি ব্লব (DTB) চিত্র অন্তর্ভুক্ত থাকতে পারে। DTB ইমেজের অবস্থান (এবং DTB ইমেজ প্যারামিটার নির্দিষ্ট করার বিকল্প) Android রিলিজের মধ্যে আলাদা।

  • অ্যান্ড্রয়েড 11-এ, জেনেরিক কার্নেল ইমেজ (GKI) ব্যবহার করা ডিভাইসগুলিকে অবশ্যই বিক্রেতা বুট পার্টিশন সমর্থন করতে হবে, যাতে বুট পার্টিশন থেকে স্থানান্তরিত সমস্ত বিক্রেতা-নির্দিষ্ট তথ্য অন্তর্ভুক্ত থাকে। যেহেতু DTB চিত্রটিতে বিক্রেতা-নির্দিষ্ট ডেটা রয়েছে, এটি এখন বিক্রেতা বুট পার্টিশনের অংশ। DTB ইমেজ প্যারামিটার নির্দিষ্ট করতে, ভেন্ডর বুট হেডার দেখুন।

  • অ্যান্ড্রয়েড 10-এ, ডিভাইসগুলি বুট পার্টিশনে DTB চিত্র অন্তর্ভুক্ত করতে পারে। DTB ইমেজ প্যারামিটার নির্দিষ্ট করতে, বুট ইমেজে DTB ইমেজ অন্তর্ভুক্ত করা দেখুন।

  • অ্যান্ড্রয়েড 9 এবং তার নিচের সংস্করণে, ডিটিবি ইমেজটি নিজস্ব পার্টিশনে থাকতে পারে বা কার্নেল + ডিটিবি ইমেজ তৈরি করতে কার্নেল image.gz এ যুক্ত করা যেতে পারে (যা পরে boot.img তৈরি করতে mkbootimg এ পাঠানো হয়)।

DTB ইমেজ ফরম্যাট

অ্যান্ড্রয়েড 10 এবং উচ্চতর সংস্করণে, DTB চিত্রটি অবশ্যই নিম্নলিখিত ফর্ম্যাটগুলির মধ্যে একটি ব্যবহার করতে হবে:

  • ডিটি ব্লব একের পর এক জড়ো হচ্ছে। বুটলোডার সংশ্লিষ্ট ব্লব পড়তে এবং পার্স করতে প্রতিটি FDT শিরোলেখের totalsize ক্ষেত্র ব্যবহার করে।

  • DTB/DTBO পার্টিশন। বুটলোডারের কাছে dt_table_entry struct ( id , rev , এবং custom ক্ষেত্র রয়েছে) পরীক্ষা করে সঠিক DT ব্লব নির্বাচন করার একটি কার্যকর উপায় রয়েছে যা এন্ট্রির জন্য হার্ডওয়্যার সনাক্তকারী তথ্য ধারণ করতে পারে। বিস্তারিত জানার জন্য, DTB/DTBO পার্টিশন দেখুন।

বুট ইমেজে DTB ইমেজ অন্তর্ভুক্ত করুন

Android 10 চালিত ডিভাইসগুলি বুট ছবিতে DTB চিত্র অন্তর্ভুক্ত করতে পারে। এটি কার্নেলে image.gz এ DTB ইমেজ যুক্ত করে এমন স্ক্রিপ্ট সমর্থন করার জন্য Android-এর প্রয়োজনীয়তা দূর করে এবং DTB প্লেসমেন্ট যাচাই (এবং মানসম্মত) করতে ভেন্ডর টেস্ট স্যুট (VTS) পরীক্ষার ব্যবহার সক্ষম করে।

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

বুট ইমেজ গঠন

Android 10 চালিত ডিভাইসগুলিতে নিম্নলিখিত বুট চিত্র কাঠামো ব্যবহার করে একটি DTB চিত্র অন্তর্ভুক্ত করতে পারে।

বুট ইমেজ বিভাগ পৃষ্ঠার সংখ্যা
বুট হেডার (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 (ও পৃষ্ঠা) o = ( recovery_dtbo_size + page_size - 1) / page_size
DTB (p পৃষ্ঠা) p = ( dtb_size + page_size - 1) / page_size

DTB ছবির পথ

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

যুক্তি বর্ণনা
dtb বুট/পুনরুদ্ধার চিত্রগুলিতে অন্তর্ভুক্ত করার জন্য DTB চিত্রের পথ।
dtb_offset base আর্গুমেন্টে যোগ করা হলে, চূড়ান্ত ডিভাইস ট্রির জন্য ভৌত লোড ঠিকানা প্রদান করে। উদাহরণ স্বরূপ, যদি base আর্গুমেন্ট 0x10000000 হয় এবং dtb_offset আর্গুমেন্ট 0x01000000 হয়, বুট ইমেজ হেডারে dtb_addr_field 0x11000000 হিসাবে পপুলেট করা হয়।

বোর্ড কনফিগার ভেরিয়েবল BOARD_PREBUILT_DTBIMAGE_DIR অবশ্যই DTB চিত্রের পথ নির্দিষ্ট করতে ব্যবহার করতে হবে। এক্সটেনশন *.dtb সহ একাধিক ফাইল BOARD_PREBUILT_DTBIMAGE_DIR ডিরেক্টরিতে উপস্থিত থাকলে, Android বিল্ড সিস্টেম বুট ইমেজ তৈরিতে ব্যবহৃত চূড়ান্ত DTB চিত্র তৈরি করতে ফাইলগুলিকে সংযুক্ত করে।

BOARD_PREBUILT_DTBIMAGE_DIR দ্বারা নির্দিষ্ট করা ডিরেক্টরি থেকে DTB ইমেজ সহ mkbootimg.py তে আর্গুমেন্ট dtb পাস করতে, বোর্ড কনফিগার ভেরিয়েবল BOARD_INCLUDE_DTB_IN_BOOTIMG অবশ্যই true সেট করতে হবে। যেমন:

BOARD_INCLUDE_DTB_IN_BOOTIMG := true

আপনি অন্যান্য অফসেট এবং হেডার সংস্করণের সাথে BOARD_MKBOOTIMG_ARGS বোর্ড কনফিগার ভেরিয়েবলে dtb_offset আর্গুমেন্ট যোগ করতে পারেন। যেমন:

BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --dtb_offset $(BOARD_DTB_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)

বুটলোডার সমর্থন

Android 10 চালিত ডিভাইসগুলিতে VTS সফলভাবে চালানোর জন্য, বুটলোডারকে অবশ্যই আপডেট হওয়া বুট চিত্র সমর্থন করতে হবে এবং নির্বাচিত ডিভাইস ট্রি (DT) এর সূচক নির্দেশ করতে androidboot.dtb_idx কার্নেল কমান্ড লাইন প্যারামিটার যোগ করতে হবে। আপনি শুধুমাত্র একটি (1) সূচক নির্দিষ্ট করতে পারেন। উদাহরণ স্বরূপ, androidboot.dtb_idx=N প্যারামিটারটি বুট ইমেজে উপস্থিত DTB-এর সেট থেকে বুটলোডার দ্বারা নির্বাচিত ডিভাইস ট্রির শূন্য-ভিত্তিক সূচক হিসাবে N রিপোর্ট করে।

,

অ্যান্ড্রয়েড বাস্তবায়নে বুটলোডার দ্বারা ব্যবহারের জন্য একটি ডিভাইস ট্রি ব্লব (DTB) চিত্র অন্তর্ভুক্ত থাকতে পারে। DTB ইমেজের অবস্থান (এবং DTB ইমেজ প্যারামিটার নির্দিষ্ট করার বিকল্প) Android রিলিজের মধ্যে আলাদা।

  • অ্যান্ড্রয়েড 11-এ, জেনেরিক কার্নেল ইমেজ (GKI) ব্যবহার করা ডিভাইসগুলিকে অবশ্যই বিক্রেতা বুট পার্টিশন সমর্থন করতে হবে, যাতে বুট পার্টিশন থেকে স্থানান্তরিত সমস্ত বিক্রেতা-নির্দিষ্ট তথ্য অন্তর্ভুক্ত থাকে। যেহেতু DTB চিত্রটিতে বিক্রেতা-নির্দিষ্ট ডেটা রয়েছে, এটি এখন বিক্রেতা বুট পার্টিশনের অংশ। DTB ইমেজ প্যারামিটার নির্দিষ্ট করতে, ভেন্ডর বুট হেডার দেখুন।

  • অ্যান্ড্রয়েড 10-এ, ডিভাইসগুলি বুট পার্টিশনে DTB চিত্র অন্তর্ভুক্ত করতে পারে। DTB ইমেজ প্যারামিটার নির্দিষ্ট করতে, বুট ইমেজে DTB ইমেজ অন্তর্ভুক্ত করা দেখুন।

  • অ্যান্ড্রয়েড 9 এবং তার নিচের সংস্করণে, ডিটিবি ইমেজটি নিজস্ব পার্টিশনে থাকতে পারে বা কার্নেল + ডিটিবি ইমেজ তৈরি করতে কার্নেল image.gz এ যুক্ত করা যেতে পারে (যা পরে boot.img তৈরি করতে mkbootimg এ পাঠানো হয়)।

DTB ইমেজ ফরম্যাট

অ্যান্ড্রয়েড 10 এবং উচ্চতর সংস্করণে, DTB চিত্রটি অবশ্যই নিম্নলিখিত ফর্ম্যাটগুলির মধ্যে একটি ব্যবহার করতে হবে:

  • ডিটি ব্লব একের পর এক জড়ো হচ্ছে। বুটলোডার সংশ্লিষ্ট ব্লব পড়তে এবং পার্স করতে প্রতিটি FDT শিরোলেখের totalsize ক্ষেত্র ব্যবহার করে।

  • DTB/DTBO পার্টিশন। বুটলোডারের কাছে dt_table_entry struct ( id , rev , এবং custom ক্ষেত্র রয়েছে) পরীক্ষা করে সঠিক DT ব্লব নির্বাচন করার একটি কার্যকর উপায় রয়েছে যা এন্ট্রির জন্য হার্ডওয়্যার সনাক্তকারী তথ্য ধারণ করতে পারে। বিস্তারিত জানার জন্য, DTB/DTBO পার্টিশন দেখুন।

বুট ইমেজে DTB ইমেজ অন্তর্ভুক্ত করুন

Android 10 চালিত ডিভাইসগুলি বুট ছবিতে DTB চিত্র অন্তর্ভুক্ত করতে পারে। এটি কার্নেলে image.gz এ DTB ইমেজ যুক্ত করে এমন স্ক্রিপ্ট সমর্থন করার জন্য Android-এর প্রয়োজনীয়তা দূর করে এবং DTB প্লেসমেন্ট যাচাই (এবং মানসম্মত) করতে ভেন্ডর টেস্ট স্যুট (VTS) পরীক্ষার ব্যবহার সক্ষম করে।

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

বুট ইমেজ গঠন

Android 10 চালিত ডিভাইসগুলিতে নিম্নলিখিত বুট চিত্র কাঠামো ব্যবহার করে একটি DTB চিত্র অন্তর্ভুক্ত করতে পারে।

বুট ইমেজ বিভাগ পৃষ্ঠার সংখ্যা
বুট হেডার (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 (ও পৃষ্ঠা) o = ( recovery_dtbo_size + page_size - 1) / page_size
DTB (p পৃষ্ঠা) p = ( dtb_size + page_size - 1) / page_size

DTB ছবির পথ

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

যুক্তি বর্ণনা
dtb বুট/পুনরুদ্ধার চিত্রগুলিতে অন্তর্ভুক্ত করার জন্য DTB চিত্রের পথ।
dtb_offset base আর্গুমেন্টে যোগ করা হলে, চূড়ান্ত ডিভাইস ট্রির জন্য ভৌত লোড ঠিকানা প্রদান করে। উদাহরণ স্বরূপ, যদি base আর্গুমেন্ট 0x10000000 হয় এবং dtb_offset আর্গুমেন্ট 0x01000000 হয়, বুট ইমেজ হেডারে dtb_addr_field 0x11000000 হিসাবে পপুলেট করা হয়।

বোর্ড কনফিগার ভেরিয়েবল BOARD_PREBUILT_DTBIMAGE_DIR অবশ্যই DTB চিত্রের পথ নির্দিষ্ট করতে ব্যবহার করতে হবে। এক্সটেনশন *.dtb সহ একাধিক ফাইল BOARD_PREBUILT_DTBIMAGE_DIR ডিরেক্টরিতে উপস্থিত থাকলে, Android বিল্ড সিস্টেম বুট ইমেজ তৈরিতে ব্যবহৃত চূড়ান্ত DTB চিত্র তৈরি করতে ফাইলগুলিকে সংযুক্ত করে।

BOARD_PREBUILT_DTBIMAGE_DIR দ্বারা নির্দিষ্ট করা ডিরেক্টরি থেকে DTB ইমেজ সহ mkbootimg.py তে আর্গুমেন্ট dtb পাস করতে, বোর্ড কনফিগার ভেরিয়েবল BOARD_INCLUDE_DTB_IN_BOOTIMG অবশ্যই true সেট করতে হবে। যেমন:

BOARD_INCLUDE_DTB_IN_BOOTIMG := true

আপনি অন্যান্য অফসেট এবং হেডার সংস্করণের সাথে BOARD_MKBOOTIMG_ARGS বোর্ড কনফিগার ভেরিয়েবলে dtb_offset আর্গুমেন্ট যোগ করতে পারেন। যেমন:

BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --dtb_offset $(BOARD_DTB_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)

বুটলোডার সমর্থন

Android 10 চালিত ডিভাইসগুলিতে VTS সফলভাবে চালানোর জন্য, বুটলোডারকে অবশ্যই আপডেট হওয়া বুট চিত্র সমর্থন করতে হবে এবং নির্বাচিত ডিভাইস ট্রি (DT) এর সূচক নির্দেশ করতে androidboot.dtb_idx কার্নেল কমান্ড লাইন প্যারামিটার যোগ করতে হবে। আপনি শুধুমাত্র একটি (1) সূচক নির্দিষ্ট করতে পারেন। উদাহরণ স্বরূপ, androidboot.dtb_idx=N প্যারামিটারটি বুট ইমেজে উপস্থিত DTB-এর সেট থেকে বুটলোডার দ্বারা নির্বাচিত ডিভাইস ট্রির শূন্য-ভিত্তিক সূচক হিসাবে N রিপোর্ট করে।