手机开启16k Page Size
我买了一个pixel8的手机,系统是Android16,如下操作都是基于这个手机做的。
https://source.android.com/docs/core/architecture/16kb-page-size/16kb-developer-option?hl=zh-cn#use_16kb_toggle
使用 16 KB 切换开关
按照开发者选项文档中的指示启用开发者选项。
如果检测到设备受 OEM 锁定,系统会显示一个对话框,请用户对手机进行 OEM 解锁。按照相应步骤进行 OEM 解锁。
当用户选中“以 16KB 页面大小启动设备”时,/data 和 /metadata 分区必须为 ext4。否则,系统会显示一个对话框,要求用户擦除设备数据。回答“是”会擦除设备数据,并且您必须再次启用开发者选项。
16 KB 切换开关现在会显示一个确认切换到 16 KB 的对话框;用户确认后,系统会应用启动 OTA。然后,您可以在 4 KB 到 16 KB 模式之间来回切换,而无需清空数据分区以测试应用行为。
按照开发者选项文档中的指示启用 16 KB 模式,注意启用过程中会导致 所有用户应用数据被清。
我是基于pixel 8+Android16操作的。
详细步骤如下:
1. unlock bootloader
https://source.android.com/docs/core/architecture/bootloader/locking_unlocking?hl=zh-cn
图文说明
adb reboot bootloader
fastboot flashing unlock
2. 开发选项,选中16k page size选项
重启后,打开开发选项 -> 选中16k page size选项 -> 点击确认 -> ease all data
3. 开发选项,选中16k page size选项
选中重启一下,这次重启之后就好了
开启后的效果:
其他
-
adb reboot bootloader
adb
: Android Debug Bridge,一个强大的命令行工具,用于与连接的 Android 设备进行通信(通常在设备处于 Android 系统或 Recovery 模式下)。reboot
: 告诉设备重新启动。bootloader
: 指定重启的目标模式。Bootloader 是设备启动时运行的第一个程序,负责初始化硬件并加载操作系统(Android)内核。- 合起来的意思: 这条命令通过 ADB 指示当前处于 Android 系统或 Recovery 模式的设备重新启动并进入 Bootloader 模式。在 Bootloader 模式下,设备才能接受
fastboot
命令。
-
fastboot flashing unlock
fastboot
: 另一个命令行工具,用于在设备处于 Bootloader 模式下与其通信。它主要用于执行底层操作,如刷写分区、解锁等。flashing
: 表示操作与刷写(写入)设备的分区(如系统、引导、恢复等)有关。unlock
: 具体操作指令,表示解锁设备的 Bootloader。- 合起来的意思: 这条命令在设备处于 Bootloader 模式下执行,向设备发送解锁 Bootloader 的指令。
为什么执行这两条命令(解锁 Bootloader)是开启 16k page size 的必要条件?
开启 16k page size 通常意味着你需要刷入一个使用 16k 作为物理存储块大小(page size)编译的固件。这涉及到对设备关键分区(如 boot
、vendor_boot
、super
分区中的 vendor
/odm
等)进行写入操作。原因如下:
-
Bootloader 锁定的目的: 设备制造商默认会锁定 Bootloader。这是一个重要的安全机制,主要目的是:
- 防止未经授权的系统修改: 阻止用户或恶意软件随意刷写或修改设备的系统分区、引导分区、基带分区等关键区域,保证系统完整性和安全性。
- 保护用户数据: 防止恶意软件篡改系统窃取数据。
- 遵守运营商/法规要求: 满足某些运营商或地区的特定要求。
- 减少售后支持成本: 避免用户因自行刷机导致设备变砖而寻求保修。
-
锁定状态下的限制: 当 Bootloader 被锁定时:
- 禁止写入关键分区:
fastboot
或其他工具无法向boot
,recovery
,system
,vendor
,odm
等关键分区写入数据。尝试刷写会被 Bootloader 拒绝。 - 禁止修改分区表: 无法创建、删除或调整分区大小(虽然
page size
不是分区表直接定义的,但支持它的固件需要写入到特定分区)。 - 只能刷入官方签名固件: Bootloader 通常只允许刷入由设备制造商用特定密钥签名过的官方固件包(如 OTA 更新包)。
- 禁止写入关键分区:
-
解锁 Bootloader 的作用: 执行
fastboot flashing unlock
命令会:- 解除写入限制: 解锁后,Bootloader 允许使用
fastboot flash
命令向设备的关键分区写入任何数据(包括非官方的、自定义编译的固件)。 - 允许刷入自定义固件: 这是刷入第三方 Recovery(如 TWRP)、自定义 ROM(如 LineageOS)、修改后的内核 (
boot.img
) 或vendor
/odm
分区的前提。 - 清除用户数据: 作为安全措施,解锁过程通常会强制清除设备上的所有用户数据(Factory Reset)。这是为了防止加密数据在新系统下无法访问或产生安全风险。重要提示:解锁前务必备份所有重要数据!
- 可能影响保修: 解锁 Bootloader 通常会使设备的官方保修失效(取决于制造商政策)。
- 解除写入限制: 解锁后,Bootloader 允许使用
-
与 16k Page Size 的关系:
- 要使用 16k page size,你需要一个专门为你的设备型号编译的、使用了 16k page size 配置的固件(通常是内核、
vendor_boot
或vendor
/odm
分区中的模块)。 - 编译这样的固件需要访问设备的特定内核源代码和配置。
- 将这个编译好的固件刷入设备,必须写入到受 Bootloader 保护的分区(如
boot
,vendor_boot
,vendor
,odm
)。 - 因此,只有在 Bootloader 解锁后,你才能使用
fastboot flash boot ...
,fastboot flash vendor_boot ...
,fastboot flash vendor ...
等命令,将支持 16k page size 的固件组件刷入到相应的分区中。 刷入成功后,设备启动时加载的就是支持 16k page size 的内核和驱动了。
- 要使用 16k page size,你需要一个专门为你的设备型号编译的、使用了 16k page size 配置的固件(通常是内核、
总结:
adb reboot bootloader
:让设备进入可以进行底层操作的 Bootloader 模式。fastboot flashing unlock
:解除 Bootloader 对关键分区写入的限制,允许刷入非官方/自定义固件(这是关键一步,会清除数据)。- 解锁 Bootloader 本身不开启 16k page size。 它只是移除障碍,让你能够刷入一个预先编译好的、支持 16k page size 的固件(通常是内核和
vendor
/odm
相关部分)。刷入这个特定的固件才是真正“开启” 16k page size 的操作,而这个刷入操作在 Bootloader 锁定状态下是无法完成的。
更多
- 代码上如何适配:https://blog.csdn.net/yeshennet/article/details/14501504
- 16k page size常见库升级:https://blog.csdn.net/yeshennet/article/details/149562775