我在模拟器中运行了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
之后我必须重新启动设备,因为系统分区无法再次重新安装。
答案 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(如果存在)分区