借助 16 KB 切换开关,您可尝试 16 KB 内核。此切换开关可在 4 KB 内核和 16 KB 内核之间切换,可在设置应用的“开发者选项”菜单中找到。16 KB 切换开关可用于检查应用与 16 KB 内核的兼容性,但由于在 16 KB 模式下使用子页面块(针对 /data
和 /metadata
分区使用 EXT4 时),它可能无法反映实际 16 KB 设备的性能。
切换开关配置步骤
确保设备已将变量设置为页面通用(以便同时使用 4 KB 和 16 KB 页面大小内核)。建议您直接安装 16k 内核,以确保设备直接在 16 KB 模式下运行,然后再继续添加开发者选项。请参阅虚拟设备示例目标配置。
PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
设置产品变量以在“设置”中显示开发者选项
PRODUCT_16K_DEVELOPER_OPTION := true
使用
BOARD_KERNEL_PATH_16K
设置内核路径。应使用CONFIG_ARM64_16K_PAGES=y.
构建此内核BOARD_KERNEL_PATH_16K := kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/kernel-mainline.
设置模块配置路径
BOARD_KERNEL_MODULES_16K
。它指向支持 16KB 的内核模块。设置这些参数会在系统分区上创建两个 OTA:boot_ota_16k.zip
(用于切换到 16 KB 内核)和boot_ota_4k.zip
(用于切换到 4 KB 内核)。为较小尺寸启动 OTA 设置BOARD_16K_OTA_USE_INCREMENTAL := true
,以启用增量 OTA。BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko) BOARD_KERNEL_MODULES_16K += $(wildcard kernel/prebuilts/common-modules/virtual-device/mainline/$(TARGET_KERNEL_ARCH)/16k/*.ko)
设置
BOARD_16K_OTA_MOVE_VENDOR := true
以将 OTA 移至供应商分区。这是可选操作,大多数设备不应设置此项。
验证
成功完成此设置后
- 用户选中“以 16KB 页面大小启动设备”后,“设置”应用中会显示 16 KB 切换开关。
/system/boot_otas
或/vendor/boot_otas
包含两个 OTA ZIP 文件:boot_ota_16k.zip
和boot_ota_4k.zip
。
使用 16 KB 切换开关
- 按照开发者选项文档中的指示启用开发者选项。
- 如果检测到设备受 OEM 锁定,系统会显示一个对话框,请用户对手机进行 OEM 解锁。按照相应步骤进行 OEM 解锁。
- 当用户选中“以 16KB 页面大小启动设备”时,
/data
和/metadata
分区必须为 ext4。否则,系统会显示一个对话框,要求用户擦除设备数据。回答“是”会擦除设备数据,并且您必须再次启用开发者选项。 - 16 KB 切换开关现在会显示一个确认切换到 16 KB 的对话框;用户确认后,系统会应用启动 OTA。然后,您可以在 4 KB 到 16 KB 模式之间来回切换,而无需清空数据分区以测试应用行为。
检查 16 KB 模式
按照获取页面大小中的步骤操作,验证页面大小。