MTK Android 9.0(Android P) + kernel-4.9 默认关闭DM Verity 和secure boot 解决无法adb remount的问题

这篇博客介绍了如何在Android P版本上解决adb remount失败的问题,特别是针对kernel 4.9及以上的情况。通过关闭DMVerity和secureboot,可以在编译时直接实现adb remount,无需每次刷机后进行繁琐的解锁步骤。详细步骤包括修改平台规则文件和预加载Makefile,确保设备在开机时不再受写保护。
摘要由CSDN通过智能技术生成

在android P版本上执行adb remount会提示以下错误:

remount of the / superblock failed: Permission denied
remount failed

如果是 Android P + kernel-4.4 or kernel-3.18 ,只需如下操作:
# adb root
# adb disable-verity
# adb reboot
# adb root
# adb remount

如果是 Android P + kernel-4.9以上 ,需要操作:

- go to setting -> system -> Developer options -> OEM unlocking
# adb reboot bootloader
# fastboot flashing unlock
# press volume up key
# fastboot reboot
# adb root
# adb disable-verity
# adb reboot
# adb root
# adb remount

这是不是很麻烦,这里教码友们如何在编译时,直接就能adb remount

我们需要关闭DM Verity 和secure boot 。

一、关闭DM Verity:

在 alps/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/$(PLATFORM)/rules.mk 中

将:

    ifeq ($(MTK_DM_VERITY_OFF),yes)
        DEFINES += MTK_DM_VERITY_OFF
    endif

改为强制定义 MTK_DM_VERITY_OFF:

        DEFINES += MTK_DM_VERITY_OFF

也可以改成,仅Debug版本才定义MTK_DM_VERITY_OFF:

ifeq ($(strip $(TARGET_BUILD_VARIANT)),user)
    ifeq ($(MTK_DM_VERITY_OFF),yes)
        DEFINES += MTK_DM_VERITY_OFF
    endif
else
    DEFINES += MTK_DM_VERITY_OFF
endif

修改后rebuild,会发现在开机Logo界面提示:Your device has been unlocked and can't be trusted

说明已经修改成功了。

但是目前还不能正常调试,我们会发现通过 adb push文件到system分区之后一旦重启,push的文件会被自动恢复.

是因为平台的secure boot机制,对system分区有写保护,导致无法对system进行写入,只需要将该功能关掉即可。

二、关闭secure boot

在 alps/vendor/mediatek/proprietary/bootable/bootloader/preloader/Makefile 中

将:

    @echo '#'define CUSTOM_SUSBDL_CFG $(MTK_SEC_USBDL) >> $@
    @echo '#'define CUSTOM_SBOOT_CFG $(MTK_SEC_BOOT) >> $@

改为:

    @echo '#'define CUSTOM_SUSBDL_CFG ATTR_SUSBDL_DISABLE >> $@
    @echo '#'define CUSTOM_SBOOT_CFG ATTR_SBOOT_DISABLE >> $@

也可以只针对debug版本进行修改:

ifeq ($(TARGET_BUILD_VARIANT), user)
    @echo '#'define CUSTOM_SUSBDL_CFG $(MTK_SEC_USBDL) >> $@
    @echo '#'define CUSTOM_SBOOT_CFG $(MTK_SEC_BOOT) >> $@
else
    @echo '#'define CUSTOM_SUSBDL_CFG ATTR_SUSBDL_DISABLE >> $@
    @echo '#'define CUSTOM_SBOOT_CFG ATTR_SBOOT_DISABLE >> $@
endif

至此,码友们就可以正常的进行adb调试了。而不必每次刷机后,又得OEM unlock。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值