Android 13 giới thiệu một ABI cho không gian người dùng để thông báo chế độ MTE được yêu cầu cho trình tải khởi động. Bạn có thể sử dụng ABI này để bật MTE trên các thiết bị có hỗ trợ phần cứng nhưng không được bật MTE theo mặc định hoặc để tắt MTE trên các thiết bị có hỗ trợ MTE.
Hỗ trợ trình tải khởi động
Để hỗ trợ ABI này, trình tải khởi động cần đọc
misc_memtag_message (được xác định trong
bootloader_message.h) từ phân vùng misc.
Nếu tìm thấy misc_memtag_message hợp lệ
(MISC_MEMTAG_MAGIC_HEADER khớp và số phiên bản được hỗ trợ),
thì trình tải khởi động sẽ tính toán như sau:
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 là chế độ cài đặt bật hoặc tắt memtag mặc định cho
SKU do trình tải khởi động chỉ định. Nếu memtag là true, thì trình tải khởi động sẽ thiết lập tính năng dành riêng cho thẻ MTE, bật tính năng kiểm tra thẻ ở các cấp độ ngoại lệ thấp hơn và thông báo vùng dành riêng cho thẻ cho kernel bằng devicetree (DT). Nếu memtag là false, thì trình tải khởi động sẽ thêm arm64.nomte vào dòng lệnh kernel.
Nếu memtag_kernel là true, thì trình tải khởi động sẽ thêm
kasan=on vào dòng lệnh kernel. Nếu không, trình tải khởi động sẽ thêm kasan=off.
Trình tải khởi động phải xoá MISC_MEMTAG_MODE_MEMTAG_ONCE và
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE trên mỗi lần khởi động.
Nếu trình tải khởi động hỗ trợ fastboot oem mte, thì đối số on sẽ đặt các
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} cờ thành
(1, 0, 0), và đối số off sẽ đặt các cờ này thành (0, 0, 1),
trong khi vẫn giữ nguyên các cờ khác.
Định cấu hình sản phẩm để tạo tệp nhị phân mtectrl nhằm hỗ trợ không gian người dùng.
Sau đó, hãy đặt thuộc tính hệ thống ro.arm64.memtag.bootctl_supported để cho hệ thống biết
rằng trình tải khởi động của bạn hỗ trợ thông báo memtag.
Giao diện người dùng
Khi thuộc tính ro.arm64.memtag.bootctl_supported được đặt, trình đơn
Tiện ích gắn thẻ bộ nhớ trong trình đơn Tuỳ chọn cho nhà phát triển sẽ cho phép
người dùng bật MTE cho thiết bị. Đối tượng mục tiêu cho tính năng này là các nhà phát triển ứng dụng muốn kiểm thử
ứng dụng của họ bằng MTE.

Hình 1. Trình đơn cho nhà phát triển MTE.
Thuộc tính hệ thống
Để sử dụng nâng cao, thuộc tính hệ thống
arm64.memtag.bootctl có thể lấy danh sách được phân tách bằng dấu phẩy gồm các giá trị sau:
-
memtagbật MTE không gian người dùng một cách liên tục (đặtMISC_MEMTAG_MODE_MEMTAG). -
memtag-oncebật MTE không gian người dùng một lần (đặtMISC_MEMTAG_MODE_MEMTAG_ONCE). -
memtag-kernelbật MTE không gian kernel (đặtMISC_MEMTAG_MODE_MEMTAG_KERNEL). -
memtag-kernel-oncebật MTE không gian kernel một lần (đặtMISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE). -
memtag-offtắt MTE (đặtMISC_MEMTAG_MODE_MEMTAG_OFF).
Chế độ cài đặt này được trình tải khởi động áp dụng, vì vậy, hãy khởi động lại hệ thống sau khi bạn thực hiện thay đổi.