ডিটিবি ছবি

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

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

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

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

ডিটিবি ছবির ফরম্যাট

অ্যান্ড্রয়েড ১০ এবং এর পরবর্তী সংস্করণগুলোতে, ডিটিবি (DTB) ইমেজকে অবশ্যই নিম্নলিখিত ফরম্যাটগুলোর মধ্যে যেকোনো একটি ব্যবহার করতে হবে:

  • ডিটি ব্লবগুলো একটির পর একটি সংযুক্ত করা হয়। বুটলোডার প্রতিটি এফডিটি হেডারের totalsize ফিল্ড ব্যবহার করে সংশ্লিষ্ট ব্লবটি পড়ে এবং পার্স করে।

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

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

অ্যান্ড্রয়েড ১০ চালিত ডিভাইসগুলো বুট ইমেজে ডিটিবি ইমেজ অন্তর্ভুক্ত করতে পারে। এর ফলে কার্নেলের image.gz ফাইলে ডিটিবি ইমেজ যুক্ত করার জন্য অ্যান্ড্রয়েডের আর স্ক্রিপ্ট সমর্থনের প্রয়োজন হয় না, এবং ডিটিবি-র অবস্থান যাচাই (ও মানসম্মত) করার জন্য ভেন্ডর টেস্ট স্যুট (VTS) টেস্ট ব্যবহার করা সম্ভব হয়।

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

বুট ইমেজ কাঠামো

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

বুট ইমেজ বিভাগ পৃষ্ঠার সংখ্যা
বুট হেডার (১ পৃষ্ঠা)
কার্নেল (l পৃষ্ঠা) l = ( kernel_size + page_size - 1) / page_size
র‍্যামডিস্ক (m পৃষ্ঠা) m = ( ramdisk_size + page_size - 1) / page_size
দ্বিতীয় পর্যায়ের বুটলোডার (n পৃষ্ঠা) n = ( second_size + page_size - 1) / page_size
পুনরুদ্ধার DTBO (o পৃষ্ঠা) o = ( recovery_dtbo_size + page_size - 1) / page_size
ডিটিবি (পি পৃষ্ঠা) p = ( dtb_size + page_size - 1) / page_size

ডিটিবি ছবির পথ

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

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

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

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

BOARD_INCLUDE_DTB_IN_BOOTIMG := true

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

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 রিপোর্ট করে।