MTE বুটলোডার সমর্থন

অ্যান্ড্রয়েড ১৩ ব্যবহারকারী-স্থানের জন্য একটি ABI প্রবর্তন করেছে যাতে অনুরোধকৃত MTE মোডটি বুটলোডারের সাথে যোগাযোগ করা যায়। আপনি এটি ব্যবহার করে এমন ডিভাইসগুলিতে MTE সক্ষম করতে পারেন যেগুলিতে হার্ডওয়্যার সমর্থন আছে কিন্তু ডিফল্টরূপে MTE সক্ষম করে পাঠানো হয় না, অথবা যে ডিভাইসগুলিতে এটি পাঠানো হয় সেখানে MTE অক্ষম করতে পারেন।

বুটলোডার সাপোর্ট

এই ABI সমর্থন করার জন্য, আপনার বুটলোডারকে misc পার্টিশন থেকে misc_memtag_message ( bootloader_message.h এ সংজ্ঞায়িত) পড়তে হবে। যদি একটি বৈধ 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 হল SKU-এর জন্য ডিফল্ট memtag চালু বা বন্ধ সেটিং। যদি memtag true হয়, তাহলে বুটলোডার MTE ট্যাগ রিজার্ভেশন সেট আপ করে, নিম্ন ব্যতিক্রম স্তরে ট্যাগ চেক সক্ষম করে এবং devicetree (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 প্রপার্টি সেট করা থাকে, তখন ডেভেলপার অপশন মেনুতে " Reboot with MTE" বিকল্পটি আপনাকে MTE সক্ষম করে একবার রিবুট করতে দেয়। এর লক্ষ্য হল অ্যাপ ডেভেলপাররা যারা MTE দিয়ে তাদের অ্যাপ পরীক্ষা করতে চান।

MTE ডেভেলপার বিকল্প

চিত্র ১. MTE ডেভেলপার বিকল্প।

সিস্টেম প্রপার্টি

উন্নত ব্যবহারের জন্য, সিস্টেম প্রোপার্টি arm64.memtag.bootctl নিম্নলিখিত মানগুলির একটি কমা দ্বারা পৃথক তালিকা নিতে পারে:

  • memtag ক্রমাগতভাবে ব্যবহারকারী-স্থান MTE সক্ষম করে ( MISC_MEMTAG_MODE_MEMTAG সেট করুন)।
  • memtag-once একবার ব্যবহারকারী-স্থান MTE সক্ষম করে ( MISC_MEMTAG_MODE_MEMTAG_ONCE সেট করুন)।
  • memtag-kernel kernel-space MTE (সেট MISC_MEMTAG_MODE_MEMTAG_KERNEL ) সক্রিয় করে।
  • memtag-kernel-once একবার kernel-space MTE সক্রিয় করে ( MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE সেট করুন)।
  • memtag-off MTE নিষ্ক্রিয় করে ( MISC_MEMTAG_MODE_MEMTAG_OFF সেট করুন)।

সেটিংটি বুটলোডার দ্বারা প্রয়োগ করা হয়, তাই পরিবর্তন করার পরে সিস্টেমটি পুনরায় বুট করুন।