Ошибка read-only file system появляется в тот момент, когда система отказывается записывать файл: команда cp или touch возвращает «Read-only file system», редактор не сохраняет документ, а Android-приложение сообщает, что не может изменить данные на карте памяти. Это не сбой конкретной программы, а состояние всей файловой системы — она смонтирована ядром в режиме «только чтение», и запись заблокирована на уровне ОС.
Чаще всего такое поведение — защитная реакция. Ядро переводит раздел в режим только для чтения, когда обнаруживает ошибки файловой системы, сбои накопителя или проблемы с контроллером, чтобы не усугубить повреждение данных. Реже причина в настройках: раздел намеренно смонтирован с параметром ro, носитель имеет физический переключатель защиты от записи, а в Android запись на внешнюю SD-карту ограничена политикой доступа.
Что означает режим «только чтение»
Файловая система может быть смонтирована в двух базовых режимах: rw (read-write, чтение и запись) и ro (read-only, только чтение). В режиме ro ядро отклоняет любые операции изменения: создание, удаление, переименование файлов и запись в них. Чтение при этом работает в полном объёме.
Перевод в read-only бывает двух видов. Первый — намеренный: администратор или сама система монтирует раздел с опцией ro, например для Live-сессий, раздела восстановления или защиты критичных данных. Второй — аварийный: ядро Linux при ошибках ввода-вывода само перемонтирует раздел в read-only, если в /etc/fstab для него указана опция errors=remount-ro (для ext4 это часто поведение по умолчанию).
Как проверить, в каком режиме смонтирован раздел
Прежде чем что-либо исправлять, нужно увидеть текущее состояние. В Linux выполните в терминале команду, которая покажет все смонтированные файловые системы и их опции:
mount | grep " / "
В выводе ищите интересующий раздел: если в скобках среди параметров стоит ro, раздел действительно смонтирован только для чтения. Альтернативный способ — команда findmnt / или просмотр файла /proc/mounts.
Второй обязательный шаг — посмотреть журнал ядра. Именно там видно, почему система ушла в read-only:
dmesg | grep -iE "error|remount|ext4|i/o"
- 🔍 Строки вида «Remounting filesystem read-only» — ядро аварийно перевело раздел в ro после ошибки.
- 💾 Сообщения «I/O error» или «Buffer I/O error on dev…» — вероятны проблемы с накопителем или кабелем.
- 🧩 Ошибки «EXT4-fs error» — повреждение структуры файловой системы, требуется проверка.
- 🔒 Отсутствие ошибок при смонтированном ro — раздел переведён в read-only намеренно, через
/etc/fstabили команду монтирования.
Основные причины ошибки
Причины удобно разделить на четыре группы — от них зависит дальнейший план действий. Не стоит сразу перемонтировать раздел в rw: если причина аппаратная, принудительная запись может окончательно повредить данные.
| Причина | Типичные признаки | Первое действие |
|---|---|---|
| Ошибки файловой системы | Раздел ушёл в ro после сбоя питания или зависания | Проверка fsck с Live-USB |
| Неисправность накопителя | I/O error в dmesg, медленная работа, щелчки HDD | Копирование важных данных, проверка SMART |
| Ручное монтирование ro | Ошибок в dmesg нет, раздел в ro сразу после загрузки | Проверить /etc/fstab и опции монтирования |
| Физическая защита носителя | SD-карта или USB-адаптер с рычажком Lock | Проверить переключатель на корпусе |
| Ограничения Android | Запись на SD-карту недоступна сторонним приложениям | Использовать системный файловый менеджер или доступ через SAF |
⚠️ Внимание: если в журнале ядра есть ошибки ввода-вывода, первым делом скопируйте важные данные на другой носитель, пока диск читается. Любые попытки «починить» раздел на умирающем накопителе сокращают шансы на успешное восстановление файлов.
Быстрое решение: перемонтирование в режим записи
Если проверка показала, что ошибок диска нет и раздел оказался в read-only из-за настроек или разового сбоя, его можно перемонтировать «на лету», без перезагрузки. Для корневого раздела команда выглядит так:
sudo mount -o remount,rw /
Для отдельного раздела укажите его точку монтирования, например sudo mount -o remount,rw /mnt/data. Если команда завершилась без ошибок — запись восстановлена. Проверьте результат повторным вызовом mount: в опциях должно появиться rw.
Бывает, что перемонтирование отклоняется с сообщением о занятости раздела. Тогда проверьте, какие процессы удерживают файлы: sudo lsof +D /точка/монтирования или sudo fuser -vm /точка/монтирования. Завершите мешающие процессы и повторите попытку.
☑️ Проверка перед перемонтированием в rw
Исправление ошибок файловой системы через fsck
Когда причина — повреждение структуры файловой системы, помогает утилита fsck. Главное правило: проверять раздел нужно в размонтированном состоянии. Проверка смонтированного раздела может усугубить повреждения, поэтому для корневого раздела процедуру выполняют с Live-USB или из режима восстановления.
Загрузившись с Live-носителя, определите имя устройства командой lsblk и запустите проверку, например для ext4:
sudo fsck -f /dev/sda2
Утилита задаст вопросы об исправлении найденных ошибок. Ключ -y отвечает «да» на все запросы автоматически, но при первом проходе разумнее читать, что именно исправляется. После завершения перезагрузитесь в основную систему и проверьте, монтируется ли раздел в rw.
⚠️ Внимание: не запускайте fsck на смонтированном разделе и не прерывайте проверку на полпути. Если fsck находит массу ошибок, это косвенный признак проблем с самим накопителем — после восстановления данных проверьте его состояние через SMART (
smartctl -a /dev/sdX).
Read-only на SD-картах, флешках и в Android
Съёмные носители — отдельный случай. У полноразмерных SD-карт и многих картридеров есть механический переключатель Lock на боковой грани: в положении блокировки контроллер карты отказывает в записи на аппаратном уровне, и никакие команды ОС это не изменят. Проверьте положение рычажка и попробуйте другой картридер — изношенный адаптер иногда «залипает» в состоянии защиты.
Если переключателя нет или он в рабочем положении, возможен износ флеш-памяти. У USB-флешек и microSD контроллер при исчерпании ресурса перезаписи нередко сам переводит носитель в постоянный read-only — это необратимое состояние: данные ещё читаются, но записать или отформатировать карту уже нельзя. В такой ситуации единственное верное действие — скопировать содержимое и заменить носитель.
В Android ситуация иная: начиная с современных версий системы, сторонним приложениям запись в корень внешней SD-карты ограничена политикой доступа. Ошибка «read-only file system» в файловом менеджере часто означает именно это ограничение, а не неисправность. Запись возможна в собственную папку приложения на карте (Android/data/имя.пакета) или через системный диалог выбора файлов. Точное поведение зависит от версии Android и оболочки производителя, поэтому сверяйтесь с документацией конкретного устройства.
Почему флешка «намертво» уходит в read-only
Внутри флеш-накопителя работает контроллер, который следит за состоянием ячеек памяти. Когда резервные блоки для замены сбойных заканчиваются, контроллер переводит прошивку в режим защиты данных: блокирует запись, оставляя чтение. Программно это состояние обычно не снимается штатными средствами ОС — требуются заводские утилиты под конкретный контроллер, и даже они не гарантируют результат.
Когда раздел смонтирован ro намеренно
Иногда read-only — не ошибка, а задуманная конфигурация. Проверьте файл /etc/fstab: если в строке нужного раздела в поле опций указано ro, система будет монтировать его только для чтения при каждой загрузке. Замените ro на rw и выполните sudo mount -a для применения без перезагрузки.
Также встречаются специфические сценарии: разделы /boot в некоторых hardened-сборках, overlay-файловые системы на роутерах и встраиваемых устройствах, контейнеры с read-only rootfs. В этих случаях режим задан осознанно, и менять его стоит только понимая, зачем он был включён.
Профилактика повторного появления ошибки
Чтобы ошибка не возвращалась, устраните первопричину, а не только симптом. Вот базовый набор мер:
- 🔌 Исключите внезапные отключения питания — именно они чаще всего приводят к повреждению файловой системы и аварийному remount-ro.
- 🌡️ Следите за состоянием накопителя: периодически просматривайте SMART-параметры, особенно счётчики переназначенных секторов и ошибок.
- 💾 Настройте регулярное резервное копирование — read-only на изношенной флешке или деградирующем диске это вопрос времени.
- 🧰 Используйте качественные картридеры и кабели: нестабильный контакт вызывает I/O errors, которые ядро трактует как сбой диска.
Если ошибка появилась однократно после сбоя питания и fsck ничего критичного не нашёл, достаточно наблюдать за системой. Повторяющиеся уходы в read-only — сигнал планировать замену накопителя, а не бороться с симптомом.
Частые вопросы
Можно ли исправить read-only без потери данных?
В большинстве сценариев да. Перемонтирование в rw и проверка fsck не удаляют пользовательские файлы. Риск потери данных возникает при аппаратной неисправности накопителя, поэтому при ошибках ввода-вывода сначала копируйте важное, а потом чините.
Почему команда remount,rw возвращает ошибку?
Частые причины: раздел занят процессами, файловая система повреждена настолько, что ядро отказывается монтировать её в rw, либо носитель заблокирован аппаратно (переключатель Lock или изношенный контроллер флешки). Проверьте dmesg и список процессов через lsof или fuser.
Что делать, если в read-only ушёл корневой раздел и система не загружается?
Загрузитесь с Live-USB, определите раздел через lsblk, выполните fsck в размонтированном состоянии и перезагрузитесь. Если после проверки система снова уходит в ro, проверяйте SMART диска и кабели подключения.
Почему Android не даёт записывать файлы на SD-карту?
Начиная с современных версий Android, сторонние приложения имеют ограниченный доступ к внешней карте. Используйте системный файловый менеджер, запись в папку приложения на карте или системный механизм выбора файлов. Точные возможности зависят от версии ОС и прошивки устройства.
Флешка определяется, читается, но не форматируется — это read-only?
Очень похоже на аппаратную защиту контроллера при износе памяти. Проверьте переключатель Lock (если есть) и другой картридер. Если защита остаётся на любом устройстве, носитель, скорее всего, необратимо переведён в режим только чтения — скопируйте данные и замените его.