Android上的只读文件系统

问题描述

| 最近,我扎根了Droid X,一切似乎都运转良好。我对ѭ0进行了一些更改,当我执行
adb push build.prop /system/
时,出现以下错误:
failed to copy \'c:\\build.prop\' to \'/system//build.prop\': Read-only file system
。 我怎样才能解决这个问题?     

解决方法

并非所有的手机和android版本都具有相同的安装方式。 重新安装时最好使用限制选项。 只需重新安装为rw(读/写):
# mount -o rw,remount /system
完成更改后,重新安装到ro(只读):
# mount -o ro,remount /system
    ,
adb remount
为我工作,似乎是最简单的解决方案。     ,我在一个Android论坛上问了同样的问题。希望这对其他人有帮助。 在电话上的终端仿真器上:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
然后在cmd提示符下,执行ѭ7     ,虽然我知道问题是关于真实设备的,但如果有人在模拟器中遇到类似问题(使用截至2017年2月的最新工具),则需要使用以下命令从命令行启动模拟器:
-writable-system
任何可写到ѭ9的内容。如果没有该标志,则不能将
remount
mount
的任何组合写入
/system
。 用该标志启动仿真器后,在
adb root
之后的单个
adb remount
就足以获得将其推入
/system
的权限。 这是我用来运行模拟器的命令行示例:
./emulator -writable-system -avd Nexus_5_API_25 -no-snapshot-load -qemu
-avd
标志的值来自:
./emulator -list-avds
    ,我认为最安全的方法是使用以下方式将/ system重新安装为读写:
mount -o remount,rw /system
完成后,将其重新安装为只读:
mount -o remount,ro /system
    ,在我的三星银河迷你S5570上(在手机上扎根后): 作为拳头,我跑了:
systemctl start adb
作为普通用户:
adb shell 
su 
在触摸屏上授予root权限
mount 
列出我们拥有的所有安装点,就我而言,可以看到/ dev / stl12以/ ro的形式挂载在/ system上(只读),因此我们只需要执行以下操作:
mount -o rw,remount /dev/stl12 /system
    ,在命令提示符下尝试以下操作:
>adb remount
>adb push framework-res_old.apk /system/framework-res.apk
    ,
adb disable-verity
adb reboot
adb root
adb remount
这对我有用,是最简单的解决方案。     ,这对我有用。我正在运行仿真的Android 7.1.1(牛轧糖)设备。 在终端上,我按下了以下命令。要注意的一件事是-writable-system标志
./emulator -writable-system -avd Nexus_6_API_25  -partition-size 280
在另一个标签上
./adb shell
su
mount -o rw,remount -t ext4 /dev/block/vda /system
您对/ system内容所做的所有更改都将在重新启动后保留下来。     ,在电话上打开终端仿真器: 然后
adb shell
该守护程序启动后
su
mount -o rw,remount /mnt/sdcard
然后将只读转换为读写。     ,我检查了模拟器,以下工作正常。 adb重新启动 亚行根&&亚行重新安装&&亚行推〜/ Desktop / hosts / system / etc / hosts 同样,如上所述,单步执行第二步。     ,
mount -o rw,remount /dev/stl12 /system
为我工作     ,
This worked for me

#Mount as ReadOnly

su -c \"mount -o rw,remount /system\"
# Change Permission for file
su -c \"chmod 777 /system/build.prop\" 
#Edit the file to add the property
su -c \"busybox vi /system/build.prop\"
# Add now
service.adb.tcp.port=5678

# Reset old permissions
su -c \"chmod 644 /system/build.prop\"

# Mount as readonly again once done
su -c \"mount -o ro,remount /system\"
    ,我从Google找到这篇文章,并认为我会在Sony Xperia Z(4.2.2)上添加必要的步骤。 索尼有一个看门狗程序,它可以检测到您何时在/和/ system上将ro更改为rw(这是我唯一尝试修改的内容),以及其他情况。 以下是我执行的尝试要完成的更改。我将它们粘贴到一个窗口中,因为需要快速完成从/ sbin / ric中删除执行位的操作,以阻止它重新启动。 (我尝试了
stop ric
;这不起作用-尽管它在手机上的旧版android上有效)。
pkill -9 ric; mount -o rw,remount -t rootfs /
chmod 640 /sbin/ric
mount -o rw,remount /system
我在这里修改了主机文件,因此在这里您可以对文件系统进行更改。为了让事物保持我们找到它们的方式,请执行以下操作:
mount -o ro,remount /system
chmod 750 /sbin/ric
mount -o ro,remount -t rootfs /
此时ric应该自动重启。 (它会自动为我重新启动。)     ,为JanBergström的答案增加了一点:由于Android是基于Linux的系统,并且Linux中的路径包含正斜杠(../),因此在使用push命令时,请使用\“ / \”定义目标路径在Android设备中。 例如,命令如下:adb push C:\\ Users \\ admin \\ Desktop \\ 1.JPG sdcard / pictures / 请注意,在这里,反斜杠用于定义要从Windows PC推送的文件的源路径,正斜杠用于定义目标路径,因为Android是基于Linux的系统。您不必充当root即可使用此命令,而且,它在生产设备上也可以正常工作。     ,有时您会收到错误消息,因为电话中的目标位置不存在。例如,某些Android手机的外部存储位置是
/storage/emulated/legacy
而不是
/storage/emulated/0
。     ,感谢Sérgio提供的不带参数提示的\“ mount \”命令。 我需要将ѭ7变成ѭ39才能解决某些测试问题,并收到“只读文件系统”消息。 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
文件,     ,就我而言,我正在使用命令adb push
~/Desktop/file.txt ~/sdcard/
我将其更改为
~/Desktop/file.txt /sdcard/
,然后它起作用了。 确保断开并重新连接手机。     ,将文件复制到SD卡? 好吧,我假设您想将数据从开发人员计算机复制到SD卡中?您可能已经扎根了设计,使您可以访问的区域可用?)我在为应用程序(Win7中的Android Studio 1.3.2)上载数据文件时遇到了同样的问题。 首先,必须在路径中找到adb命令外壳: PATH =%PATH%; C:\\ Users \\ XXXXX \\ AppData \\ Local \\ Android \\ sdk \\ platform-tools(文件夹AppData是隐藏的,因此您必须设置文件夹设置而不隐藏隐藏的文件和文件夹找到它,Path不管如何) 您必须正确拼写文件夹路径,否则会收到一条只读错误消息,很可能它必须以/ sdcard开头,或者它是只读区域。我将文件推送到仿真器就没问题。 因此,例如adb命令可以如下所示: 亚行推送C:\\ testdata \\ t.txt /sdcard/download/t.txt     ,如果复制只读文件失败,则可以尝试在根目录中找到原始文件,并使用ROM Toolbox应用程序附带的根文本编辑器(最好是RB文本编辑器)对其进行修改。     ,以root身份在终端仿真器中尝试以下操作:
restorecon -v -R /data/media
    ,正如陈星提到的,最简单的方法是:
adb reboot
但是对我来说,我必须先更改设置: 设置→开发人员选项→根访问权限 确保ADB具有Root访问权限:     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...