当前位置: 首页 > 工具软件 > DM-Cache > 使用案例 >

[高通SDM450][Android9.0]默认取消dm-verity以及解决OTA校验vbmeta失败问题

胡玉书
2023-12-01

开发平台基本信息

芯片: SDM450
版本: Android 9.0
kernel: msm-4.9

问题描述

在user版本增加root权限之后,每次进行remount的时候,总会提示

remount of the / superblock failed: Permission denied
remount failed

这时候,需要先关闭dm-verify,重启,再remount;整个过程过于复杂,于是决定关闭dm-verify。

解决方法

--- a/external/avb/avbtool
+++ b/external/avb/avbtool
@@ -3562,7 +3562,7 @@ class AvbTool(object):
     sub_parser.add_argument('--flags',
                             help='VBMeta flags',
                             type=parse_number,
-                            default=0)
+                            default=2)
     sub_parser.add_argument('--set_hashtree_disabled_flag',
                             help='Set the HASHTREE_DISABLED flag',
                             action='store_true')

关闭dm-verity引发的问题

上面关闭dm-verify之后,终于可以直接执行remount了;但是,再打包输入正式固件的时候却发现OTA升级失败了,不管是全量包还是差分包都无法升级,通过cache目录下的日志可以看到报错

E:Failed to verify package compatibility (result 1): Runtime info and framework compatibility matrix are incompatible: Vbmeta version 0.0 does not match framework matrix 1.0

从上面的报错可以看到vbmeta跟framework matrix校验失败了,那么就干脆一点,OTA升级的时候,直接关闭校验。

--- a/system/libvintf/RuntimeInfo.cpp
+++ b/system/libvintf/RuntimeInfo.cpp
@@ -181,7 +181,8 @@ bool RuntimeInfo::checkCompatibility(const CompatibilityMatrix& mat, std::string
                    << " does not match framework matrix " << matAvb;
                 *error = ss.str();
             }
-            return false;
+            // return false;
+            return true;
         }
     }
 类似资料: