环境

系统:OpenHarmony 5.1.0 Release

产品:rk3568

 

编译

vendor/hihope/rk3568/config.json

修改enable_absystem属性为true,编译完成后在out/产品/packages/phone/images目录下将会生成config_ab.cfg和parameter_ab.txt。

也可以手动从device_board_hihope仓的rk3568/loader/目录获取config_ab.cfg和parameter_ab.txt文件。

 

烧录

1、在rk3568烧写工具中,鼠标右键分区表,选择config_ab.cfg导入配置,parameter项选择parameter_ab.tx

可以看到需要配置为ab分区的分区名都添加了“_a”和“_b”的命名方式,未添加的表示不需要区分ab分区,无需通过ab方式升级。

这里需要注意:rk3568烧写ab分区镜像需要烧录bootctrl镜像,否则无法正常开机,非ab分区镜像默认是不勾选的。

如需重新烧录回非ab分区镜像,需要擦除misc和bootctrl分区,否则无法正常开机。

bootctrl.img可通过https://gitcode.com/openharmony/device_board_hihope/pull/393/ 获取。

 

2、擦除misc分区

 

启动完成后

1、执行cat /proc/cmdline

能够找到bootslots=2,说明bootargs添加bootslots信息成功

如图所示

 

2、执行param get ohos.boot.bootslots

得到的结果是2,说明bootslots信息被成功写到了parameter中

 

3、执行ls -l /dev/block/by-name

能够找到system_b、vendor_b,说明新增的B分区设备节点创建成功

 

4、执行df -h

查看当前系统挂载分区

 

可以看到根文件系统(一个 ” / ” 表示)挂载的是mmcblk0p7,从上一张图中可以找到对应mmcblk0p7的是system_a;也可以看到/vendor中挂载的是mmcblk0p8,从上一张图中可以找到对应mmcblk0p8的是vendor_a。也就是说,现在挂载的是默认分区为A分区。

 

AB分区切换

setenforce 0:将selinux权限关掉,shell没有节点读写权限

begetctl partitionslot getslot:查看 slot 值

begetctl partitionslot setactive 2: 将活动分区slot设置为B分区的slot值

begetctl partitionslot setactive 1:将活动分区slot设置为A分区的slot值

 

切换步骤:

  1. begetctl partitionslot setactive 待切换分区的slot值

  2. reboot 重启设备

 

可以看到分区已切换为B分区。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐