ב-Android 13 מוצג ABI למרחב המשתמש, שמאפשר להעביר את מצב ה-MTE המבוקש למחולל האתחול. אפשר להשתמש בהגדרה הזו כדי להפעיל את MTE במכשירים שיש להם תמיכה בחומרה אבל MTE לא מופעל בהם כברירת מחדל, או כדי להשבית את MTE במכשירים שבהם הוא מופעל כברירת מחדל.
תמיכה בתוכנת אתחול
כדי לתמוך ב-ABI הזה, תוכנת האתחול צריכה לקרוא את misc_memtag_message
(שמוגדרת ב-
bootloader_message.h) מהמחיצה misc
.
אם נמצא misc_memtag_message
תקף (MISC_VIRTUAL_AB_MAGIC_HEADER
תואם ומספר הגרסה נתמך), bootloader מחשב את
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
היא הגדרת ברירת המחדל להפעלה או להשבתה של memtag למק"ט. אם הערך של memtag
הוא True, מנהל האתחול מגדיר שמירה של תג MTE, מפעיל בדיקות תגים ברמות החריגה הנמוכות יותר ומעביר את האזור ששמור לתגים לליבה דרך DT. אם הערך של memtag
הוא false, מנהל האתחול מצרף את arm64.nomte לשורת הפקודה של הליבה.
אם הערך של memtag_kernel
הוא true, מנהל האתחול מצרף את הערך 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)
, תוך שמירה על הדגלים האחרים.
צריך להגדיר את המוצר כך שייבנה קובץ ה-binary של mtectrl
לתמיכה במרחב המשתמש. לאחר מכן, מגדירים את מאפיין המערכת ro.arm64.memtag.bootctl_supported
כדי לציין למערכת שה-bootloader תומך בהודעת memtag.
ממשק משתמש
כשהנכסro.arm64.memtag.bootctl_supported
מוגדר, לחצן בתפריט 'אפשרויות למפתחים' מאפשר למשתמש להפעיל מחדש את המכשיר פעם אחת כש-MTE מופעל. קהל היעד של הכלי הזה הוא מפתחי אפליקציות שרוצים לבדוק את האפליקציות שלהם באמצעות MTE.

מאפיין מערכת
לשימוש מתקדם, אפשר להזין במאפיין המערכת arm64.memtag.bootctl
רשימה של הערכים הבאים, מופרדים בפסיקים:
-
memtag: הפעלה מתמשכת של MTE במרחב המשתמש (הגדרה של
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once: הפעלת MTE במרחב המשתמש פעם אחת (הגדרה של
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel: הפעלת MTE במרחב הליבה (הגדרה של
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once: הפעלת MTE במרחב הליבה פעם אחת
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: השבתת MTE (הגדרה של
MISC_MEMTAG_MODE_MEMTAG_OFF
)
כדי שההגדרה החדשה תיכנס לתוקף, צריך להפעיל מחדש את המערכת (כי היא חלה על ידי תוכנת האתחול).