如何确认 fastboot unlock 解锁成功,如何确认DM-verity 已关闭

如题所述

第1个回答  2022-06-13

1、fastboot 模式下按音量上键后是否提示 Unlock Pass...return to fastboot in 3s

2、重启后界面是否显示

orange state
Your deivce has been unlocked and can't be trusted
your device will boot in 5 seconds

3、解锁成功后检查这两个属性会从
[ro.boot.flash.locked]: [1]
[ro.boot.verifiedbootstate]: [green]
变成
[ro.boot.flash.locked]: [0]
[ro.boot.verifiedbootstate]: [orange]

确认已成功关闭dm-verity
adb shell mount

看到vendor 和system分区挂在如下mmcblk0pxx block表示dm-verity已关闭成功
k65v1_bsp:/ # mount |grep data
/dev/block/mmcblk0p35 on /vendor type ext4 (ro,seclabel,relatime,data=ordered)
/dev/block/mmcblk0p36 on /system type ext4 (ro,seclabel,relatime,data=ordered)

如显示挂载到 dm-x 节点 表示dm-verity仍然开启
k65v1_bsp:/ # mount |grep data
/dev/block/dm-0 on /vendor type ext4 (ro,seclabel,relatime,data=ordered)
/dev/block/dm-1 on /system type ext4 (ro,seclabel,relatime,data=ordered)

若不成功可检查 vbmeta, boot, system ,vendor 分区等是否在write protect 区间里

导致adb disable-verity 的flag无法成功写入 到 vbmeta |boot | system | vendor 分区里

参考/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6771/write_protect.c
的set_write_protect 函数

set_write_protect()里面会将proinfo分区设定在power on write protect区域内

为了proinfo分区能写入flag,需要将proinfo分区的power on write protect拿掉
修改方法:
1.全部分区关掉写保护功能
/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6xxx/rules.mk
MTK_POWER_ON_WP := no

2.单独拿掉proinfo分区写保护

if (0 == is_fs_partition_ready_for_wp("persist")) {
dprintf(CRITICAL, "[%s]: persist is fmt \n", func );
sprintf(wp_start, "%s", "persist");
} else {
sprintf(wp_start, "%s", "sec1");//修改这里写保护分区的起始分区,去掉proinfo分区,注意剩下保留分区大小必须8M对齐
}

sprintf(wp_start, "%s", "sec1");//修改这里写保护分区的起始分区,去掉proinfo分区,注意剩下保留分区大小必须8M对齐

[DESCRIPTION]
android 6.0 M版本默认会打开system verified boot,即在userdebug和user版本会把system映射到dm-0设备,然后再挂载。挂载前会检查system分区数据完整性,如果system分区被恶意修改了则不允许挂载system。

[SOLUTION]
userdebug版本如果需要remount system分区来push文件debug,不需要重新编译版本disable dm-verity,只需要执行以下adb命令即可。
adb root
adb disable-verity
adb reboot

重新启动后再执行:
adb remount即可把system分区remount成rw。

贵司向system分区push文件后,请不要再adb enable-verity,否则就会无法开机,因此push文件后,system分区数据就发生了变化。

adb disable-verity/enable-verity 命令只能在userdebug模式下使用。user版本不支持关闭dm-verity。
如果您的adb不支持adb disable-verity命令,请更新android sdk platform-tools到最新版本。

相似回答