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

在Android9.0系统中,为SDM450芯片的设备增加root权限后,remount操作遇到权限问题。通过修改avbtool关闭dm-verity可解决remount失败,但会导致OTA升级时VBMeta与frameworkmatrix校验失败。为使OTA升级正常,需进一步禁用校验检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发平台基本信息

芯片: 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;
         }
     }
<think>好的,用户之前问过如何解锁MIUI 12的System分区,现在他接着问如何禁用dm-verity的操作过程。首先,我需要回顾之前提供的步骤,确保现在回答的一致性和连贯性。之前提到在解锁System分区时,需要禁用dm-verity和处理AVB 2.0验证,所以现在用户需要更详细的步骤。 接下来,我需要确认用户可能的需求。用户可能已经完成了Bootloader解锁和刷入TWRP,现在需要修改系统分区,但遇到dm-verity的阻碍。禁用dm-verity是必须的步骤,否则系统可能无法启动或者修改被还原。 然后,我应该考虑用户的技术水平。用户可能有一定的刷机经验,但可能对具体命令和步骤不太熟悉,需要详细且清晰的指导。同时,用户可能没有意识到操作的风险,需要再次强调注意事项,比如备份数据、可能变砖等。 需要详细解释每一步骤,包括进入Fastboot模式、刷入vbmeta镜像、使用Magisk处理等不同方法。同时,提供备用方案,比如使用Magisk模块或自定义内核,这样用户可以根据自己的情况选择合适的方法。 还要注意不同机型和MIUI版本可能有差异,提醒用户参考特定机型的教程。另外,用户可能在操作过程中遇到问题,比如命令执行失败,可能需要给出常见问题解决方法,比如驱动安装、镜像文件是否正确等。 最后,再次强调风险,确保用户明白操作可能导致的问题,并建议备份和了解恢复方法。这样用户即使在操作失败后,也能有办法恢复设备,减少损失。</think>以下是禁用Android设备`dm-verity`(设备映射验证)的标准操作流程及技术说明: --- ### 一、核心原理 $$ \text{dm-verity} = \text{内核级分区校验} + \text{哈希树验证} $$ 其作用是通过校验`system`、`vendor`等分区的哈希值,阻止未经签名的修改。禁用后将允许对系统分区进行读写操作。 --- ### 二、前置条件 1. 已解锁Bootloader 2. 已安装ADB和Fastboot工具 3. 已获取对应机型的`vbmeta.img`(可从官方线刷包提取) --- ### 三、操作流程(两种主流方案) #### █ 方案A:通过Fastboot刷入修改版vbmeta **步骤1:进入Fastboot模式** ```bash adb reboot bootloader ``` **步骤2:禁用验证标志** ```bash fastboot flash vbmeta vbmeta.img --disable-verity --disable-verification ``` *注:部分机型需额外参数:`--disable-verification`* **步骤3:清除avb密钥(可选)** ```bash fastboot erase avb_custom_key ``` **步骤4:重启设备** ```bash fastboot reboot ``` --- #### █ 方案B:通过TWRP终端操作 **步骤1:挂载system分区** - 在TWRP界面勾选`System`分区 **步骤2:禁用dm-verity** ```bash adb shell echo -ne &#39;\x00&#39; > /dev/block/by-name/vbmeta avbctl disable-verification ``` **步骤3:移除加密标记** ```bash find /system -name "*verity*" -delete ``` --- ### 四、验证是否成功 ```bash adb shell dmesg | grep "dm-verity" ``` 若显示`dm-verity is disabled`即为成功 --- ### 五、风险控制 1. **必做备份**: ```bash adb pull /dev/block/by-name/vbmeta vbmeta_backup.img ``` 2. 失败恢复方案: ```bash fastboot flash vbmeta vbmeta_original.img ``` --- ### 六、深度技术说明 1. **现代Android验证架构**: $$ \text{Verified Boot} = \text{AVB 2.0} + \text{Chain of Trust} $$ 2. 不同机型处理差异: - 高通芯片设备:需处理`vbmeta`和`dtbo`分区 - 联发科设备:可能需要修改`preloader`分区 --- ### 七、替代方案(推荐) 1. **Magisk高级方案**: ```bash magisk --disable-verity --disable-verification ``` 2. 使用自定义内核: $$ \text{内核参数} += \text{androidboot.veritymode=disabled} $$ --- ### 重要提示 - 部分MIUI版本(如基于Android 11+)已强制启用`fs-verity`,需额外操作: ```bash adb shell setprop persist.fflag.override.settings_fsverity 0 ``` - 操作后首次启动可能耗时较长(需重建文件系统) 建议优先参考XDA论坛中针对您具体机型(如Redmi Note系列/小米数字系列)的专项教程,不同SOC平台(骁龙/天玑/Exynos)存在显著差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值