在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。