एमटीई बूटलोडर समर्थन

एंड्रॉइड 13 बूटलोडर के लिए अनुरोधित एमटीई मोड को संचारित करने के लिए उपयोगकर्ता-स्थान के लिए एक एबीआई पेश करता है। इसका उपयोग उन डिवाइसों पर एमटीई को सक्षम करने के लिए किया जा सकता है जिनमें हार्डवेयर समर्थन है लेकिन डिफ़ॉल्ट रूप से सक्षम एमटीई के साथ शिप नहीं किया जाता है, या उन डिवाइसों पर एमटीई को अक्षम करने के लिए किया जा सकता है जो इसके साथ शिप करते हैं।

बूटलोडर समर्थन

इस ABI का समर्थन करने के लिए, आपके बूटलोडर को misc विभाजन से misc_memtag_message ( bootloader_message.h में परिभाषित) को पढ़ने की आवश्यकता है। यदि एक वैध misc_memtag_message पाया जाता है ( MISC_VIRTUAL_AB_MAGIC_HEADER मेल खाता है, और संस्करण संख्या समर्थित है), तो बूटलोडर गणना करता है

memtag = (default_memtag && !(misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_OFF)) ||
      misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG ||
      misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_ONCE

memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL ||
      misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE

default_memtag SKU के लिए डिफ़ॉल्ट मेमटैग चालू/बंद सेटिंग है। यदि memtag सत्य है, तो बूटलोडर एमटीई टैग आरक्षण सेट करता है, निचले अपवाद स्तरों में टैग जांच सक्षम करता है, और टैग आरक्षित क्षेत्र को डीटी के माध्यम से कर्नेल तक संचारित करता है। यदि memtag गलत है, तो बूटलोडर कर्नेल कमांड लाइन में Arm64.nomte जोड़ता है।

यदि memtag_kernel सत्य है, तो बूटलोडर kasan=on को कर्नेल कमांड लाइन में जोड़ता है।

बूटलोडर को प्रत्येक बूट पर MISC_MEMTAG_MODE_MEMTAG_ONCE और MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE को साफ़ करना होगा

यदि बूटलोडर fastboot oem mte समर्थन करता है, तो अन्य झंडों को संरक्षित करते हुए MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} को (1, 0, 0) और ऑफ (0, 0, 1) पर सेट करता है।

आपको यूजरस्पेस समर्थन के लिए mtectrl बाइनरी बनाने के लिए अपने उत्पाद को कॉन्फ़िगर करना चाहिए। फिर, सिस्टम को यह इंगित करने के लिए ro.arm64.memtag.bootctl_supported सिस्टम प्रॉपर्टी सेट करें कि आपका बूटलोडर मेमटैग संदेश का समर्थन करता है।

प्रयोक्ता इंटरफ़ेस

जब ro.arm64.memtag.bootctl_supported प्रॉपर्टी सेट की जाती है, तो डेवलपर विकल्प मेनू में एक बटन उपयोगकर्ता को एमटीई सक्षम होने पर एक बार रीबूट करने की अनुमति देता है। इसके लिए लक्षित दर्शक ऐप डेवलपर हैं जो एमटीई के साथ अपने ऐप का परीक्षण करना चाहते हैं। एमटीई डेवलपर विकल्प का स्क्रीनशॉट।

सिस्टम संपत्ति

उन्नत उपयोग के लिए, सिस्टम प्रॉपर्टी arm64.memtag.bootctl निम्नलिखित मानों की अल्पविराम से अलग की गई सूची ले सकती है:

  • मेमटैग: यूजर-स्पेस एमटीई को लगातार सक्षम करें ( MISC_MEMTAG_MODE_MEMTAG सेट करें)
  • मेमटैग-एक बार: यूजर-स्पेस एमटीई को एक बार सक्षम करें ( MISC_MEMTAG_MODE_MEMTAG_ONCE सेट करें)
  • मेमटैग-कर्नेल: कर्नेल-स्पेस एमटीई सक्षम करें ( MISC_MEMTAG_MODE_MEMTAG_KERNEL सेट करें)
  • मेमटैग-कर्नेल-एक बार: कर्नेल-स्पेस एमटीई को एक बार सक्षम करें ( MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE )
  • मेमटैग-ऑफ: एमटीई अक्षम करें ( MISC_MEMTAG_MODE_MEMTAG_OFF सेट करें)

नई सेटिंग को प्रभावी करने के लिए सिस्टम को रीबूट करना होगा (क्योंकि यह बूटलोडर द्वारा लागू किया जाता है)।