ב-Android 13 כוללים ממשק ABI שמאפשר למרחב המשתמשים להעביר את מצב MTE לתוכנת האתחול. אפשר להשתמש בכך כדי להפעיל MTE במכשירים יש תמיכה בחומרה אך לא שולחים כאשר MTE מופעל כברירת מחדל, או להשבית את MTE במכשירים שמהם הוא נשלח.
תמיכה בתוכנת אתחול
כדי לתמוך ב-ABI הזה, תוכנת האתחול צריכה לקרוא את
misc_memtag_message
(מוגדר ב:
runloader_message.h) מהמחיצה misc
.
אם נמצא misc_memtag_message
תקין
(MISC_VIRTUAL_AB_MAGIC_HEADER
תואם ומספר הגרסה נתמך),
של תוכנת האתחול
memtag = (default_memtag && !(misc.memtag_mode &MISC_MEMTAG_מצב_MEMTAG_OFF)) || misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG || misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG_ONCE memtag_kernel = misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG_KERNEL || misc.memtag_mode ו MISC_MEMTAG_מצב_MEMTAG_KERNEL_ONCE
default_memtag
היא הגדרת ברירת המחדל להפעלה/השבתה של המטא-תג
מק"ט. אם הערך של memtag
הוא True, תוכנת האתחול מגדירה תג MTE
מאפשרת בדיקות תגים ברמות החריגות הנמוכות יותר, וכן
מעבירה את האזור השמור לתג לליבה (kernel) באמצעות DT. אם המיקום
memtag
מוגדר כ-False, תוכנת האתחול מצרפת את arm64.nomte אל
בשורת הפקודה של הליבה.
אם הערך של memtag_kernel
הוא True, תוכנת האתחול מצרפת
kasan=on
לשורת הפקודה בליבה (kernel).
תוכנת האתחול חייבת לנקות 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
) לציון
למערכת שבה תוכנת האתחול תומכת בהודעת ה-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 עם מרחב ליבה (kernel) (מוגדר
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once: הפעלה אחת של MTE עם מרחב ליבה
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: השבתת MTE (מוגדר
MISC_MEMTAG_MODE_MEMTAG_OFF
)
יש להפעיל מחדש את המערכת כדי שההגדרה החדשה תיכנס לתוקף (כפי שהיא שהוחלו על ידי תוכנת האתחול).