التوافق مع برنامج إقلاع 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)

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