侧边栏壁纸
博主昵称
一烨扁舟

弹指间,你我皆不再年少...

一次搞懂手机保root更新: boot分区到底该怎么刷?

2025年12月07日 135阅读 0评论 0点赞

848ef64de845c7ac6c8242803c891a3d.jpeg
看到有很多机友傻傻分不清boot_a,boot_b,init_boot_a,init_boot_b等等这些分区,在保root更新的时候,很多人只知道把别人分享的init_boot_a,init_boot_b等刷到自己对应的分区,有人说什么实在没有效果就把分享的init_boot_a都刷到自己的init_boot_a和init_boot_b,却不知道为什么要这么做。这个说法其实有误区,在一定的情况下甚至可能出错。于是写下这篇文章,帮助大家轻松实现保root更新,整理自酷安也做记录。

      出厂安卓11以上的设备,一般都采用了VAB(A/B)分区架构。简单来说就是给系统准备了两个槽位:槽位a和槽位b,平时只启动其中的一个槽位。boot_a代表a槽位的boot分区,boot_b代表b槽位的boot分区,其他的分区也一样。
      在系统OTA更新的时候, 系统会把更新包里的分区镜像刷入到另一个未使用的槽位中。更新包里面是不分a和b的,包里每个分区只有一个镜像文件。
      这里拿boot分区举例哈,假如我现在要从073升级到076,当前系统启动的是a槽位。那么OTA更新的时候,就会把新系统076更新包中的boot分区镜像刷入到boot_b中。然后再把系统活跃的槽位设置为b,重启之后就是使用的b槽位了。
      但是此时虽然已经更新成功,boot_a分区还是上一个旧版本073的boot分区。所以说有一些热心宝子,升级成功之后,用9008把boot_a和boot_b等等提取出来分享给大家,实际上他分享的boot_b是076的,但boot_a却是旧版本073的镜像,等到下次又有新系统120版本出来的时候,你下载了他的包,假如你此时活动的是a槽位,结果你把他的boot_a刷入了自己的boot_a,就相当于给自己076的版本刷入了073的boot镜像,这样肯定过不去校验。这就是为什么很多人怎么按照一些保root教程去操作,都失败的原因。
ad0010b1cf376eb8eb9ed28b85d4f82f.jpeg

      那么再顺带讲一下为什么OTA更新时要校验当前系统的一些分区是不是原版。其中一个原因就是,在现在的安卓OTA更新中,有两种方式:全量更新和差分更新。差分更新的更新包体积比较小,所以没什么大变动一般都是差分更新。还是拿boot分区举例哈,在新版本的更新包payload.bin中并不储存完整的boot.img镜像,而是储存了和旧版本的差异信息(比如哪些字节需要替换、哪些需要新增)。在更新的时候,只需要提取旧版本的boot分区镜像,把差异信息应用到上面,这样就得到了新版本的boot镜像。所以说,如果你的boot.img不是原版,那再去把差异信息应用到上面,只会得到一个损坏的boot镜像,刷到设备里很可能变砖。

      接下来讲一下保root更新的原理,拿magisk举例。由于安卓13开始,把ramdisk从boot.img移除,放到了init_boot.img中,然而magisk主要是往ramdisk打补丁,所以我们要修补init_boot。
      假如你现在是076版本,收到了一个120版本的系统更新,首先,为了过OTA校验,你需要把被修改过的init_boot等镜像还原成076原版的。还原好之后,去系统更新app里点击下载安装新版本,系统开始校验当前旧版本分区的哈希值等,通过校验后,系统把差分信息应用到旧版本镜像,生成了新版本init_boot等镜像。再假设你当前系统启动的插槽是a,系统就会把生成的新镜像init_boot.img刷入到另一个插槽init_boot_b中。如果这时候直接点击重启,重启的时候bootloader会把活跃的插槽设置成b,就完成了官方的更新。然而这时候root就没啦。
      所以在重启前,去magisk中点击安装到未使用的槽位,这时候magisk会从另一个槽位b中提取新版本init_boot,进行修补,修补后,再刷回到init_boot_b中,这样再去重启,重启的就是新版本的修补过的init_boot啦,也就成功实现了保root更新。
d8e563c57bd2b509a120373e8e17a94c.png

      所以说以后各位机友们如果想分享自己的镜像,一定要确认好自己新版本的是在哪一个槽位,不要分享错了,只需要在a和b中,提取新版本的活跃的槽位的那个就行了,另一个槽位是旧版本的就不用分享出来了。大家刷入了不匹配的版本就不好了。

      利用刚才说的差分更新的原理,新版本镜像其实不需要升级后再9008提取,这样容易出错。只需要从官方升级包payload.bin文件中,把差分更新应用到上一版本镜像上,这样就得到了最新版的官方镜像。由于payload.bin中含有上一个版本每个分区文件的校验信息,只有校验通过了才会进行差分操作,否则会报错,这也保证了生成的新版本镜像文件是绝对官方原版的。

价格为:1元
此处为付费内容,请登录后再进行付费查看。 登录 付费可读
0

—— 评论区 ——

昵称
邮箱
网址
取消
博主栏壁纸
博主头像 一烨扁舟

弹指间,你我皆不再年少...

11 文章数
13 标签数
6 评论量
人生倒计时
舔狗日记