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

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

يجب أن يمحو برنامج تحميل التشغيل 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

الشكل 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).

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