Android 8.1 无法重新挂载 /system,/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' 是只读的

Android 8.1 can't remount /system,/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only

我在 Whosebug 上发现了一些类似的问题,例如 Can't mount system android : read file only [duplicate],,我尝试了这些答案,但都对我不起作用,所以请不要为这个问题添加重复的标签。 我确实在 AVD (Android 8.1 x86) 上重新安装 /system,我正在尝试如下:

1|generic_x86:/ # cat /proc/mounts
rootfs / rootfs rw,seclabel,size=859768k,nr_inodes=214942 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
proc /proc proc rw,relatime,gid=3009,hidepid=2 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0 
/dev/block/pci/pci0000:00/0000:00:07.0/by-name/vendor /vendor ext4 ro,seclabel,relatime,data=ordered 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
debugfs /sys/kernel/debug debugfs rw,seclabel,relatime,mode=755 0 0
tmpfs /mnt tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
none /config configfs rw,relatime 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
pstore /sys/fs/pstore pstore rw,seclabel,relatime 0 0
/dev/block/vdb /cache ext4 rw,seclabel,nosuid,nodev,noatime,errors=panic,data=ordered 0 0
tmpfs /storage tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
tracefs /sys/kernel/debug/tracing tracefs rw,seclabel,relatime 0 0
/dev/block/dm-0 /data ext4 rw,seclabel,nosuid,nodev,noatime,errors=panic,data=ordered 0 0
/dev/block/dm-0 /data/var/run/netns ext4 rw,seclabel,nosuid,nodev,noatime,errors=panic,data=ordered 0 0
proc /data/var/run/netns/router proc rw,relatime,gid=3009,hidepid=2 0 0
proc /data/var/run/netns/router proc rw,relatime,gid=3009,hidepid=2 0 0
/data/media /mnt/runtime/default/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid 0 0
/data/media /storage/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid 0 0
/data/media /mnt/runtime/read/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=23,derive_gid 0 0
/data/media /mnt/runtime/write/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=7,derive_gid,default_normal 0 0
generic_x86:/ # getenforce
Enforcing
generic_x86:/ # mount -o rw,remount /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # setenforce 0
generic_x86:/ # mount -o rw,remount /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # getenforce
Permissive
generic_x86:/ # setenforce 1
generic_x86:/ # getenforce
Enforcing
generic_x86:/ # setenforce 0
generic_x86:/ # mount -o rw,remount /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-n
by-name/  by-num/
generic_x86:/ # mount -o rw,remount /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # chmod 777 /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system
generic_x86:/ # mount -o rw,remount /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount -t rfs /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount -t rfs /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system  /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount -t ext4 /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount -t ext4 /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system  /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount -t ext4  /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # clear
[2J[Hgeneric_x86:/ # cd..
/system/bin/sh: cd..: not found
127|generic_x86:/ # su
generic_x86:/ # whoami
root
generic_x86:/ # cat /proc/mounts
rootfs / rootfs rw,seclabel,size=859768k,nr_inodes=214942 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
proc /proc proc rw,relatime,gid=3009,hidepid=2 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
/dev/block/pci/pci0000:00/0000:00:07.0/by-name/vendor /vendor ext4 ro,seclabel,relatime,data=ordered 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
debugfs /sys/kernel/debug debugfs rw,seclabel,relatime,mode=755 0 0
tmpfs /mnt tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
none /config configfs rw,relatime 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
pstore /sys/fs/pstore pstore rw,seclabel,relatime 0 0
/dev/block/vdb /cache ext4 rw,seclabel,nosuid,nodev,noatime,errors=panic,data=ordered 0 0
tmpfs /storage tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
tracefs /sys/kernel/debug/tracing tracefs rw,seclabel,relatime 0 0
/dev/block/dm-0 /data ext4 rw,seclabel,nosuid,nodev,noatime,errors=panic,data=ordered 0 0
/dev/block/dm-0 /data/var/run/netns ext4 rw,seclabel,nosuid,nodev,noatime,errors=panic,data=ordered 0 0
proc /data/var/run/netns/router proc rw,relatime,gid=3009,hidepid=2 0 0
proc /data/var/run/netns/router proc rw,relatime,gid=3009,hidepid=2 0 0
/data/media /mnt/runtime/default/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid 0 0
/data/media /storage/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid 0 0
/data/media /mnt/runtime/read/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=23,derive_gid 0 0
/data/media /mnt/runtime/write/emulated sdcardfs rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=7,derive_gid,default_normal 0 0
generic_x86:/ # mount -o rw,remount -t ext4 /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount -t ext4 /dev/b
binder  block/
generic_x86:/ # mount -o rw,remount -t ext4 /dev/block/pci/pci0000\:00/0000
0000:00:03.0/  0000:00:04.0/  0000:00:05.0/  0000:00:06.0/  0000:00:07.0/
generic_x86:/ # mount -o rw,remount -t ext4 /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system  /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ #
130|generic_x86:/ # exit
130|generic_x86:/ # exit

C:\Users\Administrator>adb -s emulator-5554 root

C:\Users\Administrator>adb -s emulator-5554 remount
remount of /system failed: Read-only file system
remount of /vendor failed: Read-only file system
remount failed

C:\Users\Administrator>adb -s emulator-5554 disable-verity

C:\Users\Administrator>adb -s emulator-5554 reboot

C:\Users\Administrator>adb -s emulator-5554 root

C:\Users\Administrator>adb -s emulator-5554 remount
error: closed

C:\Users\Administrator>adb -s emulator-5554 remount
Not running as root. Try "adb root" first.

C:\Users\Administrator>adb -s emulator-5554 root

C:\Users\Administrator>adb -s emulator-5554 remount
remount succeeded

C:\Users\Administrator>adb -s emulator-5554 shell
generic_x86:/ # mount -o rw,remount -t ext4 /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only
generic_x86:/ # mount -o rw,remount -t ext4 /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system /sys
sys/     system/
generic_x86:/ # mount -o rw,remount -t ext4 /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system /system/
mount: '/system/' not in /proc/mounts
1|generic_x86:/ # mount -o rw,remount -t ext4 /dev/block/pci/pci0000\:00/0000\:00\:03.0/by-name/system /system
'/dev/block/pci/pci0000:00/0000:00:03.0/by-name/system' is read-only

我通过以下步骤解决了您遇到的完全相同的问题:

  1. .\adb.exe shell
  2. 打开shell
  3. 使用 shell
  4. 中的命令 cat /proc/mounts 打开 mounts 文件
  5. /system 行中,查看您的挂载类型(在我的例子中是 ext4)和路径(/dev/block...)
  6. 退出shell然后运行.\adb.exe root接着是命令.\adb.exe shell 'mount -o rw,remount -t <type> <path> /system'
  7. 如果问题仍然存在,运行 .\adb.exe reboot 并重试第 4 步

希望这能解决您的问题!

编辑:您需要在开机时使用可写系统映像启动模拟器shell。转到 android-sdk 目录中的模拟器文件夹,然后 运行

.\emulator.exe -avd $deviceName -writable-system

这帮助我在 AVD 上保持更改