اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
التوافق مع برنامج إقلاع MTE
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يقدّم نظام التشغيل Android 13 واجهة ABI لمساحة المستخدم من أجل إرسال وضع MTE المطلوب إلى برنامج التشغيل. يمكن استخدام هذا الخيار لتفعيل MTE على الأجهزة التي تتوافق معها ولكن لا يتم شحنها مع تفعيلها تلقائيًا، أو لإيقاف MTE على الأجهزة التي يتم شحنها مع تفعيلها.
توافُق برنامج الإقلاع
ولإتاحة واجهة التطبيق الثنائية هذه، يجب أن يتمكّن برنامج الإقلاع من قراءة
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 لرمز التخزين التعريفي. إذا كانت القيمة memtag
صحيحة، سيُعدّ برنامج التحميل منطقة حجز العلامات MTE، وسيفعّل عمليات التحقّق من العلامات في مستويات الاستثناء الأدنى، وسينقل منطقة العلامات المحجوزة إلى النواة من خلال شجرة الأجهزة. إذا كانت قيمة memtag
هي false، يضيف برنامج التحميل 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
للإشارة إلى أنّ برنامج التشغيل الأوّلي يتوافق مع رسالة 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
)
يجب إعادة تشغيل النظام لتفعيل الإعداد الجديد (لأنّ برنامج الإقلاع هو الذي يطبّقه).
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-23 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-23 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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)."]]