不能将android系统分区挂载为读/写

时间:2016-09-07 13:55:50

标签: android adb

我在模拟器中运行了android marshmallow并执行了以下命令:

adb root
adb mount -o remount,rw /system
adb push file /system/file

,输出

adb: error: failed to copy 'file' to '/system/file': Read-only file system

奇怪的是,在重新安装系统分区之前安装为

/dev/block/vda /system ext4 ro,seclabel,relatime,data=ordered 0 0

并在重新安装后将其安装为

/dev/block/vda /system ext4 rw,seclabel,relatime,data=ordered 0 0

似乎是可读/可写的。推后是

/dev/block/vda /system ext4 ro,seclabel,relatime,data=ordered 0 0

一次。甚至更奇怪,系统似乎可写一次:

root@generic_x86:/system # mount | grep system                                 
/dev/block/vda /system ext4 rw,seclabel,relatime,data=ordered 0 0
root@generic_x86:/system # touch foo
root@generic_x86:/system # touch foo2                                          
touch: 'foo2': Read-only file system
root@generic_x86:/system # mount | grep system                               
/dev/block/vda /system ext4 ro,seclabel,relatime,data=ordered 0 0

root@generic_x86:/system # ls -la foo*                                          
-rw-rw-rw- root     root            0 2016-09-07 15:50 foo

之后我必须重新启动设备,因为系统分区无法再次重新安装。

2 个答案:

答案 0 :(得分:2)

从dmesg日志中注意到我的模拟器使用的是Ranchu.fstab(可以找到@ android-studio / sdk / system-images / android-23 / google_apis / x86)而不是goldfish.fstab。因此,在我的Android Studio(版本2.2)的SDK文件夹中移动了" kernel-ranchu"在其他地方提交。

通过此更改,当我再次运行模拟器(擦除模拟器数据)时,系统分区保持" rw"并且不会改回" ro"。

我尝试这个的原因是因为我在运行模拟器时在dmesg日志中看到的IO错误。通过不使用ranchu fstab,分区名称从/ dev / block / vda更改为/ dev / block / mtd0,依此类推。

我不确定问题的根本原因是什么,但强迫模拟器不选择ranchu.fstab似乎有所帮助。

答案 1 :(得分:0)

您应该执行:

$ adb remount

来自man adb

  

adb重新安装
  在读写设备上重新挂载/ system,/ vendor(如果存在)和/ oem(如果存在)分区