2016-09-07 64 views
2

我有机器人棉花糖运行在一个仿真器与予执行以下命令:不能装入机器人系统分区为读/写

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 

并且在重新安装之后, as

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

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

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

再次。甚至怪异,系统似乎是可写一次:

[email protected]_x86:/system # mount | grep system         
/dev/block/vda /system ext4 rw,seclabel,relatime,data=ordered 0 0 
[email protected]_x86:/system # touch foo 
[email protected]_x86:/system # touch foo2           
touch: 'foo2': Read-only file system 
[email protected]_x86:/system # mount | grep system        
/dev/block/vda /system ext4 ro,seclabel,relatime,data=ordered 0 0 

[email protected]_x86:/system # ls -la foo*           
-rw-rw-rw- root  root   0 2016-09-07 15:50 foo 

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

+0

你好Simiil,有没有解决这个问题的运气?我正面临着确切的问题。在我的情况下,我用我已经构建的Android M图像替换了system.img,userdata.img和ramdisk.img。 – santosh

+0

不,还没有。我正在运行一个完全未修改的机器人。我现在的解决方案是每次重启只修改一件事 – Simiil

+0

解决方案的潜在类似问题:http://stackoverflow.com/questions/36670592/cannot-change-android-system-directory-to-rw – Ishamael

回答

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似乎有所帮助。