Android 13, istenen MTE modunu önyükleyiciye bildirmek için kullanıcı alanı için bir ABI'yi kullanıma sunar. Bu komut, donanım desteğine sahip ancak varsayılan olarak MTE etkinleştirilmemiş cihazlarda MTE'yi etkinleştirmek veya MTE'nin etkinleştirildiği cihazlarda MTE'yi devre dışı bırakmak için kullanılabilir.
Bootloader desteği
Bu ABI'yi desteklemek için bootloader'ınızın misc
bölümündeki misc_memtag_message
dosyasını (
bootloader_message.h dosyasında tanımlanmıştır) okuması gerekir.
Geçerli bir misc_memtag_message
bulunursa (MISC_VIRTUAL_AB_MAGIC_HEADER
eşleşirse ve sürüm numarası destekleniyorsa) bootloader
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/kapatma ayarıdır. memtag
doğruysa önyükleyici MTE etiket rezervasyonunu oluşturur, daha düşük istisna düzeylerinde etiket kontrollerini etkinleştirir ve etiket rezerve bölgesini DT aracılığıyla çekirdeğe iletir. memtag
yanlışsa önyükleyici, arm64.nomte dosyasını çekirdek komut satırına ekler.
memtag_kernel
doğruysa önyükleyici, kasan=on
değerini çekirdek komut satırına ekler.
Önyükleme yükleyici, her önyüklemede MISC_MEMTAG_MODE_MEMTAG_ONCE
ve MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
dosyalarını SIFIRLAMALIDIR.
Önyükleyici fastboot oem mte
'ü destekliyorsa on, diğer işaretleri koruyarak MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
'ü (1, 0, 0)
, off ise (0, 0, 1)
olarak ayarlar.
Ürününüzü, kullanıcı alanı desteği için mtectrl
ikili dosyasını oluşturacak şekilde yapılandırmanız gerekir. Ardından, ro.arm64.memtag.bootctl_supported
sistem mülkünü, sisteme önyükleyicinizin memtag mesajını desteklediğini belirtecek ş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. Bu özelliğin hedef kitlesi, uygulamalarını MTE ile test etmek isteyen uygulama geliştiricilerdir.

Sistem mülkü
Gelişmiş kullanım için arm64.memtag.bootctl
sistem mülkü, aşağıdaki değerlerin virgülle ayrılmış bir listesini alabilir:
-
memtag: Kullanıcı alanındaki MTE'yi kalıcı olarak etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG
değerini ayarlayın) -
memtag-once: Kullanıcı alanında MTE'yi bir kez etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_ONCE
değerini ayarlayın) -
memtag-kernel: çekirdek alanında MTE'yi etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_KERNEL
değerini ayarlayın) -
memtag-kernel-once: çekirdek alanında MTE'yi bir kez etkinleştirin (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: MTE'yi devre dışı bırakır (
MISC_MEMTAG_MODE_MEMTAG_OFF
değerini alır)
Yeni ayarın geçerli olması için sistemin yeniden başlatılması gerekir (bootloader tarafından uygulandığı için).