DFOTA更新后,QCS2290设备分区切换失效问题
最编程
2024-02-23 09:15:36
...
在做了OTA升级后重启后,设备一直重启,多次重启后会正常进入slot A分区
开机log如下:
Active Slot _b is bootable, retry count 4
Booting from slot (_b)
....
[ 14.470311] device-mapper: verity-fec: 253:11: FEC: recursion too deep
[ 14.471821] Workqueue: events_freezable mmc_rescan
[ 14.478405] device-mapper: verity: 253:11: metadata block 152276 is corrupted
[ 14.483168] pstate: 60400005 (nZCv daif +PAN -UAO)
[ 14.483176] pc : sdhci_request+0x1d8/0x2b0
[ 14.498992] reboot: Restarting system with command 'dm-verity device corrupted'
从log来看OTA升级是成功的,并且将启动b 分区,但是metadata 分区校验失败了,而校验数据是放在vbmeta.img 镜像文件中,所以可能是vbmeta 分区数据有问题。
解决办法
1. 保证制作的OTA包中含有vbmeta.img,目录为ota_target_files/IMAGES/vbmeta.img
2. 保证需要升级的分区包含了vbmeta 分区,即AB_OTA_PARTITIONS 属性中含有vbmeta,比如:
device/qcom/bengal/BoardConfig.mk
....
# in the full set mentioned above as part of your make commandline
AB_OTA_PARTITIONS ?= boot vendor vbmeta
....