Android如何 如何关闭 DM-verity
[DESCRIPTION]
在需要对image文件(如system.img)等进行解包->修改->打包->烧录后,可能会出现无法开机的现象。
这个问题主要是受到了DM-Verity的影响。
从P版本开始,DM-Verity由vboot1.0 更新到了 avb2.0,dm-verity 的关闭标志也从system image 的dm-verity metadata(vboot1.0) 中搬到了 vbmeta image(avb2.0)。
在vboot1.0 中,dm-verity 在eng build中默认关闭,在 userdebug/user build中默认开启。在userdebug build(不包括user load)中可以通过adb (并非 fastboot)直接关闭DM-verity而不需要先进行unlock。
在 avb2.0中, dm-verity 在所有build类型中默认开启,且只能在unlock之后才可以通过adb 或 fastboot关闭。
[SOLUTION]
解决的方法有两种(此项修改可能会导致CTS等测试无法通过,请根据实际需求使用):
1.在烧录前进行unlock操作,具体步骤请参考:
FAQ20567 替换谷歌system.img后无法开机
2.在编译前作一定的修改:
2.1 Android N之前有两种方法:
(1) 将build/target/product/verity.mk中的
PRODUCT_SUPPORTS_VERITY := true
改为:
PRODUCT_SUPPORTS_VERITY := false
(2) 在vendor/mediatek/proprietary/hardware/fstab/{platform}/fstab.in中(以vendor image为例):
/dev/block/platform/mtk-msdc.0/11230000.msdc0/by-name/vendor /vendor __MTK_VNDIMG_FSTYPE ro wait,verify,recoveryonly
将"verify"去除。
2.2 Android O中需要进行如下改动:
(1)在build/target/product/verity.mk中,将
PRODUCT_SUPPORTS_VERITY := true
PRODUCT_SUPPORTS_VERITY_FEC := true
改为 :
PRODUCT_SUPPORTS_VERITY := false
PRODUCT_SUPPORTS_VERITY_FEC := false
(2) 在/device/{mediatekprojects|mediateksample}/{Project}/ProjectConfig.mk中,将
MTK_DM_VERITY_OFF = no
改为 :
MTK_DM_VERITY_OFF = yes
(3)在/kernel/{arch|arch64}/{arm|arm64}/configs/{Project}defconfig中,将
CONFIG_DM_VERITY=y
改为 :
CONFIG_DM_VERITY=n
同时,添加:
CONFIG_MTK_DM_VERITY_OFF=y
(4)
For O0:
在system/core/fs_mgr/Android.mk 中,将
ifneq (,(filtereng,(filter eng,(filtereng,(TARGET_BUILD_VARIANT)))
LOCAL_CFLAGS += -DALLOW_SKIP_SECURE_CHECK=1
endif
改为:
#ifneq (,(filtereng,(filter eng,(filtereng,(TARGET_BUILD_VARIANT)))
LOCAL_CFLAGS += -DALLOW_SKIP_SECURE_CHECK=1
#endif
For O1:
在/system/core/fs_mgr/Android.bp中,在
product_variables: {
前面添加:
cppflags: ["-DALLOW_SKIP_SECURE_CHECK=1"],
2.3 Android P上的修改步骤:
(1)关闭preloader的 verity:
修改 preloader 的custom 文件.
以evb6765_64_emmc为例:
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/evb6765_64_emmc/evb6765_64_emmc.mk中关闭boot verify:
MTK_SEC_USBDL=ATTR_SUSBDL_DISABLE
MTK_SEC_BOOT=ATTR_SBOOT_DISABLE
配置好后重新编译下载preloader (out中的preloader_project_name_SBOOT_DIS.bin)。
至此,未签名的image就可以download 和boot了。
(2)
对于 Android P + kernel-4.4:
- adb root
- adb disable-verity
- adb reboot
对于 Android P + kernel-4.9 及以上:
- boot to Home Screen
- go to setting -> system -> Developer options -> OEM unlocking
按照以下cmd执行
(PC进入cmd窗口后,先进入到platform-tools目录,因为该目录下才有fastboot.exe.以下cmd才能正常运行.对应的platform-tools位于sdk目录下) - 输入"adb reboot bootloader"
- 等到画面出现"=> fastboot mode…",输入"fastboot flashing unlock"
- 画面会出现一段文字,press volume up key
- 画面切换到下一个选单后,输入"fastboot reboot"
手机重启完毕后,按以下指令执行: - adb root
- adb disable-verity
- adb reboot
Android 中的 dm-verity
Android如何 如何关闭 DM-verity相关推荐
- MTK Android 9.0(Android P) + kernel-4.9 默认关闭DM Verity 和secure boot 解决无法adb remount的问题
在android P版本上执行adb remount会提示以下错误: remount of the / superblock failed: Permission denied remount fai ...
- android禁用应用组件,Android彻底退出(关闭)应用程序.docx
Android彻底退出(关闭)应用程序.docx 做android开发时,发现一个关于android退出时不能彻底关闭的问题,比如:一个程序里new?出了N多个Thread,这样在退出程序的可能不能完 ...
- Android Studio设置关闭当前页面的快捷键ctrl+w
Android Studio设置关闭当前标签页面的快捷键 左上角File-选择Settings- 弹出框输入Keymap-右边依次找到Main Menu-Window-Editor Tabs-Clos ...
- 2020-11-02 Android LOG如何关闭打开打印信息
Android LOG如何关闭打开打印信息 一.添加头文件和定义LOG_TAG 二.system/core/include/log/log.h 三.分析上面的代码,如果不想打印log,Android. ...
- 如何在Android中打开/关闭相机LED /手电筒
在本教程中,我们向您展示如何在Android中打开/关闭手机摄像头或手电筒. 查看代码段: 1.开启 camera = Camera.open();Parameters p = camera.getP ...
- 美版三星s7 g930 p版刷官方国际版安卓8以及手机卡信号和关闭DM服务相关问题
看了很久没有美版单卡g930p的详细刷机教程,就随手出了一篇.首先说一下,机子是两三年前的机子了,反正好久了具体多久也记不清了,刚买来的时候是还在出note7,因为是水货美版,所以没办法跟国行的刷新走 ...
- android 电源管理 关闭屏幕,Android之PowerManager电源管理
翻译来源PowerManager 这个类让你拥有控制设备状态的权利. 使用这个api类会很明显地影响设备电量的使用时长.除非你确实需要PowerManager.WakeLock否则不要轻易使用它们,并 ...
- android toast通知关闭,屏蔽系统通知,Toast无法显示的解决方案 v2.0.0
为了大家方便沟通和使用,建立了一个QQ群供大家交流,欢迎大家的加入 群名称:EToast交流群 群 号:547279762 更新日志: v2.2.1(2019年5月28日10:24:41) 在2.2. ...
- android代码打开数据库,Android打开和关闭数据库
与计算机编程中的许多事情一样,关闭SQLite数据库的时间没有单一的"正确进行"(如果您正在使用它,则通过SQLiteOpenHelper上的close(),否则对SQLiteDa ...
- android代码打开数据库,android – 如何正确关闭并重新打开Room数据库
您好我有2个应用程序依赖于制作和恢复应用程序数据库的备份,只需将数据库文件复制到SD卡中,然后很难确定如何在关闭它之后重新打开Room Database单例以创建数据库'副本. 构建数据库: @Dat ...
最新文章
- zabbix监控交换机出图断断续续
- CSDN博客 专用备份工具
- 交际中你所不知道的说话的12个技巧!
- php 多线程处理redis,redis的多线程
- AJAX框架衣柜内部布局,​最合理的衣柜内部布局解析,3大细节不容小觑
- c语言判断化学方程式,下列是某同学写的六个化学方程式:①Mg+O2点燃.MgO2②C+O2点燃.CO...
- 卸载win10装Ubuntu笔记
- 关于指向堆的指针内涵
- linux系统mount命令挂载windows系统共享文件夹
- mysql-hash分区管理维护
- vuex的计算属性_vue中vuex的五个属性和基本用法
- 视频画面帧的展示控件SurfaceView及TextureView对比
- 读书行动笔记2013第2本:《整理的艺术》
- MTK8788,6765,通用平台的按键驱动添加
- 三星笔记本BIOS文件提取 三星笔记本BIOS降级
- JAVA中InputStream转base64
- jQuery选择器详细介绍
- 漫谈程序员(八)阿里巴巴集团合伙人花名单
- excel切片器_利用切片器制作动态交互图表
- AES 轮密钥(子密钥如何生成).md