adb(11)-重新挂载 system 分区为可写

本文介绍如何使用root权限将Android设备的/system分区从只读改为可读写状态,以便进行命令添加或应用删除等操作。文章详细展示了通过命令行进入shell并切换到root用户,然后利用mount命令检查当前分区挂载情况,最后重新挂载/system分区的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:需要 root 权限。

/system 分区默认挂载为只读,但有些操作比如给 Android 系统添加命令、删除自带应用等需要对 /system 进行写操作,所以需要重新挂载它为可读写。

步骤:

  1. 进入 shell 并切换到 root 用户权限。

    命令:

    adb shell
    su
    
  2. 查看当前分区挂载情况。

    命令:

    mount
    

    输出示例:

    rootfs / rootfs ro,relatime 0 0
    tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
    devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
    proc /proc proc rw,relatime 0 0
    sysfs /sys sysfs rw,seclabel,relatime 0 0
    selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
    debugfs /sys/kernel/debug debugfs rw,relatime 0 0
    none /var tmpfs rw,seclabel,relatime,mode=770,gid=1000 0 0
    none /acct cgroup rw,relatime,cpuacct 0 0
    none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
    none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
    tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
    tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
    none /dev/memcg cgroup rw,relatime,memory 0 0
    none /dev/cpuctl cgroup rw,relatime,cpu 0 0
    none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
    none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
    none /sys/fs/cgroup/freezer cgroup rw,relatime,freezer 0 0
    /dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
    /dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
    /dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
    /dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
    /dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
    /dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
    /dev/fuse /mnt/shell/emulated/0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
    

    找到其中我们关注的带 /system 的那一行:

    /dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
    
  3. 重新挂载。

    命令:

    mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system
    

    这里的 /dev/block/platform/msm_sdcc.1/by-name/system 就是我们从上一步的输出里得到的文件路径。

如果输出没有提示错误的话,操作就成功了,可以对 /system 下的文件为所欲为了。

转载于:https://www.cnblogs.com/jiablogs/p/8794512.html

<think>好的,用户在使用adb shell时遇到了只读文件系统的问题,需要解决方案。首先,我需要回忆一下常见的导致文件系统只读的原因。可能的原因包括文件系统错误、权限不足、设备未root,或者分区本身是只读的。 首先,用户可能需要以root权限运行adb。使用adb root命令可以尝试获取root权限,但需要设备已解锁并支持root。如果设备未root,这一步可能无效,所以需要考虑其他方法。 接下来,重新挂载文件系统为可写。通常,系统分区在安卓中是只读的,使用adb remount命令可以将分区重新挂载为可读写。如果这个命令不起作用,可能需要先执行adb root,或者设备本身不支持remount。 如果上述方法失败,可能需要手动使用mount命令来重新挂载分区。通过adb shell进入设备,然后执行mount命令查看当前挂载情况,找到需要修改的分区,比如/system,然后使用mount -o rw,remount /system重新挂载可写模式。不过,这需要设备有相应的权限。 另外,文件系统错误也可能导致自动挂载为只读。这时候可以尝试在恢复模式下运行fsck来修复文件系统错误,但这通常需要设备进入恢复模式,并且用户可能需要一定的技术知识。 如果用户只是想临时修改文件,可以尝试将文件复制到可写的目录,比如/sdcard,修改后再复制回去。但需要注意权限问题,复制回去可能需要root权限。 此外,用户可能需要检查设备是否启用了写保护,比如某些设备的OEM锁或系统设置中的选项。关闭USB调试后再重新启用,或者重启设备有时也能解决临时的问题。 在引用中,用户提到了使用adb shell pm grant来授予权限,这可能涉及到权限管理的问题。如果问题与特定应用的权限有关,可能需要检查相关权限设置,但当前问题更偏向于文件系统的读写权限。 总结可能的解决步骤:尝试remount,获取root权限,手动重新挂载,检查文件系统错误,复制文件修改等。需要根据设备的具体情况来选择合适的解决方案,并提醒用户注意操作风险,避免造成系统不稳定。</think>在使用 `adb shell` 遇到文件系统只读问题时,可以按照以下步骤排查和解决: ### 1. 检查设备是否以 root 权限运行 - 使用 `adb root` 命令尝试获取 root 权限: ```bash adb root ``` 如果设备已解锁并支持 root,此命令会将 adb 会话切换到 root 模式[^1]。 ### 2. 重新挂载文件系统为可写 - 尝试通过 `adb remount` 重新挂载分区: ```bash adb remount ``` 此命令会将 `/system` 等分区重新挂载为可读写模式。若失败,可能需要结合 `adb root` 使用[^3]。 ### 3. 手动挂载为可读写 - 进入 `adb shell` 后,通过 `mount` 命令查看当前挂载点: ```bash adb shell mount | grep /system # 示例:查找/system分区挂载信息 ``` - 手动重新挂载(需 root 权限): ```bash mount -o rw,remount /system # 替换为实际分区路径 ``` ### 4. 检查文件系统错误 - 若文件系统因错误自动挂载为只读,可在设备恢复模式下运行 `fsck` 修复: ```bash adb reboot recovery # 进入恢复模式后使用工具修复 ``` ### 5. 临时修改文件(无 root 权限时) - 将只读文件复制到可写目录(如 `/sdcard`),修改后覆盖原文件: ```bash adb pull /system/file.txt /sdcard/file.txt # 修改文件 adb push /sdcard/file.txt /system/file.txt ``` 此操作可能需要 root 权限。 ### 6. 检查设备写保护 - 某些设备(如部分华为、小米机型)启用 OEM 锁或系统写保护,需在开发者选项中关闭相关限制。 ### 注意事项 - 修改系统文件可能导致设备不稳定,操作前建议备份。 - 部分安卓版本(如 Android 10+)对系统分区限制更严格,需使用动态分区或 Magisk 等工具绕过。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值