Android 13, kullanıcı alanının istenen MTE modunu önyükleyiciye bildirmesi için bir ABI sunar. Bu ayarı, donanım desteği olan ancak MTE'nin varsayılan olarak etkin olmadığı cihazlarda MTE'yi etkinleştirmek veya MTE'nin varsayılan olarak etkin olduğu cihazlarda MTE'yi devre dışı bırakmak için kullanabilirsiniz.
Bootloader desteği
Bu ABI'yi desteklemek için bootloader'ınızın misc_memtag_message (
bootloader_message.h içinde tanımlanır) değerini misc bölümünden okuması gerekir.
Geçerli bir misc_memtag_message bulunursa
(MISC_MEMTAG_MAGIC_HEADER eşleşir ve sürüm numarası desteklenir),
önyükleyici aşağıdaki gibi hesaplanır:
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çık veya kapalı ayarıdır. memtag true ise bootloader, MTE etiketi ayırma işlemini yapar, alt istisna seviyelerinde etiket kontrollerini etkinleştirir ve ayrılmış etiket bölgesini cihaz ağacı (DT) ile çekirdeğe iletir. memtag, false ise önyükleyici, arm64.nomte öğesini çekirdek komut satırına ekler.
memtag_kernel, true ise önyükleyici, çekirdek komut satırına kasan=on ekler. Aksi takdirde kasan=off eklenir.
Önyükleyici, her önyüklemede MISC_MEMTAG_MODE_MEMTAG_ONCE ve MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE'yi temizlemelidir.
Önyükleyici fastboot oem mte'ı destekliyorsa on bağımsız değişkeni MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} işaretlerini (1, 0, 0) olarak ayarlamalı, off bağımsız değişkeni ise diğer işaretleri koruyarak MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} işaretlerini (0, 0, 1) olarak ayarlamalıdır.
Ürününüzü, kullanıcı alanı desteği için mtectrl ikilisini oluşturacak şekilde yapılandırın.
Ardından, ro.arm64.memtag.bootctl_supported sistem özelliğini ayarlayarak sisteme önyükleyicinizin memtag mesajını desteklediğini belirtin.
Kullanıcı arayüzü
ro.arm64.memtag.bootctl_supported özelliği ayarlandığında, Geliştirici Seçenekleri menüsündeki MTE ile yeniden başlat seçeneği, MTE etkin olarak bir kez yeniden başlatmanıza olanak tanır. Bu özellik, uygulamalarını MTE ile test etmek isteyen uygulama geliştiriciler için tasarlanmıştır.

Şekil 1. MTE geliştirici seçeneği.
Sistem özelliği
Gelişmiş kullanım için sistem özelliği arm64.memtag.bootctl, aşağıdaki değerlerin virgülle ayrılmış bir listesini alabilir:
-
memtagKullanıcı alanı MTE'yi kalıcı olarak etkinleştirir (setMISC_MEMTAG_MODE_MEMTAG). -
memtag-once, kullanıcı alanı MTE'yi bir kez etkinleştirir (setMISC_MEMTAG_MODE_MEMTAG_ONCE). -
memtag-kernel, çekirdek alanı MTE'yi etkinleştirir (setMISC_MEMTAG_MODE_MEMTAG_KERNEL). -
memtag-kernel-once, çekirdek alanında MTE'yi bir kez etkinleştirir (MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCEayarlanır). -
memtag-offMTE'yi devre dışı bırakır (setMISC_MEMTAG_MODE_MEMTAG_OFF).
Ayar, önyükleyici tarafından uygulanır. Bu nedenle, değişiklik yaptıktan sonra sistemi yeniden başlatın.