如何挂载/ system可重写或只读?(读/写)


Answers:


63

有几种方法可以挂载/system目录RW或RO。但是,它将需要root用户。

方法1:

  1. 将手机连接到计算机。(确保手机已启用USB调试)

  2. 在您的PC上打开CMD/ Terminal

    • Windows:CTRL+ R,然后输入cmd

    • Ubuntu的:CTRL+ ALT+ T

    • Mac:导航至/Applications/Utilities/并双击Terminal

  3. 输入:

    1. adb shell
    2. su

    3. 选择一项:(/system完成后将安全性安装回RO)

      • 挂载系统RW: mount -o rw,remount /system
      • 挂载系统RO: mount -o ro,remount /system

方法2:

  1. terminal在您的Android手机上打开(在此处下载):
  2. 在以下输入terminal

    1. su

    2. 选择一项:(/system完成后将安全性安装回RO)

      • 挂载系统RW: mount -o rw,remount /system
      • 挂载系统RO: mount -o ro,remount /system

方法3:

如果您不想每次都在终端中键入命令,那么我已经编写了一个旨在为您执行此操作的应用程序:


Android 2.3

对于运行Android 2.3且命令失败的用户,请查看以下答案:https : //android.stackexchange.com/a/125437/95577


4
似乎(方法1)在更新的Android上不再起作用。我正在尝试在运行Android 6的Android仿真器上执行此操作,但始终会收到错误“挂载:只读文件系统”。我已经运行过adb root,但这没什么区别。关于可以做什么的任何想法?
diidu

1
我知道了,有点。启动模拟器时,必须使用-writable-system命令行选项。然后,第一次adb重新安装似乎成功了。似乎...我还没有看到它变为rw。
diidu

模拟器-可写仍然是正确的答案。
Edgar Aroutiounian

“对于运行Android 2.3的用户”-措辞沟通不佳。我猜您的意思是> = 2.3或<= 2.3(或者,如果2.3中仅存在特定错误,则不太可能 2.3),但我们不知道是哪个或为什么。
唐·哈奇

2

-writable-system 用于模拟器

在构建后启动仿真器时,必须使用:

. build/envsetup.sh
lunch aosp_x86_64-eng
emulator -show-kernel -verbose -writable-system

然后,为了将来运行,必须保留该-writable-system选项,否则图像更改将不可见:

emulator -show-kernel -verbose -writable-system

-verbose向我们展示了仿真器从默认设置切换为-drive

if=none,index=0,id=system,file=/path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img,read-only

至:

if=none,index=0,id=system,file=/path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576

因此:

  • 删除 ,read-only

  • 使用system-qemu.img.qcow2代替system-qemu.img

    这意味着,只有-writable-sytem在进行更改后再传递以后的靴子,更改才可见。

    我们可以看到,由于以下原因,qcow2图像只是基础图像上方的一小层覆盖层

    qemu-img info /path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img.qcow2
    

    包含:

    backing file: /path/to/aosp/8.1.0_r60/out/target/product/generic_x86_64/system-qemu.img
    

仿真器-help还确认了这一点:

emulator -help

包含:

-writable-system     make system & vendor image writable after 'adb remount'

adb remount + adb root

我认为这只是https://android.stackexchange.com/a/110928/126934中mount提到的快捷方式,但这非常方便:

adb root
adb remount
adb shell

adb help 包含:

 root                     restart adbd with root permissions
 remount
     remount /system, /vendor, and /oem partitions read-write

恢复原始系统映像

与userdata相同:移除.qcow2叠加层,然后手动重新生成:https//stackoverflow.com/questions/54446680/how-to-reset-the-userdata-image-when-building-android-aosp-and-在它上运行

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.