首页 > 编程知识 正文

middle of the nightoriginal mix,linux adb命令

时间:2023-05-04 05:06:06 阅读:267606 作者:4493

0. 背景

这个问题一般是系统组来搞,但是adb remount失败,特别影响audio/camera干活,于是我请教了下大佬,学习了一下。

对比log如下:

正常remount成功的设备:

Disabling verity for /systemUsing overlayfs for /systemDisabling verity for /system_extUsing overlayfs for /system_extDisabling verity for /productUsing overlayfs for /productDisabling verity for /vendorUsing overlayfs for /vendorDisabling verity for /odmUsing overlayfs for /odmNow reboot your device for settings to take effectremount succeeded

异常remount失败的设备:

C:UsersAdministrator$ adb remount[liblp]Device size does not match (got 6442450944, expected 12884901888)[liblp]Block device super size mismatch (expected12884901888, got 6442450944)[libfs_mgr]add partition scratchOverlayfs setup for /system failed, skipping: No such file or directory[liblp]Device size does not match (got 6442450944, expected 12884901888)[liblp]Block device super size mismatch (expected12884901888, got 6442450944)[libfs_mgr]add partition scratchOverlayfs setup for /system_ext failed, skipping: No such file or directory[liblp]Device size does not match (got 6442450944, expected 12884901888)[liblp]Block device super size mismatch (expected12884901888, got 6442450944)[libfs_mgr]add partition scratchOverlayfs setup for /product failed, skipping: No such file or directory[liblp]Device size does not match (got 6442450944, expected 12884901888)[liblp]Block device super size mismatch (expected12884901888, got 6442450944)[libfs_mgr]add partition scratchOverlayfs setup for /vendor failed, skipping: No such file or directory[liblp]Device size does not match (got 6442450944, expected 12884901888)[liblp]Block device super size mismatch (expected12884901888, got 6442450944)[libfs_mgr]add partition scratchOverlayfs setup for /odm failed, skipping: No such file or directoryNo partitions to remountremount failedC:UsersAdministrator 1. 关键log分析以及检索 Device size does not match (got 6442450944, expected 12884901888)Block device super size mismatch (expected12884901888, got 6442450944)

这里说有个值不匹配,实际上获得的是6442450944,但是它期望或者的值是: 12884901888。 据此分析是软件某个地方对“分区”、“某个空间大小”的设置有问题,人家都说了只有6442450944这么大,然后你非要设置多了,当然报错了。

于是在整个代码环境中检索: 12884901888

grep -nr "12884901888" ./

问了下大佬,这个其实是分区的设置,实际有效的位置在:

./device/qcom/"对应lunch项"/BoardConfig.mk:69: BOARD_SUPER_PARTITION_SIZE := 12884901888

对应lunch项是客制化的,找到之后打开这个文件:

这个两个位置都很重要,BOARD_SUPER_PARTITION_SIZE := 12884901888是报错的地方,我们设置的太大了,BOARD_QTI_DYNAMIC_PARTITIONS_SIZE 这个值需要符合高通的修改,这个有固定的计算方法。

2. 修改 BOARD_SUPER_PARTITION_SIZE := 12884901888

这个要修改为:6442450944,没啥说的,但是我们要搞清除这个是哪来的。下载的版本里面有个partition_XXXX.xml,
这个是高通分区表,

<partition label="super" size_in_kb="6291456" type="xxxxx" bootable="false" readonly="false" filename="super.img" sparse="true"/>

回到上面的报错:

Block device super size mismatch

我们需要转换成字节: 6291456*1024=6442450944

光改这个还不行,上面说了BOARD_QTI_DYNAMIC_PARTITIONS_SIZE 也要改,不然会报错:

RuntimeError: sum of sizes of ['qti_dynamic_partitions'] is greater than BOARD_SUPER_PARTITION_SIZE / 2:6438256640 == 6438256640 > 3221225472 == 3221225472

这个值的字节数计算如下: BOARD_SUPER_PARTITION_SIZE/2 - 4MB

所以: BOARD_QTI_DYNAMIC_PARTITIONS_SIZE = 6442450944/2- 4 x 1024 x 1024=3217031168。


这个改了之后,问题就解决了,remount不会出错了。

(此问题还有后续,影响OTA升级,年后有时间更新。)

#更新 2021.03.19
这个影响OTA升级问题,原因是分配的内存不够了,modem重新配置了分区表,然后重新计算了super分区的大小,
问题就解决了,还是用的上面的计算方法。
#更新 2021.03.19

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。