ডিভাইস ট্রি ওভারলে (DTO) বাস্তবায়নের মধ্যে ডিভাইস ট্রি (DT) ভাগ করা, বিল্ড করা, পার্টিশন করা এবং রান করা অন্তর্ভুক্ত। একটি কার্যকর বাস্তবায়ন তৈরি হয়ে গেলে, আপনাকে অবশ্যই দুটি DT-এর মধ্যে সামঞ্জস্য বজায় রাখতে হবে এবং প্রতিটি DT পার্টিশনের নিরাপত্তা নিশ্চিত করার জন্য একটি কৌশল নির্ধারণ করতে হবে।
DT ভাগ করুন
প্রথমে DT-কে দুটি ভাগে ভাগ করে নিন:
- প্রধান ডিটি । এটি শুধুমাত্র এসওসি-সম্পর্কিত অংশ এবং এসওসি বিক্রেতা কর্তৃক প্রদত্ত ডিফল্ট কনফিগারেশন।
- ওভারলে ডিটি । ওডিএম/ওইএম কর্তৃক প্রদত্ত ডিভাইস-নির্দিষ্ট কনফিগারেশনসমূহ।
DT-গুলো ভাগ করার পর, আপনাকে অবশ্যই মূল DT এবং ওভারলে DT-এর মধ্যে সামঞ্জস্য নিশ্চিত করতে হবে, যাতে মূল DT এবং ওভারলে DT-কে একত্রিত করলে ডিভাইসটির জন্য একটি সম্পূর্ণ DT তৈরি হয়। DTO ফরম্যাট এবং নিয়মাবলী সম্পর্কে বিস্তারিত জানতে, DTO সিনট্যাক্স দেখুন। একাধিক DT সম্পর্কে বিস্তারিত জানতে, একাধিক DT-এর ব্যবহার দেখুন।
মূল এবং ওভারলে ডিটি তৈরি করুন
প্রধান ডিটি তৈরি করতে:
- মূল DT
.dtsফাইলটিকে কম্পাইল করে একটি.dtbফাইল তৈরি করুন। -
.dtbফাইলটি একটি বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য পার্টিশনে ফ্ল্যাশ করুন ([পার্টিশন ডিটি](#partition) অংশে বিস্তারিত দেখুন)।
ওভারলে ডিটি তৈরি করতে:
- ওভারলে ডিটি (
.dtsফাইলটিকে কম্পাইল করে একটি.dtboফাইল তৈরি করুন। যদিও এই ফাইল ফরম্যাটটি ফ্ল্যাটেনড ডিটি হিসেবে ফরম্যাট করা.dtbফাইলের মতোই, এর ভিন্ন ফাইল এক্সটেনশন এটিকে মূল ডিটি থেকে আলাদা করে। -
.dtboফাইলটি একটি বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য পার্টিশনে ফ্ল্যাশ করুন ([পার্টিশন ডিটি](#partition) অংশে বিস্তারিত দেখুন)।
DTC ব্যবহার করে কম্পাইল করা এবং হোস্টে DTO ফলাফল যাচাই করার বিস্তারিত তথ্যের জন্য, কম্পাইল এবং যাচাই দেখুন।
পার্টিশন ডিটি
.dtb এবং .dtbo ফাইলগুলো রাখার জন্য ফ্ল্যাশ মেমরিতে একটি বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য ও বিশ্বস্ত অবস্থান নির্ধারণ করুন।
প্রধান ডিটি-এর জন্য উদাহরণস্বরূপ অবস্থানসমূহ:
- বুট পার্টিশনের অংশ, কার্নেলের সাথে যুক্ত (
image.gz) - ডেডিকেটেড পার্টিশনে (
dtb) পৃথক ডিটি ব্লব (.dtb)
ওভারলে ডিটি-এর জন্য উদাহরণ অবস্থানসমূহ:

চিত্র ১। .dtbo ফাইলটিকে একটি odm পার্টিশনে রাখুন (এটি কেবল তখনই করুন, যদি আপনার বুটলোডারের odm পার্টিশনের ফাইলসিস্টেম থেকে ডেটা লোড করার সক্ষমতা থাকে)।

চিত্র ২। .dtbo ফাইলটিকে একটি স্বতন্ত্র পার্টিশনে রাখুন, যেমন একটি dtbo পার্টিশন।
দ্রষ্টব্য: ওভারলে ডিটি পার্টিশনের আকার ডিভাইস এবং মূল ডিটি ব্লবের উপরে প্রয়োজনীয় পরিবর্তনের পরিমাণের উপর নির্ভর করে। সাধারণত, ৮ মেগাবাইটই যথেষ্টের চেয়ে বেশি এবং ভবিষ্যতে প্রয়োজন হলে এর আকার বাড়ানোর সুযোগও থাকে।
যেসব ডিভাইস নির্বিঘ্ন (A/B) আপডেট সমর্থন করে, সেগুলোর ক্ষেত্রে মূল DT এবং ওভারলে DT পার্টিশনগুলোর মধ্যে A/B পরীক্ষা করুন:

চিত্র ৩. ডিটিবিও পার্টিশন এ/বি, উদাহরণ ১।

চিত্র ৪. ডিটিবিও পার্টিশন এ/বি, উদাহরণ ২।
বুটলোডারে চালান
দৌড়াতে:

চিত্র ৫. বুটলোডারে DTO-এর সাধারণ রানটাইম বাস্তবায়ন।
- স্টোরেজ থেকে
.dtbফাইলটি মেমরিতে লোড করুন। - স্টোরেজ থেকে
.dtboফাইলটি মেমরিতে লোড করুন। - একটি একীভূত ডিরেক্টরি তৈরি করতে
.dtboএর উপর.dtbফাইলটি ওভারলে করুন। - মার্জ করা ডিটি-এর মেমরি অ্যাড্রেস ব্যবহার করে কার্নেল চালু করুন।
সামঞ্জস্য বজায় রাখুন
মূল DTB (SoC ভেন্ডরের কাছ থেকে প্রাপ্ত) DTBO-গুলোর জন্য একটি API সারফেস হিসেবে গণ্য করা হয়। DT-কে একটি SoC-সাধারণ অংশ এবং একটি ডিভাইস-নির্দিষ্ট অংশে বিভক্ত করার পর, ভবিষ্যতে আপনাকে অবশ্যই এই দুটি অংশকে পারস্পরিকভাবে সামঞ্জস্যপূর্ণ রাখতে হবে, যার মধ্যে অন্তর্ভুক্ত রয়েছে:
- মূল ডিটি-তে ডিটি-র সংজ্ঞা দেওয়া হয়। যেমন, নোড, প্রোপার্টি, লেবেল। মূল ডিটি-তে সংজ্ঞার যেকোনো পরিবর্তন ওভারলে ডিটি-তেও পরিবর্তন আনতে পারে। উদাহরণস্বরূপ, মূল ডিটি-তে কোনো নোডের নাম সংশোধন করতে, মূল নোডের নামের সাথে ম্যাপ করে একটি 'এলিয়াস' লেবেল সংজ্ঞায়িত করুন (যাতে ওভারলে ডিটি-র পরিবর্তন এড়ানো যায়)।
- ডিটি স্টোরের অবস্থান ওভারলে করুন। যেমন, পার্টিশনের নাম, স্টোর ফরম্যাট।
নিরাপত্তা নিশ্চিত করুন
বুটলোডারকে অবশ্যই নিশ্চিত করতে হবে যে DTB বা DTBO সুরক্ষিত, অপরিবর্তিত এবং অক্ষত আছে। DTB বা DTBO সুরক্ষিত করার জন্য আপনি যেকোনো সমাধান ব্যবহার করতে পারেন, যেমন—VBoot 1.0-এর বুট ইমেজ সিগনেচার অথবা AVB HASH ফুটার (VBoot 2.0)।
- যদি DTB বা DTBO একটি স্বতন্ত্র পার্টিশনে থাকে, তবে আপনি সেই পার্টিশনটিকে AVB-এর ট্রাস্ট চেইনে যুক্ত করতে পারেন। ট্রাস্ট চেইনটি একটি হার্ডওয়্যার-সুরক্ষিত রুট অফ ট্রাস্ট থেকে শুরু হয়ে বুটলোডার পর্যন্ত যায়, যা DTB বা DTBO পার্টিশনের অখণ্ডতা এবং সত্যতা যাচাই করে।
- যদি DTB বা DTBO কোনো বিদ্যমান পার্টিশনে (যেমন
odmপার্টিশন) থাকে, তাহলে সেই পার্টিশনটি AVB-এর ট্রাস্ট চেইনে থাকা উচিত। (DTBO পার্টিশনodmপার্টিশনের সাথে একটি পাবলিক কী শেয়ার করতে পারে)।
বিস্তারিত জানতে ভেরিফাইড বুট দেখুন।