Android上的只读文件系统

ste*_*225 198 android

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

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

Cur*_*lin 372

并非所有手机和Android版本都安装相同的东西.
重新安装时限制选项是最好的.

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

# mount -o rw,remount /system
Run Code Online (Sandbox Code Playgroud)

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

# mount -o ro,remount /system
Run Code Online (Sandbox Code Playgroud)

  • 您也可以在PC上执行此操作.adb shell mount -o rw,remount/system (28认同)
  • 对我不起作用:`Balazss-MBP:工具varh1i $ adb shell``generic_x86_64:/ #mount -o rw,remount/system``'/ dev/block/vda'是只读的 (20认同)
  • 与`adb root`结合使用,或者在推送文件时会得到拒绝权限. (8认同)
  • 它对我不起作用。它显示“挂载:只读文件系统” (4认同)
  • 如果我使用“adb root”,我会得到“adbd 无法在生产版本中以 root 身份运行” (3认同)
  • 因为无论如何我都有root用户,所以我将文件复制到/ sdcard,然后(在我的情况下)使用`mv hosts / system / etc / hosts`。 (2认同)

Che*_*ing 81

adb remount
Run Code Online (Sandbox Code Playgroud)

对我有用,似乎是最简单的解决方案.

  • "adb remount - 如果由于处于只读模式而将文件推送到/ system时遇到错误,adb remount将重新挂载/系统进入读写模式---前提是shell具有正确的根目录这样做的权限.这取代了必须手动输入更长的命令,例如mount -o rw,remount/system(as root)或者其他东西." ([源(http://wiki.cyanogenmod.org/w/Doc:_Building_Basics#ADB)).如果您对root权限有任何疑问,请先尝试"adb root". (6认同)
  • 它不起作用:`不以 root 身份运行。首先尝试“adb root”。我输入“adb root”,然后再次输入“adb remount”,但仍然出现相同的错误:“未以 root 身份运行。” 首先尝试“adb root”。 (4认同)
  • 我有'不是以root身份运行.首先尝试"adb root".然后`adbd无法在生产版本中以root身份运行. (2认同)
  • 在较新的设备上,我们似乎还需要“$ adb disable-verity”,然后重新启动设备,然后才能运行“$ adb remount” (2认同)
  • $ adb disable-verity give :disable-verity 仅适用于 userdebug 构建 (2认同)

ste*_*225 76

这是一个Android论坛,我问了同样的问题.希望这有助于其他人.

在手机上的终端模拟器上:

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
Run Code Online (Sandbox Code Playgroud)

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

  • 此注释导致 ```mount: '/system' not in /proc/mounts``` (11认同)
  • `adb shell <command>`可以在电脑上使用(如果手机上没有终端) (3认同)

Ish*_*ael 65

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

-writable-system
Run Code Online (Sandbox Code Playgroud)

对于任何可写的东西/system.没有这个标志没有组合remountmount将允许一个人写/system.

使用该标志启动模拟器adb remount后,单个after adb root就足以获得推送的权限/system.

这是我用来运行模拟器的命令行的示例:

./emulator -writable-system -avd Nexus_5_API_25 -no-snapshot-load -qemu
Run Code Online (Sandbox Code Playgroud)

-avd标志的值来自:

./emulator -list-avds
Run Code Online (Sandbox Code Playgroud)

  • 你救了我的一天! (5认同)

小智 30

我认为最安全的方法是将/ system重新安装为读写,使用:

mount -o remount,rw /system
Run Code Online (Sandbox Code Playgroud)

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

mount -o remount,ro /system
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到SO!你的答案在技术上很有用,但基本上是curtlee2002先前答案的副本.作为对他的答案的评论,这可能会更好,"我同意在读写模式下调整后再切换回只读是最安全的." 我们有数以百万计的问题,因此总会有另一个问题,即您是第一个提供出色解决方案或新视角的人! (6认同)

Sér*_*gio 16

在我的三星galaxy mini S5570上(手机上扎根):

拳头,作为根,我跑了:

systemctl start adb
Run Code Online (Sandbox Code Playgroud)

作为普通用户:

adb shell 
su 
Run Code Online (Sandbox Code Playgroud)

在触摸屏上授予root权限

mount 
Run Code Online (Sandbox Code Playgroud)

列出的所有安装我们点,我们可以看到,在我的情况,说的/ dev/stl12被安装/系统为RO(只准备好),所以我们只需要做到:

mount -o rw,remount /dev/stl12 /system
Run Code Online (Sandbox Code Playgroud)


小智 11

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

>adb remount
>adb push framework-res_old.apk /system/framework-res.apk
Run Code Online (Sandbox Code Playgroud)


byI*_*ion 9

adb disable-verity
adb reboot
adb root
adb remount
Run Code Online (Sandbox Code Playgroud)

这对我有用,是最简单的解决方案.

  • adbdisable-verity——这是我的案例的关键解决方案。 (2认同)

Geo*_*cés 7

这对我有用.我正在运行模拟的Android 7.1.1(Nougat)设备.

在终端上,我点击以下命令.有一点需要注意的是-writable-system标志

./emulator -writable-system -avd Nexus_6_API_25  -partition-size 280
Run Code Online (Sandbox Code Playgroud)

在另一个标签上

./adb shell
su
mount -o rw,remount -t ext4 /dev/block/vda /system
Run Code Online (Sandbox Code Playgroud)

您对/ system内容所做的所有更改将在重新启动后继续.


CoD*_*oDe 6

我检查了模拟器并进行了以下工作。

  1. 亚行重启
  2. adb root && adb remount && adb push ~/Desktop/hosts /system/etc/hosts

同样如上所述,单次执行第二步。