如何使用 adb 在 bash 脚本中将我的 Android/system 重新挂载为读写?

How can I remount my Android/system as read-write in a bash script using adb?

了解信息

adb remount 

returns "remount failed: Operation not permitted"

adb shell 'su -c  mount -o rw,remount /system'

returns unknown option -- o

我的设备已获得 root 权限。

remount 失败的可能原因是您不是 运行 adbroot

Shell脚本如下

# Script to mount Android Device as read/write.
# List the Devices.
adb devices;

# Run adb as root (Needs root access).
adb root;

# Since you're running as root su is not required
adb shell mount -o rw,remount /;

如果失败,您可以尝试以下方法:

# List the Devices.
adb devices;

# Run adb as root
adb root;

adb remount;
adb shell su -c "mount -o rw,remount /";

要查找您 user 的身份:

$ adb shell whoami

我遇到了同样的问题,无法像 read/write 那样挂载系统。它将 return

Usage: mount [-r] [-w] [-o options] [-t type] device directory

operation not permitted. Access denied

现在这适用于所有获得 root 权限的设备。

TERMINAL EMULATORADB SHELL

中执行以下操作
$ su
#mount - o rw,remount -t yaffs2 /system

Yaffs2是系统分区类型。将其替换为通过执行以下命令获得的系统分区类型

#cat /proc/mounts

然后从冗长的结果

中检查 /system 出现在哪里

我的摘录就像

mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0/dev/block/platform/msm_sdcc.3/by-num/p10 /system ext4 ro,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.3/by-num/p11 /cache ext4 rw,nosuid,nodev,relatime,data=ordered 0 0

所以我的系统是ext4。我的命令是

$ su
#mount  -o  rw,remount  -t  ext4  /system 

完成。

如果不指定要挂载为 /system 的开发块,我无法使挂载命令工作

#cat /proc/mounts returns(这里只有系统行)
/dev/stl12 /system rfs ro,relatime,vfat,log_off,check=no,gid/uid/rwx,iocharset=utf8 0 0

所以我的工作命令是
mount -o rw,remount -t rfs /dev/stl12 /system

否则...如果

getenforce

returns

Enforcing

那也许你应该打电话给

setenforce 0 
mount -o rw,remount /system 
setenforce 1

从 google Play 商店获取 "adbd insecure",它有助于授予对自定义 rom 的写入权限,这些 rom 已保护我的制造商。

以下内容可能会有所帮助(首先研究 disable-verity 的影响):

adb root
adb disable-verity
adb reboot

除了您收到的所有其他答案之外,我想解释一下 unknown option -- o 错误:您的命令是

$ adb shell 'su -c  mount -o rw,remount /system'

通过adb调用su。您正确引用了整个 su 命令,以便将其作为 one 参数传递给 adb shell。但是,su -c <cmd> 还需要您在命令中引用它应传递给 shell 的 -c 选项的参数。 (YMMV 取决于 su 变体。)因此,您可能想尝试

$ adb shell 'su -c "mount -o rw,remount /system"'

(并可能在 /system arg 之前添加 mount | grep system 的输出中列出的实际设备 - 请参阅其他答案。)

mount -o rw,remount $(mount | grep /dev/root | awk '{print }')

这适合我,并且适用于任何 android 版本。