التوافق مع برنامج إقلاع 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. لقطة شاشة لخيار المطوّر في 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)

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