log中hash in file是对boot分区payload部分计算sha256的值;hash in certify表示证书中的记录的sha256值,两个值必须相等。
本例中,log提示这两个值不等。可能的原因有很多:有可能是分区数据本身就有问题,也有可能计算sha256时内存中boot.img数据被修改等等。
但是,第一步要澄清分区中数据是否存在问题,即判断boot分区中证书与boot.img是否是匹配的。
本例中客户自己移植打包过程,容易造成上述问题。
与证书boot.der要匹配,如果不匹配就会导致校验不过。
可以进行如下验证:
① 执行sha256sum out//boot.img,得到boot.img的sha256值。
② 将①运算的sha256值与out//image/toc1/cnf/boot.cnf中的usr_cert块进行对比。看是否一样,如果不一样,则表明boot.img与证书不一致,打包流程出现问题,检查下是否有严格按照上述打包流程走。
与证书boot.der要匹配,如果不匹配就会导致校验不过。
可以进行如下验证:
① 执行sha256sum out//boot.img,得到boot.img的sha256值。
② 将①运算的sha256值与out//image/toc1/cnf/boot.cnf中的usr_cert块进行对比。看是否一样,如果不一样,则表明boot.img与证书不一致,打包流程出现问题,检查下是否有严格按照上述打包流程走。