Вопрос:
Недавно я основал свой 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
Ответ №1
Не все телефоны и версии Android имеют все то же самое.
Ограничение параметров при пересоединении было бы лучше.
Просто перемонтируйте как rw (Чтение/Запись):
# mount -o rw,remount /system
Как только вы закончите внесение изменений, перемонтируйте ro (только для чтения):
# mount -o ro,remount /system Ответ №2adb remount
работает для меня и, кажется, является самым простым решением.
Ответ №3
Пока я знаю, что вопрос касается реального устройства, если кто-то попал сюда с подобной проблемой в эмуляторе, с любыми инструментами, имеющими последнее значение с февраля 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 Ответ №4
Я думаю, что самый безопасный способ – перемонтировать /system как read-write, используя:
mount -o remount,rw /system
и, когда это будет сделано, перемонтируйте его как только для чтения:
mount -o remount,ro /system Ответ №5
На моей галактике Samsung mini S5570 (после того, как он получил корень на сотовом телефоне):
Кулак, как root, я побежал:
systemctl start adb
как обычный пользователь:
adb shell su
Предоставить права доступа root на сенсорном экране
mount
укажите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что /dev/stl 12 был установлен в /system как ro (только готовый), поэтому нам просто нужно:
mount -o rw,remount /dev/stl12 /system Ответ №6
В командной строке выполните следующие действия:
>adb remount >adb push framework-res_old.apk /system/framework-res.apk Ответ №7
Вот что сработало для меня. Я запускал эмулятор 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
Все изменения, внесенные в/содержимое системы, сохранятся при перезапуске.
Ответ №8adb disable-verity adb reboot adb root adb remount
Это работает для меня и является самым простым решением.
Ответ №9
Открыть эмулятор терминала на телефоне:
затем
adb shell
после запуска этого демона
su mount -o rw,remount /mnt/sdcard
тогда чтение только преобразуется в read-Write.
Ответ №10mount -o rw,remount /dev/stl12 /system
работает для меня
Ответ №11
Я нашел эту статью из 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 должен автоматически перезагрузиться. (Он автоматически перезагрузился для меня.)
Ответ №12
Добавляя немного больше ответа Янга Бергстрема: потому что Android – это система на базе Linux, а в Linux в Linux содержатся косые черты (../) при использовании команды push, используйте “/” для определения пути назначения в Android-устройство.
Например, команда: adb push C:UsersadminDesktop1.JPG sdcard/pictures/
Обратите внимание, что здесь обратные косые черты используются для определения пути к исходному файлу файла, который должен быть вытолкнут с Windows PC, и косые черты используются для определения пути назначения, потому что Android – это система на основе Linux. Вам не нужно действовать как root, чтобы использовать эту команду, а также отлично работает на производственных устройствах.
Ответ №13
Иногда вы получаете ошибку, потому что место назначения в телефоне не существует. Например, какое-то местоположение внешнего хранилища телефона Android < <20 > вместо /storage/emulated/0.
Ответ №14
Спасибо, 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.
Ответ №15
it sames, который должен извлечь и переупаковать initrc.img и отредактировать файл init с кодом mount/system
Ответ №16This 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» Ответ №17
В моем случае я использовал команду adb push ~/Desktop/file.txt ~/sdcard/
Я изменил его на ~/Desktop/file.txt/sdcard/ а затем он сработал.
Обязательно отключите и снова подключите телефон.
Ответ №18
Если произошел сбой при копировании файла, доступного только для чтения, вы можете попробовать найти исходный файл в корневом каталоге и изменить его с помощью текстового редактора корневого текста (желательно) RB, он поставляется с приложением ROM Toolbox.
Ответ №19
Попробуйте это в терминальном эмуляторе как root:
restorecon -v -R /data/media Ответ №20
Скопировать файлы на SD-карту?
Ну, я полагаю, вам нравится копировать данные на Sd-карту с компьютера разработчиков? Возможно, вы укоренились в разработке и сделали доступную область доступной?) У меня была проблема с загрузкой файлов данных для моего приложения (Android Studio 1.3.2 в Win7), но.
- Сначала команда-команда adb должна быть найдена в пути:
PATH =% PATH%; C:UsersXXXXXAppDataLocalAndroidsdkplatform-tools (папка AppData скрыта, поэтому вам нужно установить настройку папки, не скрывая скрытые файлы и папку, чтобы найти ее, Path работает независимо) - Вам нужно указать путь к папке вправо или получить сообщение об ошибке только для чтения, скорее всего, оно должно начинаться с /sdcard или это область только для чтения. Как только я не сделал никаких проблем, нажав файл на эмулятор.
Итак, например, команда adb может выглядеть так:
adb push C:testdatat.txt/sdcard/download/t.txt