Android 13 বুটলোডারের সাথে অনুরোধ করা MTE মোড যোগাযোগ করতে ব্যবহারকারী-স্পেসের জন্য একটি ABI প্রবর্তন করে। এটি এমন ডিভাইসগুলিতে MTE সক্ষম করতে ব্যবহার করা যেতে পারে যেগুলিতে হার্ডওয়্যার সমর্থন রয়েছে কিন্তু ডিফল্টরূপে MTE সক্ষম করে শিপ করা হয় না, বা এটির সাথে শিপ করা ডিভাইসগুলিতে MTE অক্ষম করতে।
বুটলোডার সমর্থন
এই ABI সমর্থন করার জন্য, আপনার বুটলোডারকে misc
পার্টিশন থেকে misc_memtag_message
( bootloader_message.h এ সংজ্ঞায়িত) পড়তে হবে। যদি একটি বৈধ 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
হল SKU-এর জন্য ডিফল্ট মেমট্যাগ অন/অফ সেটিং। memtag
সত্য হলে, বুটলোডার MTE ট্যাগ সংরক্ষণ সেট আপ করে, নিম্ন ব্যতিক্রম স্তরে ট্যাগ চেক সক্ষম করে, এবং ট্যাগ সংরক্ষিত অঞ্চলটি DT এর মাধ্যমে কার্নেলের সাথে যোগাযোগ করে। memtag
মিথ্যা হলে, বুটলোডার কার্নেল কমান্ড লাইনে arm64.nomte যুক্ত করে।
memtag_kernel
সত্য হলে, বুটলোডার কার্নেল কমান্ড লাইনে kasan=on
যোগ করে।
বুটলোডারকে অবশ্যই প্রতিটি বুটে 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
সিস্টেম বৈশিষ্ট্য সেট করুন।
ব্যবহারকারী ইন্টারফেস
যখনro.arm64.memtag.bootctl_supported
প্রপার্টি সেট করা হয়, তখন ডেভেলপার অপশন মেনুতে একটি বোতাম ব্যবহারকারীকে MTE সক্ষম করে একবার রিবুট করতে দেয়। এর জন্য টার্গেট অডিয়েন্স হল অ্যাপ ডেভেলপার যারা MTE দিয়ে তাদের অ্যাপ পরীক্ষা করতে চায়। সিস্টেম সম্পত্তি
উন্নত ব্যবহারের জন্য, সিস্টেম প্রপার্টি arm64.memtag.bootctl
নিম্নলিখিত মানগুলির একটি কমা দ্বারা পৃথক করা তালিকা নিতে পারে:
- memtag: অবিরতভাবে ব্যবহারকারী-স্পেস MTE সক্ষম করুন (সেট
MISC_MEMTAG_MODE_MEMTAG
) - মেমট্যাগ-একবার: ইউজার-স্পেস MTE একবার সক্ষম করুন (সেট
MISC_MEMTAG_MODE_MEMTAG_ONCE
) - memtag-kernel: কার্নেল-স্পেস MTE সক্ষম করুন (সেট
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-one: একবার কার্নেল-স্পেস MTE সক্ষম করুন (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: MTE অক্ষম করুন (সেট
MISC_MEMTAG_MODE_MEMTAG_OFF
)
নতুন সেটিং কার্যকর হওয়ার জন্য সিস্টেমটিকে পুনরায় বুট করতে হবে (যেমন এটি বুটলোডার দ্বারা প্রয়োগ করা হয়)।