启用 16 KB 切换开关

借助 16 KB 切换开关,您可尝试 16 KB 内核。此切换开关可在 4 KB 内核和 16 KB 内核之间切换,可在设置应用的“开发者选项”菜单中找到。16 KB 切换开关可用于检查应用与 16 KB 内核的兼容性,但由于在 16 KB 模式下使用子页面块(针对 /data/metadata 分区使用 EXT4 时),它可能无法反映实际 16 KB 设备的性能。

切换开关配置步骤

  1. 确保设备已将变量设置为页面通用(以便同时使用 4 KB 和 16 KB 页面大小内核)。建议您直接安装 16k 内核,以确保设备直接在 16 KB 模式下运行,然后再继续添加开发者选项。请参阅虚拟设备示例目标配置

        PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
        PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384
    
  2. 设置产品变量以在“设置”中显示开发者选项 PRODUCT_16K_DEVELOPER_OPTION := true

  3. 使用 BOARD_KERNEL_PATH_16K 设置内核路径。应使用 CONFIG_ARM64_16K_PAGES=y. 构建此内核

      BOARD_KERNEL_PATH_16K := kernel/prebuilts/mainline/$(TARGET_KERNEL_ARCH)/16k/kernel-mainline.
    
  4. 设置模块配置路径 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)
    
  5. 设置 BOARD_16K_OTA_MOVE_VENDOR := true 以将 OTA 移至供应商分区。这是可选操作,大多数设备不应设置此项。

验证

成功完成此设置后

  1. 用户选中“以 16KB 页面大小启动设备”后,“设置”应用中会显示 16 KB 切换开关。
  2. /system/boot_otas/vendor/boot_otas 包含两个 OTA ZIP 文件:boot_ota_16k.zipboot_ota_4k.zip

使用 16 KB 切换开关

  1. 按照开发者选项文档中的指示启用开发者选项。
  2. 如果检测到设备受 OEM 锁定,系统会显示一个对话框,请用户对手机进行 OEM 解锁。按照相应步骤进行 OEM 解锁
  3. 当用户选中“以 16KB 页面大小启动设备”时,/data/metadata 分区必须为 ext4。否则,系统会显示一个对话框,要求用户擦除设备数据。回答“是”会擦除设备数据,并且您必须再次启用开发者选项。
  4. 16 KB 切换开关现在会显示一个确认切换到 16 KB 的对话框;用户确认后,系统会应用启动 OTA。然后,您可以在 4 KB 到 16 KB 模式之间来回切换,而无需清空数据分区以测试应用行为。

检查 16 KB 模式

按照获取页面大小中的步骤操作,验证页面大小。