Hỗ trợ trình tải khởi động MTE

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 memtagtrue, 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 memtagfalse, thì trình tải khởi động sẽ thêm arm64.nomte vào dòng lệnh kernel.

Nếu memtag_kerneltrue, 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_ONCEMISC_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.

Tuỳ chọn cho nhà phát triển 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:

  • memtag bật MTE không gian người dùng một cách liên tục (đặt MISC_MEMTAG_MODE_MEMTAG).
  • memtag-once bật MTE không gian người dùng một lần (đặt MISC_MEMTAG_MODE_MEMTAG_ONCE).
  • memtag-kernel bật MTE không gian kernel (đặt MISC_MEMTAG_MODE_MEMTAG_KERNEL).
  • memtag-kernel-once bật MTE không gian kernel một lần (đặt MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE).
  • memtag-off tắt MTE (đặt MISC_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.