DTO প্রয়োগ করা

ডিভাইস ট্রি ওভারলে (DTO) প্রয়োগ করার মধ্যে ডিভাইস ট্রি (DT) ভাগ করা, তৈরি করা, পার্টিশন করা ও চালানো অন্তর্ভুক্ত। সঠিকভাবে প্রয়োগ করার পরে, আপনাকে অবশ্যই দুটি DT-র মধ্যে সামঞ্জস্য বজায় রাখতে হবে এবং প্রতিটি DT পার্টিশনের সুরক্ষা নিশ্চিত করার জন্য একটি কৌশল নির্ধারণ করতে হবে।

DT ভাগ করুন

DT-কে দুটি ভাগে ভাগ করে শুরু করুন:

  • মূল DT. SoC-এর শুধুমাত্র অংশ এবং ডিফল্ট কনফিগারেশন, যা SoC ভেন্ডর প্রদান করে।
  • ওভারলে DT. ODM/OEM-এর দেওয়া ডিভাইস-নির্দিষ্ট কনফিগারেশন।

DT ভাগ করার পরে, আপনাকে অবশ্যই মূল DT এবং ওভারলে DT-এর মধ্যে সামঞ্জস্য নিশ্চিত করতে হবে যাতে মূল DT এবং ওভারলে DT মার্জ করার ফলে ডিভাইসের জন্য একটি সম্পূর্ণ DT তৈরি হয়। DTO ফর্ম্যাট ও নিয়ম সম্পর্কে আরও জানতে, DTO সিনট্যাক্স দেখুন। একাধিক DT সম্পর্কে আরও জানতে, একাধিক DT ব্যবহার করুন লিঙ্কে যান।

মূল ও ওভারলে DT তৈরি করা

মূল DT তৈরি করতে:

  1. মূল DT .dts-কে .dtb ফাইলে কম্পাইল করুন।
  2. .dtb ফাইলটি বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য পার্টিশনে ফ্ল্যাশ করুন (বিস্তারিতভাবে [পার্টিশন DTs](#partition))-এ বলা আছে)।

ওভারলে DT তৈরি করতে:

  1. ওভারলে DT .dts-কে .dtbo ফাইলে কম্পাইল করুন। এই ফাইল ফর্ম্যাটটি ফ্ল্যাটেন করা DT হিসেবে ফর্ম্যাট করা .dtb ফাইলের মতোই, তবে আলাদা ফাইল এক্সটেনশন এটিকে প্রধান DT থেকে আলাদা করে।
  2. .dtbo ফাইলটি বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য পার্টিশনে ফ্ল্যাশ করুন (বিস্তারিতভাবে [পার্টিশন DTs](#partition))-এ বলা আছে)।

DTC-এর সাথে কম্পাইল করা এবং হোস্টে DTO ফলাফল যাচাই করার বিষয়ে বিস্তারিত জানতে, কম্পাইল ও যাচাই করুন দেখুন।

পার্টিশন DT

.dtb এবং .dtbo রাখার জন্য ফ্ল্যাশ মেমরিতে বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য এবং বিশ্বস্ত লোকেশন নির্ধারণ করুন।

মূল DT-র জন্য লোকেশনের উদাহরণ:

  • বুট পার্টিশনের অংশ, কার্নেলের সাথে যুক্ত (image.gz)
  • ডেডিকেটেড পার্টিশনে (dtb) আলাদা DT ব্লব (.dtb)

ওভারলে DT-এর জন্য লোকেশনের উদাহরণ:

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

ছবি ২. .dtbo ফাইলটি dtbo পার্টিশনের মতো অনন্য পার্টিশনে রাখুন।

মনে রাখবেন: ওভারলে DT পার্টিশনের সাইজ ডিভাইসের উপর নির্ভর করে এবং মূল DT ব্লবের উপরে কতখানি পরিবর্তন করতে হবে তার উপর নির্ভর করে। সাধারণত, ৮ এমবি যথেষ্ট এবং ভবিষ্যতে প্রয়োজন হলে আরও জায়গা পাওয়া যায়।

যেসব ডিভাইসে সিমলেস (A/B) আপডেট কাজ করে, সেগুলির ক্ষেত্রে প্রধান DT এবং ওভারলে DT পার্টিশন:

ছবি ৩. DTBO পার্টিশন A/B, উদাহরণ ১।

ছবি ৪. DTBO পার্টিশন A/B, উদাহরণ ২।

বুটলোডারে চালান

রান করতে:

ছবি ৫. বুটলোডারে DTO-এর জন্য সাধারণ রানটাইম প্রয়োগ।

  1. স্টোরেজ থেকে মেমরিতে .dtb লোড করুন।
  2. স্টোরেজ থেকে মেমরিতে .dtbo লোড করুন।
  3. মার্জ করা DT হতে .dtbo-এর সাথে .dtb ওভারলে করুন।
  4. মার্জ করা DT-র মেমরি অ্যাড্রেস দেওয়া হলে কার্নেল চালু করুন।

মানানসই রাখা

প্রধান DTB (SoC ভেন্ডরের থেকে) DTBO-এর জন্য API সারফেস হিসেবে বিবেচিত হয়। DT-কে SoC-কমন অংশ এবং ডিভাইস-নির্দিষ্ট অংশে আলাদা করার পরে, আপনাকে ভবিষ্যতে দুটি অংশকে একে অপরের সাথে মানানসই রাখতে হবে, যার মধ্যে রয়েছে:

  • মূল DT-তে DT-র সংজ্ঞা। যেমন, নোড, প্রপার্টি, লেবেল। মূল DT-তে কোনও সংজ্ঞা পরিবর্তন হলে, ওভারলে DT-তে পরিবর্তন হতে পারে। যেমন, মূল DT-তে নোডের নাম সংশোধন করতে, "alias" লেবেল নির্ধারণ করুন যা আসল নোডের নামের সাথে ম্যাপ করে (ওভারলে DT-তে পরিবর্তন এড়াতে)।
  • ওভারলে DT স্টোর লোকেশন। যেমন, পার্টিশনের নাম, store format.

নিরাপত্তা নিশ্চিত করা

বুটলোডারকে অবশ্যই নিশ্চিত করতে হবে যে DTB বা DTBO সুরক্ষিত, অপরিবর্তিত এবং দুর্নীতিমুক্ত। DTB বা DTBO সুরক্ষিত করতে আপনি যেকোনও সমাধান ব্যবহার করতে পারেন, যেমন, VBoot 1.0-এ বুট ইমেজ সিগনেচার অথবা AVB হ্যাশ ফুটার (VBoot 2.0)।

  • DTB বা DTBO কোনও অনন্য পার্টিশনে থাকলে, আপনি সেই পার্টিশনটি AVB-এর ট্রাস্ট চেনে যোগ করতে পারেন। ট্রাস্ট চেইন হার্ডওয়্যার-সুরক্ষিত রুট অফ ট্রাস্ট থেকে শুরু হয় এবং বুটলোডার পর্যন্ত যায়, যা DTB বা DTBO পার্টিশনের ইন্টিগ্রিটি ও সত্যতা যাচাই করে।
  • DTB বা DTBO যদি আগে থেকে থাকা কোনও পার্টিশনে (যেমন odm পার্টিশন) থাকে, তাহলে সেই পার্টিশন AVB-এর ট্রাস্ট চেনে থাকতে হবে। (DTBO পার্টিশন odm পার্টিশনের সাথে পাবলিক কী শেয়ার করতে পারে)।

আরও জানতে, যাচাই করা বুট দেখুন।