Недавно я основал свой Droid X, и все, кажется, работает отлично. Я внес некоторые изменения в build.prop
, и когда я делаю adb push build.prop /system/
, я получаю следующую ошибку: failed to copy 'c:\build.prop' to '/system//build.prop': Read-only file system
.
Как я могу это исправить?
Получил это от форума Android, на котором я задал тот же вопрос. Надеюсь, это поможет кому-то еще.
В терминальном эмуляторе по телефону:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
Затем в командной строке введите adb push
adb shell <command>
может использоваться с компьютера (если у вас нет терминала на телефоне)
Не все телефоны и версии Android имеют все то же самое.
Ограничение параметров при пересоединении было бы лучше.
Просто перемонтируйте как rw (Чтение/Запись):
# mount -o rw,remount /system
Как только вы закончите внесение изменений, перемонтируйте ro (только для чтения):
# mount -o ro,remount /system
adb remount
работает для меня и, кажется, является самым простым решением.
Not running as root. Try "adb root" first.
, И тогда adbd cannot run as root in production builds
.
Пока я знаю, что вопрос касается реального устройства, если кто-то попал сюда с подобной проблемой в эмуляторе, с любыми инструментами, имеющими последнее значение с февраля 2017 года, эмулятор должен быть запущен из командной строки с помощью
-writable-system
Чтобы что-либо было доступно для записи в /system
. Без этого флага никакая комбинация remount
или mount
не позволяет записать на /system
.
После запуска эмулятора с этим флагом, один adb remount
после adb root
достаточно, чтобы получить разрешения для нажатия на /system
.
Вот пример командной строки, которую я использую для запуска моего эмулятора:
./emulator -writable-system -avd Nexus_5_API_25 -no-snapshot-load -qemu
Значение для флагов -avd
происходит от:
./emulator -list-avds
Я думаю, что самый безопасный способ - перемонтировать /system как read-write, используя:
mount -o remount,rw /system
и, когда это будет сделано, перемонтируйте его как только для чтения:
mount -o remount,ro /system
На моей галактике Samsung mini S5570 (после того, как он получил корень на сотовом телефоне):
Кулак, как root, я побежал:
systemctl start adb
как обычный пользователь:
adb shell
su
Предоставить права доступа root на сенсорном экране
mount
укажите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что /dev/stl 12 был установлен в /system как ro (только готовый), поэтому нам просто нужно:
mount -o rw,remount /dev/stl12 /system
В командной строке выполните следующие действия:
>adb remount
>adb push framework-res_old.apk /system/framework-res.apk
adb root remount
Вот что сработало для меня. Я запускал эмулятор Android 7.1.1 (нуга).
На терминале я нахожу следующую команду. Одна вещь, которую нужно заметить, - это флаг -writable-system
./emulator -writable-system -avd Nexus_6_API_25 -partition-size 280
На другой вкладке
./adb shell
su
mount -o rw,remount -t ext4 /dev/block/vda /system
Все изменения, внесенные в/содержимое системы, сохранятся при перезапуске.
adb disable-verity
adb reboot
adb root
adb remount
Это работает для меня и является самым простым решением.
Открыть эмулятор терминала на телефоне: затем
adb shell
после запуска этого демона
su
mount -o rw,remount /mnt/sdcard
тогда чтение только преобразуется в read-Write.
mount -o rw,remount /dev/stl12 /system
работает для меня
В моем случае я использовал команду adb push ~/Desktop/file.txt ~/sdcard/
Я изменил его на ~/Desktop/file.txt/sdcard/
а затем он сработал.
Обязательно отключите и снова подключите телефон.
This worked for me
#Mount as ReadOnly
su -c "mount -o rw,remount /system"
# Change Permission for file
su -c "chmod 777 /system/build.prop"
#Edit the file to add the property
su -c "busybox vi /system/build.prop"
# Add now
service.adb.tcp.port=5678
# Reset old permissions
su -c "chmod 644 /system/build.prop"
# Mount as readonly again once done
su -c "mount -o ro,remount /system"
it sames, который должен извлечь и переупаковать initrc.img и отредактировать файл init
с кодом mount/system
Спасибо, Sérgio, для команды "mount" без параметров.
Мне нужно сделать adb push
в /data/data/com.my.app/lib
для некоторой проблемы с тестированием и получить сообщение "Только для чтения".
ls показывает мне:
root@android:/ # ls -l /data/data/com.my.app/
drwxrwx--x u0_a98 u0_a98 2016-05-06 09:16 cache
drwxrwx--x u0_a98 u0_a98 2016-05-06 09:04 files
lrwxrwxrwx system system 2016-05-06 11:43 lib -> /mnt/asec/com.my.app-1/lib
Итак, он понял, что каталог "lib" отделен от других каталогов приложений.
Command
mount -o rw,remount /mnt/asec
не решила проблему "r/o fs", она хочет параметр устройства перед параметром каталога.
"df" также не помогла, но показывает, что мой каталог /mnt/asec/com.my.app-1
находится в отдельной точке монтирования.
Затем я смотрю на mount
и voila!
root@android:/ # mount
.........
/dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0
Следующие шаги уже описаны вверх: перемонтируйте RW, нажмите и верните обратно в RO.
Иногда вы получаете ошибку, потому что место назначения в телефоне не существует. Например, какое-то местоположение внешнего хранилища телефона Android < <20 > вместо /storage/emulated/0
.
Добавляя немного больше ответа Янга Бергстрема: потому что Android - это система на базе Linux, а в Linux в Linux содержатся косые черты (../) при использовании команды push, используйте "/" для определения пути назначения в Android-устройство.
Например, команда: adb push C:\Users\admin\Desktop\1.JPG sdcard/pictures/
Обратите внимание, что здесь обратные косые черты используются для определения пути к исходному файлу файла, который должен быть вытолкнут с Windows PC, и косые черты используются для определения пути назначения, потому что Android - это система на основе Linux. Вам не нужно действовать как root, чтобы использовать эту команду, а также отлично работает на производственных устройствах.
Я нашел эту статью из Google и подумал, что добавлю шаги, необходимые для Sony Xperia Z (4.2.2).
В Sony есть сторожевой процесс, который обнаруживает, когда вы изменили ro на rw в/и/system (это единственные, которые я пытался изменить) и, возможно, другие.
Следующее было тем, что я выполнял для выполнения изменений, которые я пытался достичь. Я вложил их в окно, потому что удаление бит выполнения из /sbin/ric необходимо выполнить быстро, чтобы остановить его перезапуск. (Я пробовал stop ric
, это не сработало - хотя он работал над предыдущей версией Android на телефоне).
pkill -9 ric; mount -o rw,remount -t rootfs /
chmod 640 /sbin/ric
mount -o rw,remount /system
Я изменил здесь файл hosts, так что это место, где вы вносите необходимые изменения в файловую систему. Чтобы оставить вещи так, как мы их нашли, сделайте следующее:
mount -o ro,remount /system
chmod 750 /sbin/ric
mount -o ro,remount -t rootfs /
В какой момент ric должен автоматически перезагрузиться. (Он автоматически перезагрузился для меня.)
Попробуйте это в терминальном эмуляторе как root:
restorecon -v -R /data/media
Если произошел сбой при копировании файла, доступного только для чтения, вы можете попробовать найти исходный файл в корневом каталоге и изменить его с помощью текстового редактора корневого текста (желательно) RB, он поставляется с приложением ROM Toolbox.
Ну, я полагаю, вам нравится копировать данные на Sd-карту с компьютера разработчиков? Возможно, вы укоренились в разработке и сделали доступную область доступной?) У меня была проблема с загрузкой файлов данных для моего приложения (Android Studio 1.3.2 в Win7), но.
Итак, например, команда adb может выглядеть так:
adb push C:\testdata\t.txt/sdcard/download/t.txt
adb remount
, что вы получаете?