Android 13 wprowadza interfejs ABI do komunikacji przez przestrzeń użytkownika trybu MTE w programie rozruchowym. Można tego użyć, aby włączyć MTE na urządzeniach, które: mają obsługę sprzętu, ale nie są wysyłane z domyślnie włączoną obsługą MTE lub wyłącz MTE na urządzeniach, które są z nim wysyłane.
Obsługa programu rozruchowego
Aby obsługiwać ten interfejs ABI, program rozruchowy musi odczytać
misc_memtag_message
(zdefiniowany w
bootoloader_message.h) z partycji misc
.
Po znalezieniu prawidłowego pola misc_memtag_message
(MISC_VIRTUAL_AB_MAGIC_HEADER
pasuje, a numer wersji jest obsługiwany),
program rozruchowy obliczy
memtag = (default_memtag && !(różne.memtag_tryb i MISC_MEMTAG_MODE_MEMTAG_OFF))) || różne tryby.memtag_i MISC_MEMTAG_MODE_MEMTAG || różne tryby.memtag_i MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || różne tryby.memtag_i MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
to domyślne ustawienie włączania/wyłączania funkcji memtag dla
SKU. Jeśli memtag
ma wartość prawda, program rozruchowy konfiguruje tag MTE
rezerwacja, włącza sprawdzanie tagów na niższych poziomach wyjątków;
przekazuje zarezerwowany region tagów do jądra przez DT. Jeśli
memtag
ma wartość fałsz, program rozruchowy dołącza plik arm64.nomte do
wiersza poleceń jądra systemu operacyjnego.
Jeśli memtag_kernel
ma wartość Prawda, program rozruchowy dołącza do pliku
kasan=on
do wiersza poleceń jądra.
Program rozruchowy MUSI wyczyścić MISC_MEMTAG_MODE_MEMTAG_ONCE
i
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
przy każdym uruchomieniu.
Jeśli program rozruchowy obsługuje interfejs fastboot oem mte
, to w zbiorach
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
do
(1, 0, 0)
i wyjechać do (0, 0, 1)
, a
przy zachowaniu pozostałych flag.
Skonfiguruj usługę tak, aby kompilowała plik binarny mtectrl
. Następnie w parametrze
ro.arm64.memtag.bootctl_supported
właściwość systemowa do wskazania
do systemu, który program rozruchowy obsługuje komunikat memtag.
Interfejs użytkownika
Gdy skonfigurowana jest właściwośćro.arm64.memtag.bootctl_supported
,
przycisk w menu Opcje programisty umożliwia ponowne uruchomienie urządzenia po włączeniu MTE
. Docelową grupą odbiorców są deweloperzy aplikacji, którzy chcą przetestować aplikację
aplikacji z MTE.
Właściwość systemowa
W przypadku zaawansowanych funkcji właściwość systemowa
arm64.memtag.bootctl
może zawierać rozdzielaną przecinkami listę funkcji
następujące wartości:
-
memtag: trwale włącz MTE przestrzeni użytkownika (ustawienie
MISC_MEMTAG_MODE_MEMTAG
). -
memtag-once: włącz MTE w przestrzeni użytkownika raz (ustawione
MISC_MEMTAG_MODE_MEMTAG_ONCE
). -
memtag-kernel: włącz MTE jądra (ustawione)
MISC_MEMTAG_MODE_MEMTAG_KERNEL
). -
memtag-kernel-once: raz włącz MTE dla przestrzeni jądra.
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: wyłącz MTE (ustawiony
MISC_MEMTAG_MODE_MEMTAG_OFF
).
Aby nowe ustawienie zaczęło obowiązywać, system musi zostać zrestartowany (ponieważ jest stosowane przez program rozruchowy).