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

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

دعم برنامج الإقلاع

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

إذا كان memtag_kernel صحيحًا، يُضيف مُشغِّل الإقلاع kasan=on إلى سطر أوامر kernel.

يجب أن يُزيل برنامج الإقلاع 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. لقطة شاشة لخيار مطوّر MTE

سمة النظام

للاستخدام المتقدّم، يمكن أن تقبل سمة النظام arm64.memtag.bootctl قائمة مفصولة بفواصل بالقيم التالية:

  • memtag: تفعيل MTE في مساحة المستخدم بشكل دائم (set MISC_MEMTAG_MODE_MEMTAG)
  • memtag-once: تفعيل ميزة MTE في مساحة المستخدم مرة واحدة (set MISC_MEMTAG_MODE_MEMTAG_ONCE)
  • memtag-kernel: تفعيل MTE في مساحة kernel (set MISC_MEMTAG_MODE_MEMTAG_KERNEL)
  • memtag-kernel-once: تفعيل إضافة وضع علامات الذاكرة (MTE) لمساحة kernel مرة واحدة (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE)
  • memtag-off: إيقاف ميزة MTE (set MISC_MEMTAG_MODE_MEMTAG_OFF)

يجب إعادة تشغيل النظام لكي يتم تطبيق الإعداد الجديد (لأنّه يتم تطبيقه من خلال أداة تحميل البرامج).