التوافق مع برنامج إقلاع MTE

يقدّم نظام التشغيل Android 13 واجهة ثنائية التطبيق (ABI) لمساحة المستخدم من أجل إرسال وضع MTE المطلوب إلى برنامج التشغيل. يمكنك استخدام هذا الخيار لتفعيل إضافة وضع علامات الذاكرة (MTE) على الأجهزة التي تتوافق معها ولكن لا يتم تفعيلها تلقائيًا، أو لإيقافها على الأجهزة التي يتم تفعيلها عليها تلقائيًا.

توافُق برنامج الإقلاع

ولإتاحة استخدام واجهة التطبيق الثنائية هذه، يجب أن يتمكّن برنامج الإقلاع من قراءة misc_memtag_message (المحدّد في bootloader_message.h) من القسم misc. في حال العثور على misc_memtag_message صالح (تتطابق MISC_MEMTAG_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 هي true، سيُعدّ برنامج الإقلاع عملية حجز العلامات في MTE، وسيتيح عمليات التحقّق من العلامات في مستويات الاستثناء الأدنى، وسيُبلغ النواة بالمنطقة المحجوزة للعلامات باستخدام شجرة الأجهزة (DT). إذا كانت قيمة memtag هي false، يلحق برنامج الإقلاع arm64.nomte بسطر أوامر النواة.

إذا كانت قيمة memtag_kernel هي true، يضيف برنامج الإقلاع kasan=on إلى سطر أوامر النواة. بخلاف ذلك، تتم إضافة kasan=off.

يجب أن يمحو برنامج Bootloader MISC_MEMTAG_MODE_MEMTAG_ONCE وMISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE في كل عملية تشغيل.

إذا كان برنامج التشغيل الأوّلي يتيح استخدام fastboot oem mte، يجب أن يضبط الوسيط on العلامات MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} على (1, 0, 0)، وأن يضبط الوسيط off العلامات على (0, 0, 1)، مع الحفاظ على العلامات الأخرى.

اضبط منتجك لإنشاء mtectrl ثنائي لدعم مساحة المستخدم. بعد ذلك، اضبط خاصية النظام ro.arm64.memtag.bootctl_supported للإشارة إلى النظام بأنّ برنامج الإقلاع يتيح عرض رسالة memtag.

واجهة المستخدم

عند ضبط السمة ro.arm64.memtag.bootctl_supported، يتيح لك الخيار إعادة التشغيل مع تفعيل MTE في قائمة خيارات المطوّرين إعادة التشغيل مرة واحدة مع تفعيل MTE. الجمهور المستهدَف من هذه الميزة هم مطوّرو التطبيقات الذين يريدون اختبار تطبيقاتهم باستخدام MTE.

خيار المطوّرين في MTE

الشكل 1: خيار المطوّرين في 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).

يتم تطبيق الإعداد من خلال برنامج التحميل، لذا أعِد تشغيل النظام بعد إجراء أي تغيير.