只读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
。 如果没有这个标志, remount
或mount
组合将不允许写入/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