Файловая система только для чтения на Android

Недавно я основал свой Droid X, и все, кажется, работает отлично. Я внес некоторые изменения в build.prop, и когда я делаю adb push build.prop /system/, я получаю следующую ошибку: failed to copy 'c:\build.prop' to '/system//build.prop': Read-only file system.

Как я могу это исправить?

Ответ 1

Получил это от форума Android, на котором я задал тот же вопрос. Надеюсь, это поможет кому-то еще.

В терминальном эмуляторе по телефону:

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

Затем в командной строке введите adb push

Ответ 2

Не все телефоны и версии Android имеют все то же самое.
Ограничение параметров при пересоединении было бы лучше.

Просто перемонтируйте как rw (Чтение/Запись):

# mount -o rw,remount /system

Как только вы закончите внесение изменений, перемонтируйте ro (только для чтения):

# mount -o ro,remount /system

Ответ 3

adb remount

работает для меня и, кажется, является самым простым решением.

Ответ 4

Пока я знаю, что вопрос касается реального устройства, если кто-то попал сюда с подобной проблемой в эмуляторе, с любыми инструментами, имеющими последнее значение с февраля 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

Ответ 5

Я думаю, что самый безопасный способ - перемонтировать /system как read-write, используя:

mount -o remount,rw /system

и, когда это будет сделано, перемонтируйте его как только для чтения:

mount -o remount,ro /system

Ответ 6

На моей галактике Samsung mini S5570 (после того, как он получил корень на сотовом телефоне):

Кулак, как root, я побежал:

systemctl start adb

как обычный пользователь:

adb shell 
su 

Предоставить права доступа root на сенсорном экране

mount 

укажите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что /dev/stl 12 был установлен в /system как ro (только готовый), поэтому нам просто нужно:

mount -o rw,remount /dev/stl12 /system

Ответ 7

В командной строке выполните следующие действия:

>adb remount
>adb push framework-res_old.apk /system/framework-res.apk

Ответ 8

Вот что сработало для меня. Я запускал эмулятор 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

Все изменения, внесенные в/содержимое системы, сохранятся при перезапуске.

Ответ 9

adb disable-verity
adb reboot
adb root
adb remount

Это работает для меня и является самым простым решением.

Ответ 10

Открыть эмулятор терминала на телефоне: затем

adb shell

после запуска этого демона

su
mount -o rw,remount /mnt/sdcard

тогда чтение только преобразуется в read-Write.

Ответ 11

mount -o rw,remount /dev/stl12 /system

работает для меня

Ответ 12

Я нашел эту статью из 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 должен автоматически перезагрузиться. (Он автоматически перезагрузился для меня.)

Ответ 13

Добавляя немного больше ответа Янга Бергстрема: потому что Android - это система на базе Linux, а в Linux в Linux содержатся косые черты (../) при использовании команды push, используйте "/" для определения пути назначения в Android-устройство.

Например, команда: adb push C:\Users\admin\Desktop\1.JPG sdcard/pictures/

Обратите внимание, что здесь обратные косые черты используются для определения пути к исходному файлу файла, который должен быть вытолкнут с Windows PC, и косые черты используются для определения пути назначения, потому что Android - это система на основе Linux. Вам не нужно действовать как root, чтобы использовать эту команду, а также отлично работает на производственных устройствах.

Ответ 14

Иногда вы получаете ошибку, потому что место назначения в телефоне не существует. Например, какое-то местоположение внешнего хранилища телефона Android < <20 > вместо /storage/emulated/0.

Ответ 15

Спасибо, Sérgio, для команды "mount" без параметров. Мне нужно сделать adb push в /data/data/com.my.app/lib для некоторой проблемы с тестированием и получить сообщение "Только для чтения".

Команда

ls показывает мне:

[email protected]:/ # 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!

[email protected]:/ # mount ......... /dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0

Следующие шаги уже описаны вверх: перемонтируйте RW, нажмите и верните обратно в RO.

Ответ 16

it sames, который должен извлечь и переупаковать initrc.img и отредактировать файл init с кодом mount/system

Ответ 17

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"

Ответ 18

В моем случае я использовал команду adb push ~/Desktop/file.txt ~/sdcard/

Я изменил его на ~/Desktop/file.txt/sdcard/ а затем он сработал.

Обязательно отключите и снова подключите телефон.

Ответ 19

Если произошел сбой при копировании файла, доступного только для чтения, вы можете попробовать найти исходный файл в корневом каталоге и изменить его с помощью текстового редактора корневого текста (желательно) RB, он поставляется с приложением ROM Toolbox.

Ответ 20

Попробуйте это в терминальном эмуляторе как root:

restorecon -v -R /data/media

Ответ 21

Скопировать файлы на SD-карту?

Ну, я полагаю, вам нравится копировать данные на Sd-карту с компьютера разработчиков? Возможно, вы укоренились в разработке и сделали доступную область доступной?) У меня была проблема с загрузкой файлов данных для моего приложения (Android Studio 1.3.2 в Win7), но.

  • Сначала команда-команда adb должна быть найдена в пути: PATH =% PATH%; C:\Users\XXXXX\AppData\Local\Android\sdk\platform-tools (папка AppData скрыта, поэтому вам нужно установить настройку папки, не скрывая скрытые файлы и папку, чтобы найти ее, Path работает независимо)
  • Вам нужно указать путь к папке вправо или получить сообщение об ошибке только для чтения, скорее всего, оно должно начинаться с /sdcard или это область только для чтения. Как только я не сделал никаких проблем, нажав файл на эмулятор.

Итак, например, команда adb может выглядеть так:

adb push C:\testdata\t.txt/sdcard/download/t.txt