Как перемонтировать мой Android/систему как чтение-запись в bash script с помощью adb?
Для информации
$ adb remount
возвращает "remount failed: Operation not permitted"
$ adb shell 'su -c mount -o rw,remount /system'
возвращает unknown option -- o
Мое устройство укоренено.
Ответы
Ответ 1
Вероятная причина, по которой remount
терпит неудачу, заключается в том, что вы не используете adb
как root
.
Shell Script должна быть следующей:
# 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
Ответ 2
Я не мог заставить команду mount работать без указания блока dev для монтирования как /system
#cat /proc/mounts
возвращает (только здесь системная строка)
/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
Ответ 3
В противном случае... if
getenforce
возвращает
Enforcing
Тогда, возможно, вам следует позвонить
setenforce 0
mount -o rw,remount /system
setenforce 1
Ответ 4
Следующее может помочь (сначала изучить влияние disable-verity
):
adb root
adb disable-verity
adb reboot
Ответ 5
У меня была такая же проблема, и я не мог смонтировать систему как чтение/запись. Он вернет
Использование: mount [-r] [-w] [-o options] [-t type] каталог устройств
Или
Операция не разрешена. Доступ запрещен
Теперь это работает на всех корневых устройствах.
СЛЕДУЙТЕ В TERMINAL EMULATOR
ИЛИ IN ADB 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
Готово.
Ответ 6
Получите "adbd insecure" из Google Play Store, он помогает предоставить доступ на запись к пользовательским ромам, которые обеспечили мне своих производителей.
Ответ 7
В дополнение ко всем остальным полученным вами ответам я хочу объяснить ошибку unknown option -- o
: ваша команда была
$ adb shell 'su -c mount -o rw,remount /system'
который вызывает su через adb. Вы правильно процитировали всю команду su, чтобы передать ее как один аргумент в adb shell
. Тем не менее, su -c <cmd>
также требует, чтобы вы процитировали команду с аргументами, которые она должна передать в оболочку -c
. (YMMV в зависимости от вариантов su
.) Поэтому вы можете попробовать
$ adb shell 'su -c "mount -o rw,remount /system"'
(и потенциально добавить фактическое устройство, указанное в выводе mount | grep system
, перед аргументом /system
- см. другие ответы.)