只读Android上的文件系统

我最近根植了我的Droid X,一切似乎都很完美。 我做了一些修改build.prop ,当我做adb push build.prop /system/我得到以下错误: failed to copy 'c:\build.prop' to '/system//build.prop': Read-only file system

我怎样才能解决这个问题?

不是所有的手机和Android版本都安装了相同的东西。
限制重新安装时的select是最好的。

只需重新安装为rw(读/写):

 # mount -o rw,remount /system 

一旦完成更改,重新安装到ro(只读):

 # mount -o ro,remount /system 

得到这个关于Android论坛,我问了同样的问题。 希望这可以帮助别人。

在手机上的terminal仿真器上:

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

然后在cmd提示符下,执行adb push

 adb remount 

为我工作,似乎是最简单的解决scheme。

我认为最安全的方法是使用以下命令将/ system重新挂载为读写:

 mount -o remount,rw /system 

完成后,将其重新装入为只读:

 mount -o remount,ro /system 

虽然我知道这个问题是关于真实设备的问题,但如果有人在模拟器中遇到过类似的问题,那么到2017年2月为止,无论使用什么工具,模拟器都需要从命令行启动:

 -writable-system 

任何可写入/system 。 如果没有这个标志, remountmount组合将不允许写入/system

使用该标志启动仿真器之后, adb root之后的单个adb remount足以获取到/system权限。

这里是我用来运行我的模拟器的命令行的一个例子:

 ./emulator -writable-system -avd Nexus_5_API_25 -no-snapshot-load -qemu 

-avd标志的值来自:

 ./emulator -list-avds 

在我的三星Galaxy S5570(在手机上得到根)之后:

拳头,作为根,我跑了:

 systemctl start adb 

作为普通用户:

 adb shell su 

在触摸屏上授予root权限

 mount 

列出所有的挂载点,我们可以看到,在我的情况下,/ dev / stl12挂载在/ system作为ro(就绪),所以我们只需要做:

 mount -o rw,remount /dev/stl12 /system 

在命令提示符处尝试以下操作:

 >adb remount >adb push framework-res_old.apk /system/framework-res.apk 

然后在手机上打开terminal模拟器

 adb shell 

之后,守护进程启动

 su mount -o rw,remount /mnt/sdcard 

那么只读被转换成读写。

我发现这篇文章从谷歌,并认为我会添加索尼Xperia Z(4.2.2)所需的步骤。

索尼有一个看门狗进程,它可以检测你何时将ro改为rw on /和/ system(这是我试图修改的唯一的),也可能是其他的。

以下就是我试图实现的变化。 我将它们粘贴到一个窗口中,因为从/ sbin / ric中删除执行位需要快速完成,以阻止它重新启动。 (我试过stop ric ;这不起作用 – 虽然它在手机上的以前版本的Android上工作)。

 pkill -9 ric; mount -o rw,remount -t rootfs / chmod 640 /sbin/ric mount -o rw,remount /system 

我在这里修改了主机文件,所以这是你需要对文件系统进行修改的地方。 按照我们find它们的方式,请按照以下步骤操作:

 mount -o ro,remount /system chmod 750 /sbin/ric mount -o ro,remount -t rootfs / 

在哪一点ric应该自动重启。 (它自动重新启动。)

在JanBergström的回答中增加了一点:由于Android是一个基于Linux的系统,而Linux中的path包含正斜杠(../),所以在使用push命令时,使用“/”在Android设备中定义目标path。

例如,命令是:adb push C:\ Users \ admin \ Desktop \ 1.JPG sdcard / pictures /

请注意,在这里,反斜线用于定义要从Windows PC推送的文件的源path,正斜杠用于定义目标path,因为Android是基于Linux的系统。 你不必以root身份使用这个命令,而且它在生产设备上也能很好地工作。

有时你会得到错误,因为手机中的目标位置不存在。 例如,某些android手机外部存储位置是/storage/emulated/legacy而不是/storage/emulated/0

 mount -o rw,remount /dev/stl12 /system 

为我工作

谢谢, 塞尔吉奥 ,为“挂载”命令没有参数的想法。 我需要让/data/data/com.my.app/lib adb push/data/data/com.my.app/lib的一些testing问题,并获得“只读文件系统”消息。

ls命令显示我:

root@android:/ # ls -l /data/data/com.my.app/
drwxrwx--x u0_a98 u0_a98 2016-05-06 09:16 cache drwxrwx--x u0_a98 u0_a98 2016-05-06 09:04 files lrwxrwxrwx system system 2016-05-06 11:43 lib -> /mnt/asec/com.my.app-1/lib

所以,据了解,“lib”目录与其他应用程序目录是分开的。

命令mount -o rw,remount /mnt/asec没有解决“r / o fs”问题,它需要在目录参数之前的设备参数。

“df”命令也没有帮助,但显示我的/mnt/asec/com.my.app-1目录是在单独的挂载点。

然后我看着mount和瞧!

root@android:/ # mount ......... /dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0

接下来的步骤已经被描述:重新安装到RW,重新安装到RO。

它必须提取和重新包装initrc.img并用mount / system的代码编辑init文件

如果在复制只读文件时出现故障,您可以尝试在根目录中find原始文件,并使用根文本编辑器(最好是RB文本编辑器)对其进行修改,它随附有ROM Toolbox应用程序。

以root身份在terminal模拟器中试试这个:

 restorecon -v -R /data/media 

将文件复制到SD卡?

那么,我假设你喜欢从开发人员的电脑中复制数据到Sd卡? 你可能已经扎根devise,并使您所在的地区可用?)我有同样的问题上传数据文件为我的应用程序(Android Studio 1.3.2在Win7中),但。

  • 首先需要在path中findadb command-shell:PATH =%PATH%; C:\ Users \ XXXXX \ AppData \ Local \ Android \ sdk \ platform-tools(AppData文件夹是隐藏的,所以你必须设置该文件夹设置不隐藏隐藏的文件和文件夹find它,path工程不pipe)
  • 您必须正确拼写文件夹path,否则您将收到只读错误消息,很可能必须以/ sdcard开头,或者只读区域。 只要我没有问题推送文件到模拟器。

所以例如adb命令可以像这样:

adb push C:\ testdata \ t.txt /sdcard/download/t.txt