एंड्रॉइड 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
सेट करें)
नई सेटिंग को प्रभावी करने के लिए सिस्टम को रीबूट करना होगा (क्योंकि यह बूटलोडर द्वारा लागू किया जाता है)।