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 内核)。通过设置BOARD_16K_OTA_USE_INCREMENTAL := true
来启用增量 OTA,以获得更小的引导 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 移动到 vendor 分区。可选,大多数设备不应设置此项。
验证
成功设置后
- 16 KB 切换开关在设置应用中可见,显示“以 16 KB 页面大小启动”。
/system/boot_otas
或/vendor/boot_otas
包含两个 OTA zip 文件 -boot_ota_16k.zip
和boot_ota_4k.zip
。
使用 16 KB 切换开关
- 按照 开发者选项文档 中的指示启用开发者选项。
- 如果设备被检测为 OEM 锁定,则会显示一个对话框,请求用户 OEM 解锁手机。按照步骤进行 OEM 解锁。
- 当用户点击“以 16 KB 页面大小启动”时,
/data
和/metadata
分区需要为 ext4。如果不是,则会显示一个对话框,请求用户擦除设备。回答“是”会擦除设备,您将不得不再次激活开发者选项。 - 16 KB 切换开关现在显示一个确认对话框,以切换到 16 KB,并在确认后应用引导 OTA。然后,您可以在 4 KB 和 16 KB 模式之间来回切换,而无需清除数据分区来测试应用行为。
检查 16 KB 模式
按照 获取页面大小 中的步骤验证页面大小。