Как перемонтировать мой 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 - см. другие ответы.)