اندروید 13 یک ABI برای فضای کاربر معرفی می کند تا حالت MTE درخواستی را به بوت لودر منتقل کند. این میتواند برای فعال کردن MTE در دستگاههایی که پشتیبانی سختافزاری دارند، اما بهطور پیشفرض با MTE فعال نیست، یا برای غیرفعال کردن MTE در دستگاههایی که با آن ارسال میشوند، استفاده شود.
پشتیبانی از بوت لودر
برای پشتیبانی از این ABI، bootloader شما باید misc_memtag_message
(تعریف شده در bootloader_message.h ) را از پارتیشن misc
بخواند. اگر 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
تنظیم روشن/خاموش پیشفرض 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
system را تنظیم کنید تا به سیستم نشان دهد که بوت لودر شما از پیام memtag پشتیبانی می کند.
رابط کاربری
هنگامی که ویژگیro.arm64.memtag.bootctl_supported
تنظیم می شود، دکمه ای در منوی Developer Options به کاربر اجازه می دهد یک بار با فعال بودن MTE راه اندازی مجدد شود. مخاطبین هدف این برنامه توسعه دهندگان برنامه هستند که می خواهند برنامه های خود را با MTE آزمایش کنند. ویژگی سیستم
برای استفاده پیشرفته، ویژگی system arm64.memtag.bootctl
میتواند فهرستی از مقادیر زیر را با کاما جدا کند:
- memtag: دائماً فضای کاربر MTE را فعال کنید (
MISC_MEMTAG_MODE_MEMTAG
تنظیم کنید) - memtag-one: یک بار فضای کاربری MTE را فعال کنید (
MISC_MEMTAG_MODE_MEMTAG_ONCE
تنظیم کنید) - memtag-kernel: فعال کردن kernel-space MTE (تنظیم
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-once: یک بار kernel-space MTE را فعال کنید (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: غیرفعال کردن MTE (تنظیم
MISC_MEMTAG_MODE_MEMTAG_OFF
)
برای اعمال تنظیمات جدید (همانطور که بوت لودر اعمال می کند) سیستم باید راه اندازی مجدد شود.