از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
پشتیبانی از بوت لودر MTE
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
اندروید 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
را به خط فرمان هسته اضافه می کند. در غیر این صورت، kasan=off
را اضافه می کند.
بوت لودر باید 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
)
برای اعمال تنظیمات جدید (همانطور که بوت لودر اعمال می کند) سیستم باید راه اندازی مجدد شود.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-08-22 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-08-22 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# MTE bootloader support\n\nAndroid 13 introduces an ABI for user-space to communicate the requested\nMTE mode to the bootloader. This can be used to enable MTE on devices that\nhave hardware support but do not ship with MTE enabled by default, or to\ndisable MTE on devices that do ship with it.\n\nBootloader support\n------------------\n\n\nTo support this ABI, your bootloader needs to read the\n`misc_memtag_message` (defined in\n[bootloader_message.h](https://android.googlesource.com/platform/bootable/recovery/+/android16-release/bootloader_message/include/bootloader_message/bootloader_message.h)) from the `misc` partition.\nIf a valid `misc_memtag_message` is found\n(`MISC_VIRTUAL_AB_MAGIC_HEADER` matches, and the version number is supported),\nthe bootloader computes \n\n```\nmemtag = (default_memtag && !(misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_OFF)) ||\n misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG ||\n misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_ONCE\n\nmemtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL ||\n misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE\n```\n\n\n`default_memtag` is the default memtag on/off setting for the\nSKU. If `memtag` is true, the bootloader sets up MTE tag\nreservation, enables tag checks in the lower exception levels, and\ncommunicates the tag reserved region to the kernel via DT. If\n`memtag` is false, the bootloader appends arm64.nomte to the\nkernel command line.\n\n\nIf `memtag_kernel` is true, the bootloader appends\n`kasan=on` to the kernel command line. Otherwise, it\nappends `kasan=off`.\n\n\nBootloader **MUST** clear `MISC_MEMTAG_MODE_MEMTAG_ONCE` and\n`MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE` on every boot.\n\n\nIf the bootloader supports `fastboot oem mte`, then on sets\n`MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}` to\n`(1, 0, 0)`, and off to `(0, 0, 1)`, while\npreserving the other flags.\n\n\nYou should configure your product to build the `mtectrl` binary\nfor userspace support. Then, set the\n`ro.arm64.memtag.bootctl_supported` system property to indicate\nto the system that your bootloader supports the memtag message.\n\nUser interface\n--------------\n\nWhen the `ro.arm64.memtag.bootctl_supported` property is set, a button in the Developer Options menu allows the user to reboot once with MTE enabled. The target audience for this is app developers that want to test their apps with MTE.\n\nSystem property\n---------------\n\n\nFor advanced use, the system property\n`arm64.memtag.bootctl` can take a comma-separated list of the\nfollowing values:\n\n- **memtag:** persistenly enable user-space MTE (set `MISC_MEMTAG_MODE_MEMTAG`)\n- **memtag-once:** enable user-space MTE once (set `MISC_MEMTAG_MODE_MEMTAG_ONCE`)\n- **memtag-kernel:** enable kernel-space MTE (set `MISC_MEMTAG_MODE_MEMTAG_KERNEL`)\n- **memtag-kernel-once:** enable kernel-space MTE once (`MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE`)\n- **memtag-off:** disable MTE (set `MISC_MEMTAG_MODE_MEMTAG_OFF`)\n\n\nThe system has to be rebooted for the new setting to take effect (as it is\napplied by the bootloader)."]]