安卓ADB Unable to chmod ***: Read-only file system问题的解决方法

本文介绍了解决Android设备上ADB遇到的无法更改文件权限问题的方法。通过获取root权限并重新挂载系统分区为可读写状态,可以成功修改文件权限。

安卓ADB Unable to chmod *: Read-only file system问题的解决方法

Read-only file system : adb remount 或者 mount -o rw,remount yaffs2 /system

Unable to chmod *: Read-only file system问题的解决方法

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

adb remount 失败:remount failed: Operation not permitted

打开CMD

输入 adb shell

如果提示 adb 不是内部或外部命令,也不是可运行的程序, 则你需要先 CD 到含有adb的目录中,一般在安卓SDK的 platform-tools 文件夹下

进入 后

E:\Android\sdk\platform-tools>adb shell

shell@android:/ $

可以看到这个 $ 符号

使用 su 获得root权限

shell@android:/ $ su

su

root@android:/ #

测试看能不能修改文件权限

root@android:/ # chmod 777 system

chmod 777 system

Unable to chmod system: Read-only file system

10|root@android:/ #

可以看到不能,这时我们需要重新挂载

10|root@android:/ # mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

/dev/block/mtdblock3 /system <

root@android:/ #

没有错误提示,现在我们可以正常修改系统文件的读写权限了,来试试

root@android:/ # chmod 777 system

chmod 777 system

root@android:/ #

没有报错,一切正常,还要注意个问题, 修改子目录文件需要先修改父文件的权限。

2025-07-01 09:04:15.454 314-1971 libc cameraserver W Unable to set property "vendor.sys.camera.callprocess" to "plat.szxingfang.com": connection failed; errno=13 (Permission denied) 2025-07-01 09:04:15.455 314-1971 CameraService cameraserver I CameraService::connect call (PID -1 "plat.szxingfang.com", camera ID 114) for HAL version default and Camera API version 1 2025-07-01 09:04:15.457 314-1971 Camera2ClientBase cameraserver I Camera 114: Opened. Client: plat.szxingfang.com (PID 1703, UID 10074) 2025-07-01 09:04:15.460 1703-1703 Thread-19 plat.szxingfang.com W type=1400 audit(0.0:245): avc: denied { write } for name="gc8034_led" dev="sysfs" ino=25164 scontext=u:r:untrusted_app_29:s0:c74,c256,c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0 app=plat.szxingfang.com 2025-07-01 09:04:15.462 1703-2340 System.err plat.szxingfang.com W java.io.FileNotFoundException: /sys/class/gc8034_class/gc8034_dev/gc8034_led: open failed: EACCES (Permission denied) 2025-07-01 09:04:15.462 1703-2340 System.err plat.szxingfang.com W at libcore.io.IoBridge.open(IoBridge.java:492) 2025-07-01 09:04:15.463 1703-2340 System.err plat.szxingfang.com W at java.io.FileOutputStream.<init>(FileOutputStream.java:236) 2025-07-01 09:04:15.463 1703-2340 System.err plat.szxingfang.com W at java.io.FileOutputStream.<init>(FileOutputStream.java:125) 2025-07-01 09:04:15.463 1703-2340 System.err plat.szxingfang.com W at android.hardware.Camera.lambda$setCameraLightMode$0(Camera.java:4590) 2025-07-01 09:04:15.463 1703-2340 System.err plat.szxingfang.com W at android.hardware.-$$Lambda$Camera$qGhgdUly9cnX7HYcg6QdXFuicLA.run(Unknown Source:2) 20
07-02
01-01 00:02:51.118 2829 2829 F DEBUG : Process uptime: 2s 01-01 00:02:51.118 2829 2829 F DEBUG : Cmdline: /system/bin/app_process32 -Xzygote /system/bin --zygote --socket-name=zygote_secondary --enable-lazy-preload 01-01 00:02:51.118 2829 2829 F DEBUG : pid: 2806, tid: 2806, name: app_process32 >>> /system/bin/app_process32 <<< 01-01 00:02:51.118 2829 2829 F DEBUG : uid: 0 01-01 00:02:51.118 2829 2829 F DEBUG : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr -------- 01-01 00:02:51.119 2829 2829 F DEBUG : Abort message: 'app_process: Unable to determine ABI list from property ro.product.cpu.abilist32.' 01-01 00:02:51.119 2829 2829 F DEBUG : r0 00000000 r1 00000af6 r2 00000006 r3 ffd368d8 01-01 00:02:51.119 2829 2829 F DEBUG : r4 ffd368d8 r5 00000af6 r6 00000af6 r7 0000016b 01-01 00:02:51.119 2829 2829 F DEBUG : r8 00000000 r9 ffffffff r10 00000001 r11 00000006 01-01 00:02:51.119 2829 2829 F DEBUG : ip ffd368e8 sp ffd368d0 lr f41b8f5b pc f41b8f6e 01-01 00:02:51.119 2829 2829 F DEBUG : 5 total frames 01-01 00:02:51.119 2829 2829 F DEBUG : backtrace: 01-01 00:02:51.119 2829 2829 F DEBUG : #00 pc 0004bf6e /apex/com.android.runtime/lib/bionic/libc.so (abort+138) (BuildId: fb0c86140f7782511a28bbe8c1d8a95a) 01-01 00:02:51.119 2829 2829 F DEBUG : #01 pc 00005c27 /system/lib/liblog.so (__android_log_default_aborter+6) (BuildId: f2de12422b2c39dc5e9d98a105d7c981) 01-01 00:02:51.119 2829 2829 F DEBUG : #02 pc 00005cf5 /system/lib/liblog.so (__android_log_assert+160) (BuildId: f2de12422b2c39dc5e9d98a105d7c981) 01-01 00:02:51.119 2829 2829 F DEBUG : #03 pc 0000292f /system/bin/app_process32 (main+1554) (BuildId: ec33fbaad7b1e2be59052291d66af201) 01-01 00:02:51.119 2829 2829 F DEBUG : #04 pc 0004893b /apex/com.android.runtime/lib/bionic/libc.so (__libc_init+74) (BuildId: fb0c86140f7782511a28bbe8c1d8a95a) --------- beginning of kernel
最新发布
09-02
<think>我们面对的问题是如何在只读文件系统中删除一个目录(OplusCamera)及其内容。由于文件系统是只读的,我们无法直接删除,因此需要先改变文件系统的挂载状态,将其重新挂载为可读写,然后执行删除操作。 注意:在Linux中,只读文件系统可能是由于系统保护机制(如某些系统分区)或错误导致的。在修改系统文件前,请确保您知道自己在做什么,以免造成系统损坏。 步骤: 1. 确定目标目录所在的文件系统挂载点。 2. 重新挂载该文件系统为可读写(rw)模式。 3. 执行删除操作。 4. 如果需要,可以重新挂载为只读(ro)模式(可选)。 详细步骤: 1. 确定挂载点: 使用 `df` 命令查看目标目录所在的文件系统挂载点。例如,如果目标目录是 `/system/OplusCamera`,则运行: df /system/OplusCamera 或者,如果知道目录的绝对路径,可以直接使用。 2. 重新挂载为可读写: 假设目标目录位于 `/system` 分区(从上面的df命令输出中得知),那么我们可以重新挂载: mount -o remount,rw /system 注意:需要root权限,所以通常使用sudo或者先切换到root用户。 3. 删除目录: rm -rf /system/OplusCamera 4. (可选)恢复只读模式: mount -o remount,ro /system 但是,请注意,有些系统分区(如/system)在正常运行时可能是只读的,并且在某些设备上(如Android)可能受到保护。因此,在Android设备上,通常需要先解锁系统分区(如通过刷入自定义恢复和获取root权限)才能重新挂载为可写。 另外,如果文件系统由于错误而处于只读模式(例如磁盘错误),则重新挂载为可读写可能不会成功,并且可能会进一步损坏文件系统。在这种情况下,应该先修复文件系统(使用fsck)然后再尝试。 根据用户的问题,他们试图删除OplusCamera目录,并且遇到了只读文件系统的问题。因此,我们按照上述步骤进行。 注意:在Android设备上,如果/system分区是只读的,并且设备已经root,那么可以使用以下命令: su mount -o rw,remount /system rm -rf /system/OplusCamera mount -o ro,remount /system 但是,请确保您有足够的权限,并且该目录确实位于/system分区。 如果目标目录位于其他分区(如/data),则相应地调整挂载点。 如果用户没有root权限,那么可能无法重新挂载系统分区,这时需要先获取root权限。 另外,如果文件系统是只读的且无法重新挂载(例如,由于硬件写保护),则可能需要从恢复模式(recovery mode)或使用其他工具进行修改。 考虑到用户可能是在Android设备上操作,我们给出一个典型的解决方案。 参考引用[1]中提到的方法是关于修改单个文件的只读属性,而这里我们面对的是整个文件系统只读,所以方法不同。但原理类似,都是需要先获得写权限。 因此,回答如下:</think>### 如何在只读文件系统中删除 OplusCamera 目录 在 Linux 系统中遇到文件系统只读的问题时(常见于系统分区保护或硬件错误),需通过以下步骤删除目录: #### 1. **检查文件系统错误** 先验证磁盘健康状态,避免因硬件故障导致只读模式: ```bash sudo fsck /dev/sdX # 替换 sdX 为实际分区(如 sda1) ``` #### 2. **重新挂载为可读写模式** 获取 root 权限并重新挂载目标分区: ```bash sudo su mount -o remount,rw / # 若目录在根分区 ``` 若目录在其他分区(如 `/system`): ```bash mount -o remount,rw /system ``` #### 3. **强制删除目录** 执行递归强制删除: ```bash rm -rf /path/to/OplusCamera # 替换为实际路径 ``` #### 4. **恢复只读模式(可选)** 操作完成后恢复保护状态: ```bash mount -o remount,ro / # 或对应分区 ``` #### 5. **替代方案:覆盖安装新文件系统** 若挂载操作失败(常见于硬件故障): ```bash sudo mkfs.ext4 /dev/sdX # 格式化分区(谨慎使用!会清除所有数据) sudo mount /dev/sdX /mnt ``` #### 关键注意事项: 1. **权限要求**:所有操作需 `root` 权限,使用 `sudo` 或 `su` 2. **路径确认**:通过 `df -h /path/to/OplusCamera` 确认目录所在分区 3. **系统保护**:安卓系统分区需解锁 Bootloader 才能修改 4. **数据备份**:重要数据提前备份,避免误操作损失 > 示例流程: > ```bash > # 查看目录所在分区 > df -h /system/OplusCamera > > # 重新挂载为读写模式 > adb root # 安卓设备需 ADB 调试 > adb remount rw # 安卓专属命令 > > # 删除目录 > adb shell rm -rf /system/OplusCamera > ``` --- ### 相关问题 1. **如何修复因磁盘错误触发的只读文件系统?** 2. **在 Android 设备上修改系统分区需要哪些前置条件?** 3. **`rm -rf` 和 `rmdir` 删除目录有何本质区别?** 4. **Linux 文件系统只读模式有哪些常见触发原因?** [^1]: 参考 Linux 文件权限管理机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值