Android 13, istenen MTE modunu önyükleyiciye iletmek için kullanıcı alanı için bir ABI sunar. Bu, donanım desteği olan ancak varsayılan olarak MTE etkin olarak gönderilmeyen cihazlarda MTE'yi etkinleştirmek veya donanım desteğiyle birlikte gönderilen cihazlarda MTE'yi devre dışı bırakmak için kullanılabilir.
Önyükleyici desteği
Bu ABI'yi desteklemek için, önyükleyicinizin misc
bölümünden misc_memtag_message
( bootloader_message.h'de tanımlanmış) okuması gerekir. Geçerli bir misc_memtag_message
bulunursa ( MISC_VIRTUAL_AB_MAGIC_HEADER
eşleşir ve sürüm numarası desteklenir), önyükleyici şunları hesaplar:
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 için varsayılan memtag açma/kapama ayarıdır. memtag
doğruysa, önyükleyici MTE etiket rezervasyonunu ayarlar, daha düşük istisna düzeylerinde etiket kontrollerini etkinleştirir ve etiket ayrılmış bölgeyi DT aracılığıyla çekirdeğe iletir. memtag
yanlışsa, önyükleyici arm64.nomte'yi çekirdek komut satırına ekler.
memtag_kernel
doğruysa, önyükleyici kasan=on
çekirdek komut satırına ekler.
Önyükleyici her önyüklemede MISC_MEMTAG_MODE_MEMTAG_ONCE
ve MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
temizlemelidir ZORUNLU .
Önyükleyici fastboot oem mte
destekliyorsa, diğer bayrakları korurken açık MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
(1, 0, 0)
olarak ve kapalıyı (0, 0, 1)
olarak ayarlar.
Kullanıcı alanı desteği için ürününüzü mtectrl
ikili dosyasını oluşturacak şekilde yapılandırmanız gerekir. Ardından ro.arm64.memtag.bootctl_supported
sistem özelliğini, sisteme önyükleyicinizin memtag mesajını desteklediğini gösterecek şekilde ayarlayın.
Kullanıcı arayüzü
ro.arm64.memtag.bootctl_supported
özelliği ayarlandığında, Geliştirici Seçenekleri menüsündeki bir düğme, kullanıcının MTE etkinken bir kez yeniden başlatmasına olanak tanır. Bunun hedef kitlesi ise uygulamalarını MTE ile test etmek isteyen uygulama geliştiricileridir. Sistem özelliği
Gelişmiş kullanım için arm64.memtag.bootctl
sistem özelliği aşağıdaki değerlerin virgülle ayrılmış bir listesini alabilir:
- memtag: kullanıcı alanı MTE'yi kalıcı olarak etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG
olarak ayarlayın) - memtag-once: kullanıcı alanı MTE'yi bir kez etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_ONCE
olarak ayarlayın) - memtag-kernel: çekirdek alanı MTE'yi etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_KERNEL
ayarlayın) - memtag-kernel-once: çekirdek alanı MTE'yi bir kez etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: MTE'yi devre dışı bırakın (
MISC_MEMTAG_MODE_MEMTAG_OFF
olarak ayarlayın)
Yeni ayarın etkili olması için sistemin yeniden başlatılması gerekir (önyükleyici tarafından uygulandığı şekliyle).