如何将/system目录可写或只读安装在Android手机上?

#1 楼

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


将手机连接到计算机。 (确保在手机上启用USB调试)


在PC上打开CMD / Terminal


Windows:CTRL + R,然后类型cmd


Ubuntu:CTRL + ALT +T。


Mac:导航到/Applications/Utilities/并双击Terminal。




键入以下内容:


adb shell


su


选择一项:(用于将完成安全性安装的/system返回RO)

安装系统RW:mount -o rw,remount /system

安装系统RO:mount -o ro,remount /system






方法2:


在Android手机上打开terminal(在此处下载) ):


terminal中键入以下内容:


su


选择一个:(将安全的/system安装完成后返回RO)

安装系统RW:mount -o rw,remount /system

安装系统RO:mount -o ro,remount /system






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

评论


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

– diidu
16 Sep 12'在12:07



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

– diidu
16年9月12日在12:47

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

– Edgar Aroutiounian
17年9月6日在3:49

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

–唐·哈奇
17年12月28日在1:32

#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

我认为这只是mount的捷径,如https://android.stackexchange.com/a/110928/126934所述,但这非常方便:

adb root
adb remount
adb shell


adb help包含:

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


恢复原始系统映像

与用户数据相同:移除.qcow2覆盖,然后重新手动生成它:https://stackoverflow.com/questions/54446680/how-to-reset-the-userdata-image-when-building-android-aosp-and-running-it-on-the-