Android 13 推出了 ABI,讓使用者空間中通訊所要求的 啟動載入程式的 MTE 模式。這可用於在符合下列條件的裝置上啟用 MTE 支援硬體,但出貨時無法預設啟用 MTE。 請在搭載此應用程式的裝置上停用 MTE。
系統啟動載入程式支援
如要支援這個 ABI,您的系統啟動載入程式必須讀取
misc_memtag_message
(定義位置:
從 misc
分區啟動 bootloader_message.h)。
如果找到有效的 misc_memtag_message
(MISC_VIRTUAL_AB_MAGIC_HEADER
相符,且支援版本號碼);
系統啟動載入程式運算作業
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。如果 memtag
為 true,則系統啟動載入程式會設定 MTE 代碼
並在較低層級啟用代碼檢查功能
透過 DT 將標記保留區域傳送給核心。如果
memtag
為 false,系統啟動載入程式會將 arm64.nomte 附加至
核心指令列
如果 memtag_kernel
為 true,則系統啟動載入程式會附加
kasan=on
新增至核心指令列。
系統啟動載入程式「必須」清除 MISC_MEMTAG_MODE_MEMTAG_ONCE
和
每次啟動時 MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
。
如果系統啟動載入程式支援 fastboot oem mte
,則會在組合上
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
至
(1, 0, 0)
和關閉 (0, 0, 1)
,同時使用
但會保留其他旗標
您應設定產品,以便建構 mtectrl
二進位檔
以便支援使用者空間接著,將
ro.arm64.memtag.bootctl_supported
系統屬性來表示
與您的系統建立連結。
使用者介面
設定ro.arm64.memtag.bootctl_supported
屬性時,
「Developer Options」選單中的按鈕可讓使用者透過 MTE 重新啟動一次
此目標對象的目標對像是想測試的應用程式開發人員
透過 MTE 開發應用程式
系統屬性
進階用途
arm64.memtag.bootctl
可以使用
下列值:
-
memtag:持續啟用使用者空間 MTE (設定
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-on1:啟用一次使用者空間 MTE (設定
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel:啟用 kernel-space MTE (設定
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once:啟用一次 kernel-space MTE 一次
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
)。 -
memtag-off:停用 MTE (設定
MISC_MEMTAG_MODE_MEMTAG_OFF
)
系統必須重新啟動,新設定才會生效 ( 系統啟動載入程式所套用)。