डीटीओ लागू करें

डिवाइस ट्री ओवरले (डीटीओ) लागू करने के लिए, डिवाइस ट्री (डीटी) को बांटना, बनाना, अलग-अलग हिस्सों में बांटना, और चलाना होता है. लागू करने के बाद, आपको दोनों डीटी के बीच काम करने की सुविधा बनाए रखनी होगी. साथ ही, हर डीटी के सेगमेंट की सुरक्षा को पक्का करने के लिए एक रणनीति तय करनी होगी.

डीटी को बांटना

डीटी को दो हिस्सों में बांटकर शुरुआत करें:

  • मुख्य DT. SoC वेंडर की ओर से दिए गए, सिर्फ़ SoC वाला हिस्सा और डिफ़ॉल्ट कॉन्फ़िगरेशन.
  • ओवरले डीटी. डिवाइस के हिसाब से कॉन्फ़िगरेशन, जो ओडीएम/ओईएम की ओर से दिए जाते हैं.

डीटी को बांटने के बाद, आपको यह पक्का करना होगा कि मुख्य डीटी और ओवरले डीटी के बीच काम करने की सुविधा हो. इससे मुख्य डीटी और ओवरले डीटी को मर्ज करने पर, डिवाइस के लिए पूरा डीटी बन जाता है. डीटीओ के फ़ॉर्मैट और नियमों के बारे में जानने के लिए, डीटीओ सिंटैक्स देखें. एक से ज़्यादा डीटी के बारे में जानकारी पाने के लिए, एक से ज़्यादा डीटी का इस्तेमाल करना लेख पढ़ें.

मुख्य और ओवरले डीटी बनाना

मुख्य डेटाटेंप्लेट बनाने के लिए:

  1. मुख्य DT .dts को .dtb फ़ाइल में कंपाइल करें.
  2. .dtb फ़ाइल को बूटलोडर के रनटाइम में ऐक्सेस किए जा सकने वाले पार्टीशन में फ़्लैश करें. इस बारे में ज़्यादा जानकारी [Partition DTs](#partition) में दी गई है.

ओवरले डीटी बनाने के लिए:

  1. ओवरले DT .dts को .dtbo फ़ाइल में कंपाइल करें. यह फ़ाइल फ़ॉर्मैट, फ़्लैट किए गए DT के तौर पर फ़ॉर्मैट की गई .dtb फ़ाइल जैसा ही है. हालांकि, फ़ाइल एक्सटेंशन अलग होने की वजह से, यह मुख्य DT से अलग होती है.
  2. .dtbo फ़ाइल को बूटलोडर के रनटाइम में ऐक्सेस किए जा सकने वाले पार्टीशन में फ़्लैश करें. इस बारे में ज़्यादा जानकारी [Partition DTs](#partition) में दी गई है.

डीटीसी की मदद से कंपाइल करने और होस्ट पर डीटीओ के नतीजों की पुष्टि करने के बारे में ज़्यादा जानने के लिए, कंपाइल और पुष्टि करें लेख पढ़ें.

पार्टीशन डीटी

.dtb और .dtbo डालने के लिए, फ़्लैश मेमोरी में बूटलोडर के रनटाइम में ऐक्सेस की जा सकने वाली और भरोसेमंद जगह तय करें.

मुख्य डीटी के लिए जगहों के उदाहरण:

  • बूट पार्टीशन का हिस्सा, जो कि kernel (image.gz) में जोड़ा जाता है
  • अलग-अलग डीटी ब्लॉब (.dtb) को खास पार्टीशन (dtb) में सेव करना

ओवरले डीटी के लिए जगहों के उदाहरण:

पहली इमेज. .dtbo को किसी odm पार्टीशन में डालें. ऐसा सिर्फ़ तब करें, जब आपके बूटलोडर में, किसी odm पार्टीशन के फ़ाइल सिस्टम से डेटा लोड करने की सुविधा हो.

दूसरी इमेज. .dtbo को किसी यूनीक पार्टीशन में डालें, जैसे कि dtbo पार्टीशन.

ध्यान दें: ओवरले DT partition का साइज़, डिवाइस और मुख्य DT ब्लॉब में किए जाने वाले बदलावों की संख्या पर निर्भर करता है. आम तौर पर, 8 एमबी का स्टोरेज काफ़ी होता है. साथ ही, ज़रूरत पड़ने पर, आने वाले समय में स्टोरेज को बढ़ाया जा सकता है.

बिना किसी रुकावट के (A/B) अपडेट की सुविधा वाले डिवाइसों के लिए, A/B मुख्य DT और ओवरले DT पार्टिशन:

तीसरी इमेज. DTBO पार्टीशन A/B, पहला उदाहरण.

चौथी इमेज. DTBO पार्टीशन A/B, दूसरा उदाहरण.

बूटलोडर में चलाना

चलाने के लिए:

पांचवीं इमेज. बूटलोडर में डीटीओ के लिए, आम तौर पर रनटाइम लागू करना.

  1. .dtb को स्टोरेज से मेमोरी में लोड करें.
  2. .dtbo को स्टोरेज से मेमोरी में लोड करें.
  3. मर्ज किए गए डेटाटेंप्लेट के तौर पर .dtb को .dtbo के साथ ओवरले करें.
  4. मर्ज किए गए DT के मेमोरी पते को ध्यान में रखते हुए, कर्नेल शुरू करें.

अन्य डिवाइसों के साथ काम करना

SoC वेंडर से मिलने वाले मुख्य DTB को, DTBO के लिए एपीआई के तौर पर माना जाता है. डीटी को SoC के सामान्य हिस्से और डिवाइस के हिसाब से बने हिस्से में बांटने के बाद, आपको आने वाले समय में दोनों हिस्सों को एक-दूसरे के साथ काम करने लायक रखना होगा. इनमें ये शामिल हैं:

  • मुख्य डीटी में डीटी की परिभाषा. उदाहरण के लिए, नोड, प्रॉपर्टी, और लेबल. मुख्य DT में डेफ़िनिशन में होने वाले किसी भी बदलाव से, ओवरले DT में बदलाव हो सकते हैं. उदाहरण के लिए, मुख्य DT में किसी नोड के नाम को ठीक करने के लिए, ओवरले DT में बदलाव से बचने के लिए, ओरिजनल नोड के नाम से मैप होने वाला "उपनाम" लेबल तय करें.
  • डीटी स्टोर की जगह को ओवरले करें. उदाहरण के लिए, पार्टीशन का नाम, स्टोर का फ़ॉर्मैट.

सुरक्षा की गारंटी

बूटलोडर को यह पक्का करना होगा कि DTB या DTBO सुरक्षित हो, उसमें कोई बदलाव न किया गया हो, और वह खराब न हो. डीटीबी या डीटीबीओ को सुरक्षित करने के लिए, किसी भी तरीके का इस्तेमाल किया जा सकता है. उदाहरण के लिए, VBoot 1.0 में बूट इमेज का हस्ताक्षर या VBoot 2.0 में एवीबी का हैश फ़ुटर.

  • अगर DTB या DTBO किसी यूनीक पार्टीशन में है, तो उस पार्टीशन को AVB की ट्रस्ट चेन में जोड़ा जा सकता है. ट्रस्ट चेन, हार्डवेयर से सुरक्षित रूट ऑफ़ ट्रस्ट से शुरू होती है और बूटलोडर पर जाती है. बूटलोडर, DTB या DTBO पार्टीशन के पूरी तरह सुरक्षित और सही होने की पुष्टि करता है.
  • अगर DTB या DTBO किसी मौजूदा पार्टीशन (जैसे, odm पार्टिशन) में है, तो वह पार्टीशन AVB की ट्रस्ट चेन में होना चाहिए. (DTBO partition could share a public key with odm partition).

ज़्यादा जानकारी के लिए, पुष्टि किए गए बूट लेख पढ़ें.