Android 13 में, यूज़र-स्पेस के लिए एक एबीआई (ऑब्जेक्ट फ़ाइल फ़ॉर्मैट) जोड़ा गया है. इससे, अनुरोध किए गए MTE मोड की जानकारी, बूटलोडर को दी जा सकती है. इसका इस्तेमाल उन डिवाइसों पर एमटीई को चालू करने के लिए किया जा सकता है जिनमें हार्डवेयर की सुविधा है, लेकिन डिफ़ॉल्ट रूप से एमटीई चालू नहीं होता. इसके अलावा, इसका इस्तेमाल उन डिवाइसों पर एमटीई को बंद करने के लिए भी किया जा सकता है जिनमें यह सुविधा डिफ़ॉल्ट रूप से चालू होती है.
बूटलोडर से जुड़ी सहायता
इस एबीआई के साथ काम करने के लिए, आपके बूटलोडर को 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
सही है, तो बूटलोडर, MTE टैग रिज़र्वेशन सेट अप करता है, कम अपवाद वाले लेवल में टैग की जांच चालू करता है, और DT के ज़रिए टैग के रिज़र्व किए गए क्षेत्र की जानकारी को कर्नेल को भेजता है. अगर
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
प्रॉपर्टी सेट होने पर, डेवलपर के लिए बनी सेटिंग और टूल मेन्यू में मौजूद बटन की मदद से, उपयोगकर्ता MTE चालू करके डिवाइस को एक बार रीबूट कर सकता है. इसकी टारगेट ऑडियंस, ऐप्लिकेशन डेवलपर हैं. वे अपने ऐप्लिकेशन की जांच, MTE की मदद से करना चाहते हैं.

सिस्टम प्रॉपर्टी
बेहतर तरीके से इस्तेमाल करने के लिए, सिस्टम प्रॉपर्टी
arm64.memtag.bootctl
में, कॉमा लगाकर अलग की गई इन वैल्यू की सूची दी जा सकती है:
-
memtag: उपयोगकर्ता-स्पेस के लिए MTE को लगातार चालू करना (
MISC_MEMTAG_MODE_MEMTAG
सेट करें) -
memtag-once: उपयोगकर्ता-स्पेस के लिए एमटीई को एक बार चालू करें (
MISC_MEMTAG_MODE_MEMTAG_ONCE
सेट करें) -
memtag-kernel: kernel-space MTE चालू करें (
MISC_MEMTAG_MODE_MEMTAG_KERNEL
सेट करें) -
memtag-kernel-once: kernel-space एमटीई को एक बार चालू करें
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: MTE को बंद करें (
MISC_MEMTAG_MODE_MEMTAG_OFF
सेट करें)
नई सेटिंग लागू होने के लिए, सिस्टम को रीबूट करना होगा. ऐसा इसलिए, क्योंकि इसे बूटलोडर लागू करता है.