Android 11 无法remount问题

本文针对Android11开发中遇到的remount失败问题进行了深入分析,并提供了详细的解决方案,包括如何禁用DM-Verity以允许系统分区的读写操作。

问题描述: 在Android 11开发的时候,想快速调试把单独编译好的模块push 到 /system 目录下,结果发现remount failed

C:>adb root
restarting adbd as root

C:>adb remount
Skipping /system for remount
Skipping /vendor for remount
Skipping /product for remount
No partitions to remount
remount failed

强行push 也是显示错误

 Z:framework> adb push .\framework.jar /system/
adb: error: failed to copy '.\framework.jar' to '/system/framework.jar': 
remote couldn't create file: Read-only file system
.\framework.jar: 1 file pushed, 0 skipped. 43.0 MB/s (29967488 bytes in 0.665s)

remote couldn't create file: Read-only file system


MTK解释: 原因是android P版本后google启用avb(Android Verified Boot)2.0,verified boot and DM-verity默认启用策略发生了变化。
DM-Verity behavior changes from vboot1.0 to avb2.0.
On vboot1.0, dm-verity is turned off on eng build and is enabled on userdebug/user build.
DM-verity could be disabled with adb (not fastboot) on userdebug build without unlocking device first.
DM-Verity could not be disabled on user build.
On avb2.0, dm-verity behavior are the same on all build variants.
It’s turned on by default and could only be disabled after device is unlocked.
dm-verity disable flag is moved from system image dm-verity metadata(vboot1.0) to vbmeta image(avb2.0), and you have two ways to disable it: adb and fastboot.

解决办法:

  • Android P + kernel-4.4 or kernel-3.18
download preloader with verified boot disabled which location is the same as scatter file //preloader_<PROJECT>_SBOOT_DIS.bin
adb root
adb disable-verity
adb reboot
adb root
adb remount
  • Android P + kernel-4.9 or after
1. download preloader with verified boot disabled which location is the same as scatter file. //preloader_<PROJECT>_SBOOT_DIS.bin
2.boot to Home Screen
3.go to setting -> system -> Developer options -> OEM unlocking
4.adb reboot bootloader
5.fastboot flashing unlock
6.press volume up key
7.fastboot reboot
8.adb root
9.adb disable-verity
10.adb reboot
11.adb root
12.adb remount

注意事项:

  1. 第一步需要先确认out目录有没有编译出preloader_<PROJECT>_SBOOT_DIS.bin 这个文件,是和下载时选择的Android_scatter.txt同级目录
    如果没有这个文件,那么需要先在系统里找到对应BoardConfig.mk

    	ifneq ($(wildcard vendor/mediatek/internal/sboot_disable),)
    	BOARD_BUILD_SBOOT_DIS:=yes
    	else
    	BOARD_BUILD_SBOOT_DIS:=no  // 把这个no 改为yes
    	endif
    

    把这个no 改为yes, 然后重编烧录开机,之后再进行后面的步骤。

  2. 第三步是要在开发者模式里找到OEM unlocking 并打开
    在这里插入图片描述

  3. 成功之后remount 是这样

    	Z:> adb remount
    	Using overlayfs for /system
    	Using overlayfs for /vendor
    	Using overlayfs for /product
    	Now reboot your device for settings to take effect
    	remount succeeded
    

总结: android 真的好难呀!

<think> 我们正在解决Android设备(特别是Android 16系统)在执行`adb remount`时遇到“Device must be bootloader unlocked”错误的问题。根据引用内容,解决步骤通常包括解锁bootloader。以下是综合引用信息后的步骤: 1. **启用开发者选项和OEM解锁**: - 进入设备的“设置”>“关于手机”,连续点击“版本号”7次以启用开发者选项。 - 返回“设置”>“系统”>“开发者选项”,找到“OEM解锁”选项并启用它(如果存在)。注意:某些设备可能需要在“开发者选项”中先启用“USB调试”。 2. **重启到Bootloader模式**: - 使用USB线连接设备和电脑,并确保已安装ADB和Fastboot工具。 - 在电脑上打开命令提示符或终端,执行: ```bash adb reboot bootloader ``` 设备将重启到Bootloader模式。 3. **解锁Bootloader**: - 在设备进入Bootloader模式后,执行: ```bash fastboot flashing unlock ``` 注意:这个命令可能需要设备支持(部分设备使用`fastboot oem unlock`,但根据引用[3]使用`fastboot flashing unlock`)。执行后,设备屏幕上会显示确认提示,使用音量键选择“Unlock”并按电源键确认。**注意:解锁Bootloader会清除设备所有数据,请提前备份。** 4. **验证解锁状态**: - 执行命令检查是否解锁成功: ```bash fastboot getvar unlocked ``` 如果返回`unlocked: yes`,表示解锁成功。 5. **重启设备并重新获取root权限**: - 重启设备: ```bash fastboot reboot ``` - 设备重启后,重新连接电脑,执行: ```bash adb root ``` 这应该会返回`restarting adbd as root`。 6. **执行remount**: - 尝试重新挂载系统分区: ```bash adb remount ``` 如果成功,会显示`remount succeeded`。 7. **禁用验证(可选)**: - 如果仍然有问题,可以尝试禁用verity(Android的验证机制): ```bash adb disable-verity adb reboot ``` **注意事项**: - 解锁Bootloader会使设备恢复出厂设置,务必提前备份重要数据。 - 不同设备制造商可能有不同的解锁步骤,例如部分设备需要到官网申请解锁码。如果上述步骤不适用,请查阅设备制造商的官方文档。 - 对于Android 16(可能是Android 4.1.x,因为通常Android版本号不会用16,可能是笔误),步骤类似,但注意较旧版本的Android可能使用不同的命令(如`fastboot oem unlock`)。请根据设备型号和Android版本调整。 如果按照以上步骤操作后问题仍然存在,请检查设备是否已被root,或者尝试使用其他方式挂载系统分区(如通过`adb shell`和`su`命令手动挂载)。 §§相关问题§§ 1. 如何备份Android设备数据以防止解锁Bootloader时丢失? 2. 解锁Bootloader后如何重新锁定? 3. 为什么在开发者选项中没有“OEM解锁”选项? </think>### 解决 Android 16 系统无法 remount 提示 "Device must be bootloader unlocked" 的方法 以下是分步解决方案(需提前备份数据,解锁会清除设备数据): 1. **启用开发者选项与 OEM 解锁** - 进入设备设置 → 关于手机 → 连续点击"版本号"7次开启开发者模式 - 返回设置 → 系统 → 开发者选项 → **启用"OEM unlocking"**(关键步骤)[^1][^3] - 同时启用"USB调试"选项 2. **重启至 Bootloader 模式** 连接设备到电脑,执行: ```bash adb reboot bootloader ``` 设备将进入 fastboot 模式(显示安卓机器人图标) 3. **解锁 Bootloader** 在电脑终端执行: ```bash fastboot flashing unlock # 部分旧设备可能需要 fastboot oem unlock ``` → 设备屏幕会出现确认提示,用**音量键选择"Unlock"**,电源键确认[^3][^4] 4. **验证解锁状态** ```bash fastboot getvar unlocked ``` → 出现 `unlocked: yes` 表示成功[^3] 5. **重新挂载系统分区** 重启设备后执行: ```bash adb root # 获取root权限 adb remount # 重新挂载系统分区 adb disable-verity # 关闭文件系统验证(Android 5.0+需要) adb reboot # 最后重启生效 ``` ### 注意事项 1. 解锁 Bootloader 会**清除设备所有数据**,请提前备份 2. 部分厂商设备(如华为、小米)需额外申请解锁码 3. Android 16(即 Android 4.1 Jelly Bean)属于较旧系统,建议检查设备是否支持完整 fastboot 命令 4. 若仍失败,可尝试刷入第三方 recovery(如 TWRP)手动挂载分区 > 提示:企业设备可能被策略锁定,需联系管理员获取解锁权限[^2]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值