Сообщение read only file system в android
Установил adb, сделал при помощи usb_modeswitch что бы adb видело устройство, получил рут права через superoneclick, вроде бы все хорошо и можно спокойно заходить через adb shell вот только при выполнении практически любой серьезной команды пишет сообщение read only file system. Вот так например:

По умолчанию начинаешь в корне, ведройд всё монтирует в ro, остальное анально огораживает через selinux, потому ты без соответствующих разрешений в манифесте приложения пукнуть не можешь даже на флешке.
Но вернёмся к adb. Тут всё куда проще, нужно просто перемонрировать fs в rw, делается это так: #mount -o rw,remount mountpoint, в твоём случае корень скорее всего.
Большое вам спасибо, ввел команду mount -o rw,remount mountpoint / и все заработало!

-_- mountpoint не нужно было писать. Под mountpoint подразумевалось то, что нужно перемонировать, т.е. / или /system или /data или что тебе там надо.

Если это то самое устройство со вторым андроидом из прошлой темы, то там selinux нет.
Файловая система только для чтения на Android
Недавно я основал свой Droid X, и все, кажется, работает отлично. Я внес некоторые изменения в build.prop , и когда я делаю adb push build.prop /system/ , я получаю следующую ошибку: failed to copy ‘c:\build.prop’ to ‘/system//build.prop’: Read-only file system .
Как я могу это исправить?
21 ответ
Получил это от форума Android, на котором я задал тот же вопрос. Надеюсь, это поможет кому-то еще.
В терминальном эмуляторе по телефону:
Затем в командной строке введите adb push
Не все телефоны и версии Android имеют все то же самое.
Ограничение параметров при пересоединении было бы лучше.
Просто перемонтируйте как rw (Чтение/Запись):
Как только вы закончите внесение изменений, перемонтируйте ro (только для чтения):
работает для меня и, кажется, является самым простым решением.
Пока я знаю, что вопрос касается реального устройства, если кто-то попал сюда с подобной проблемой в эмуляторе, с любыми инструментами, имеющими последнее значение с февраля 2017 года, эмулятор должен быть запущен из командной строки с помощью
Чтобы что-либо было доступно для записи в /system . Без этого флага никакая комбинация remount или mount не позволяет записать на /system .
После запуска эмулятора с этим флагом, один adb remount после adb root достаточно, чтобы получить разрешения для нажатия на /system .
Вот пример командной строки, которую я использую для запуска моего эмулятора:
Значение для флагов -avd происходит от:
Я думаю, что самый безопасный способ — перемонтировать /system как read-write, используя:
и, когда это будет сделано, перемонтируйте его как только для чтения:
На моей галактике Samsung mini S5570 (после того, как он получил корень на сотовом телефоне):
Кулак, как root, я побежал:
как обычный пользователь:
Предоставить права доступа root на сенсорном экране
укажите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что /dev/stl 12 был установлен в /system как ro (только готовый), поэтому нам просто нужно:
В командной строке выполните следующие действия:
Вот что сработало для меня. Я запускал эмулятор Android 7.1.1 (нуга).
На терминале я нахожу следующую команду. Одна вещь, которую нужно заметить, — это флаг -writable-system
На другой вкладке
Все изменения, внесенные в/содержимое системы, сохранятся при перезапуске.
Это работает для меня и является самым простым решением.
Открыть эмулятор терминала на телефоне: затем
после запуска этого демона
тогда чтение только преобразуется в read-Write.
работает для меня
В моем случае я использовал команду adb push
Я изменил его на
/Desktop/file.txt/sdcard/ а затем он сработал.
Обязательно отключите и снова подключите телефон.
it sames, который должен извлечь и переупаковать initrc.img и отредактировать файл init с кодом mount/system
Спасибо, 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.
Иногда вы получаете ошибку, потому что место назначения в телефоне не существует. Например, какое-то местоположение внешнего хранилища телефона 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 на телефоне).
Я изменил здесь файл hosts, так что это место, где вы вносите необходимые изменения в файловую систему. Чтобы оставить вещи так, как мы их нашли, сделайте следующее:
В какой момент ric должен автоматически перезагрузиться. (Он автоматически перезагрузился для меня.)
Read only file system on Android
I recently rooted my Droid X and everything seems to be working perfectly. I made some changes to build.prop and when I do adb push build.prop /system/ I get the following error: failed to copy ‘c:\build.prop’ to ‘/system//build.prop’: Read-only file system .
How can I fix this?
![]()
24 Answers 24
Not all phones and versions of android have things mounted the same.
Limiting options when remounting would be best.
Simply remount as rw (Read/Write):
Once you are done making changes, remount to ro (read-only):
works for me and seems to be the simplest solution.
While I know the question is about the real device, in case someone got here with a similar issue in the emulator, with whatever tools are the latest as of Feb, 2017, the emulator needs to be launched from the command line with:
For anything to be writable to the /system . Without this flag no combination of remount or mount will allow one to write to /system .
After the emulator is launched with that flag, a single adb remount after adb root is sufficient to get permissions to push to /system .
Here’s an example of the command line I use to run my emulator:
The value for the -avd flags comes from:
![]()
Got this off an Android forum where I asked the same question. Hope this helps somebody else.
On a terminal emulator on the phone:
Then on the cmd prompt, do the adb push
I think the safest way is remounting the /system as read-write, using:
and when done, remount it as read-only:
This works for me, and is the simplest solution.
![]()
On my Samsung galaxy mini S5570 (after got root on cellphone):
Fist, as root, I ran:
as a normal user:
Grant root permissions on touch screen
list all mount points that we have and we can see, in my case, that /dev/stl12 was mounted on /system as ro (ready only), so we just need do:
Try the following on the command prompt:
Here is what worked for me. I was running an emulated Android 7.1.1 (Nougat) device.
On a terminal, I hit the following command. One thing to be noticed is the -writable-system flag
All the changes that you do on the /system contents will survive a restart.
![]()
I checked with emulator and following worked.
- adb reboot
- adb root && adb remount && adb push
As mentioned above as well, execute second step in single shot.
Open terminal emulator on the phone: then
after that daemon is started
then the read only is converted into the read-Write.
Sometimes you get the error because the destination location in phone are not exist. For example, some android phone external storage location is /storage/emulated/legacy instead of /storage/emulated/0 .
![]()
I found this article from google, and thought I’d add the steps necessary on a Sony Xperia Z (4.2.2).
The Sony has a watchdog process which detects when you’ve changed ro to rw on / and /system (these are the only ones I was trying to modify) and possibly others.
The following was what I ran to perform the changes I was trying to achieve. I pasted these into a window, because removing the execute bit from /sbin/ric needs to be done quickly in order to stop it restarting itself. (I tried stop ric ; this doesn’t work — although it worked on a previous version of android on the phone).
I modified the hosts file here, so this is the place you make the changes you need to the filesystem. To leave things the way we found them, do this:
At which point ric should automatically restart. (It restarted for me automatically.)
Исправление ошибки «Файловая система доступна только для чтения» в Linux

Первый способ исправления ошибки «Файловая система доступна только для чтения» в Linux заключается в проверке прав доступа. Иногда пользователь случайно или намерено устанавливает ограничения, которые распространяются и на других юзеров. Для начала предлагаем проверить атрибуты, а затем внести изменения, если это требуется.
- Запустите консоль удобным для вас методом. Для этого можно использовать соответствующий значок в меню приложений или горячую клавишу Ctrl + Alt + T.

- Здесь введите команду ls -l , чтобы просмотреть весь список дисков с подробной информацией, среди которой будет находиться и необходимая нам.

- Изучите атрибуты, которые показаны в первом столбце напротив проблемного диска или раздела. Если имеется один символ -r, значит, система доступна только для чтения. Наличие w означает открытость для чтения и записи.
После активации команды вы будете уведомлены, что все изменения успешно вступили в силу. Следом рекомендуется перезагрузить ПК и можно приступать к тестированию. Если же при использовании команды ls было обнаружено, что для раздела или носителя установлены все требуемые атрибуты, следует перейти другим решениям возникшей проблемы.
Способ 2: Исправление ошибок через GParted
GParted — одна из самых известных утилит для управления дисками в Linux со встроенным графическим интерфейсом. Ее особенность заключается в наличии множества вспомогательных функций, связанных в том числе и с решением различных ошибок носителей.
- Если GParted по умолчанию отсутствует в вашем дистрибутиве, установите ее с помощью команды sudo apt-get install gparted . Подтвердите это действие, введя пароль суперпользователя и одобрив скачивание архивов.

- После этого утилиту проще всего запустить, нажав на соответствующий значок в меню приложений.

Если какие-то неполадки будут найдены и исправлены, вы получите соответствующее уведомление. По окончании проверки следует перезагрузить ПК, чтобы при начале следующего сеанса сразу проверить эффективность выполненных действий. Если они не принесли никакого результата, переходите далее.
Способ 3: Исправление поврежденных блоков
Иногда ошибка со сбойным режимом чтения возникает вследствие повреждения секторов жесткого диска. Существуют специальные утилиты, позволяющие распределить проблемное пространство или исправить его, если это является возможным. В Linux имеется встроенная команда, отвечающая за выполнение этой операции. Мы и предлагаем воспользоваться ей в том случае, если приведенные выше рекомендации не принесли никакого результата.
- Для начала просмотрим список дисков, чтобы понять, какой из них следует проверять. Осуществляется это через команду fdisk -l .

- В списке отыщите проблемный накопитель, определив его точное название. Далее оно потребуется при активации соответствующей команды для лечения блоков.

- Теперь используйте команду hdparm -i /dev/sda2 | grep Model , чтобы проверить выбранный носитель или логический диск. Здесь замените /dev/sda2 на определенное ранее название.

- После этого следует отмонтировать диск, чтобы в дальнейшем запустить проверку блоков. Осуществляется это через строку umount /dev/sda2 .

- Запустите проверку, вставив команду badblocks -s /dev/sda2 > /root/badblock .

- Обнаруженные блоки, которые не подлежат исправлению, требуется отметить, чтобы система перестала их задействовать. Для этого используйте e2fsck -l /root/badblock /dev/sda2 .

Все изменения будут применены сразу же, однако, как обычно, рекомендуется создать новый сеанс операционной системы, чтобы проверить, была ли решена возникшая неполадка с ошибкой «Файловая система доступна только для чтения».
Способ 4: Форматирование накопителя
Последний метод, о котором мы хотим рассказать в рамках сегодняшней статьи, является самым радикальным, поскольку подразумевает полное форматирование накопителя, после будет восстановлено состояние файловой системы. Такой вариант подойдет только в той ситуации, если на диске нет важных файлов и все содержимое можно удалить. Более детальные инструкции по данной теме ищите в отдельном материале на нашем сайте, воспользовавшись указанной далее ссылкой.
Сегодня мы разобрали четыре метода исправления неполадки «Файловая система доступна только для чтения». Осталось найти подходящий только путем перебора, выполняя по порядку все приведенные инструкции. В большинстве случаев хотя бы один из них оказывается действенным и позволяет полностью устранить рассмотренную ошибку.