Ошибка read only file system может возникнуть при загрузке с LiveCD диска или в режиме восстановления вашего дистрибутива. Она означает, что файловая система в которую вы пытаетесь вести запись примонтирована только для чтения. Этому может быть несколько причин. Есть файловые системы, которые доступны только для чтения это файловая система оптических дисков — ISO, а также файловая система образов SquashFS.
С такими файловыми системами вы сделать ничего не сможете. Для изменения данных в них, надо распаковать образ, изменить данные и запаковать его обратно. Но что касается обычных файловых систем, таких как EXT4, BTRFS, XFS, то их можно монтировать и для чтения и для записи.
В этой небольшой статье мы рассмотрим как исправить read only file system Linux перемонтировав файловую систему для записи. Первым делом надо определиться с точкой монтирования, для которой надо разрешить запись. Попытаемся создать файл в корневом каталоге:
touch /file
Ошибка, файловая система корневого каталога доступна только для чтения. Чтобы посмотреть все точки монтирования доступные в системе выполните в терминале:
mount | grep /dev/sd
В данном случае, корневая файловая система и есть точкой монтирования. Но у вас, например, возникнут проблемы с созданием файла в домашней папке, то надо будет уже перемонтировать /home. Смотрите внимательно. Когда точка монтирования выбрана, осталось её примонтировать с правами на запись:
sudo mount -o remount,rw /
Или для /home:
sudo mount -o remount,rw /home
После этого вы сможете создать файл без каких-либо проблем. После завершения работы, во избежание повреждения данных при перезагрузке, желательно перемонтировать файловую систему обратно в режим только для чтения:
sudo mount -o remount,ro /
Теперь вы знаете что означает эта ошибка и как с ею справится. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
В некоторый случаях файловая система в Linux может перейти в состояние read-only, при котором вы можете только читать данные с диска, а при попытке записи любых изменение или создании нового файла появдляется ошибка Read-only file system.
Ошибки файловой системы и опция remount-ro
Проверьте параметры монтирования дисков при загрузке Linux. Настройки монтирования файловых систем при загрузке задаются в файле /etc/fstab.
$ cat /etc/fstab
Обратите что в fstab есть строка монтирования корневой директории вида:
UUID=aaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaa / ext4 errors=remount-ro 0 1
Параметр
errors=remount-ro
означает, что данная директория будет смонтирована в режиме чтения, если на файловой системе устройства обнаружены проблемы. В этом случае нужно выполнить проверку диска с помощью FSCK.
Обычные файловые системы такие как EXT4/BTRFS/XFS можно монтировать как в режиме записи, так и только для чтения (в отличии от файловых систем ISO или SquashFS, которые доступны только для чтения).
В случае обнаружения ошибок на диске вы можете использовать одну из трех опций
errors=[continue|remount-ro|panic]
- continue – игнорировать ошибки,
- remount-ro – перемонтировать диск в режиме только для чтения
- panic – остановить загрузку системы
Вы можете вывести соответствие между UUID диска и именем устройства:
$ sudo blkid
В данном примере вы получили, что вашему UUID соответствует устройство /dev/sda3.
Также можно имена устройства и точки монтирования с помощью команды:
$ df –h
Т.к. в данном примере ошибки обнаружены в корневой директории которая является точкой монтирования, вы сможете выполнить ее проверку только загрузившись с LiveCD. Для исправления ошибок файловой системы используется команда:
$ sudo fsck –y /dev/sda3
Или
$ sudo fsck –y UUID=aaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaa
Если вы не можете прямо сейчас выполнить проверку диска, и вы хотите немедленно вывести файловую систему из режима read-only, нужно выполниться команду:
$ sudo mount -o remount,rw /
Обязательно запланируйте проверку файловой системы на ближайшее время.
Read-only файловая система в виртуальных машинах
Файловая система раздела Linux на виртуальной машине можете перейти в read-only в случае недоступность системы хранения данных (СХД). Самый простой способ восстановить работу ОС – выполнить сброс виртуальной машины (фактически перезапуск с параметрами по умолчанию).
Может оказаться, что ВМ с Linux вообще не загружается и вам доступна только командная строка initramfs с предупреждениями:
UNEXPECTED INCONSISTENCY: RUN fsck MANUALLY. Fsck exitrd with code 4. The root file system of /dev/sdx requires a manual fsck.
Initramfs это начальная файловая система в оперативной памяти, которая основана на tmpfs, которая содержит утилиты и скрипты, необходимые для работы с дисками, файловыми системами и тд. После запуска initramfs отобразится проблемная ситуация.
Если же ошибок нет – просто вводим exit. Иначе выполняем проверку диска:
$ fsck /dev/sda3 –y
Здесь указан том (в данной случае /dev/sda1), для которого требуется выполнить ручную проверку. С помощью следующей команды можно проверить все подключенные файловые системы:
$ fsck –A –y /dev/sda1
После этого перезагрузите ВМ.
Failed to push selection: Read-only file system
this error comes when i am trying to add any file in sdcard of emulator..can any one tell me what is the solution of it?
Sree
3,1262 gold badges31 silver badges39 bronze badges
asked Dec 13, 2011 at 4:53
3
You need to grant your app permission to write to the external SD card. It’s not important that you’re in the «emulator», the emulator IS Android, so it needs to have the same rights as if it were running on an actual device.
Add this line to your manifest…
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
And you’ll be good to go.
answered Dec 13, 2011 at 5:01
Yevgeny SimkinYevgeny Simkin
27.9k39 gold badges136 silver badges236 bronze badges
1
I had the same problem; The reason appeared to be that the sdcard was not given a size.
By opening the ‘Android Virtual Device Manager’ and edit the device, I could alter the size of the sdcard, or at least make sure that it is not blanc (as that was my problem). After saving the alterations and a reboot of both the emulator and in my case alse Eclipse, the read/write permissions were set correct and I could add files to the sdcard in the emulator.
answered Jun 21, 2013 at 12:21
incomudroincomudro
5484 silver badges12 bronze badges
1
Make sure that you have added SDCard
to your Emulator. So, you should make sure that your AVD should have the SD Card Support - yes
answered Dec 13, 2011 at 5:06
Lalit PoptaniLalit Poptani
67.1k22 gold badges160 silver badges242 bronze badges
0
I experienced distressing Android external SD read/write error.
The work around was to check file errors:
Popped the SD card in to my Windows phone, and error gone..!
answered Jul 3, 2017 at 11:31
What solved this for me was, as said creating my own sd card file. The steps are as follows
- Create sdcard
android/sdk/tools/mksdcard [size] [file]
- And attach the file as external file under sdcard (shown in advanced setting). Note: this sometimes doesn’t work. if it doesn’t go to ~/.android/avd/[device].avd/config.ini and set sdcard to the generated file
answered Apr 26, 2018 at 12:51
dynamodynamo
1,12310 silver badges14 bronze badges
When I try to save something or rename a file/folder it say this error » Read-only file system» or run something as root in the terminal it say this error
sudo: unable to open /var/lib/sudo/"My User Name"/0: Read-only file system
W: Not using locking for read only lock file /var/lib/dpkg/lock
E: Unable to write to /var/cache/apt/
E: The package lists or status file could not be parsed or opened.
When I make a Folder the error dialog in the details with Nautilus is this:
Error creating directory: Read-only file system
I would show you I picture of it but it isn’t even letting my save onto my flash drive. Please help me.
Seth
56.9k43 gold badges144 silver badges198 bronze badges
asked Apr 28, 2013 at 2:35
0
This worked for me:
First, run this command with sudo
permission:
sudo fsck -n -f
Then reboot the machine.
The options -f
and -n
are documented directly under man fsck
, but under the filesystem-specific fsck
subcommand. The fs-specific-options
part alludes to this:
SYNOPSIS
fsck [-lsAVRTMNP] [-r [fd]] [-C [fd]] [-t fstype] [filesystem...] [--] [fs-specific-options]
From man fsck.ext4 (a.k.a. e2fsck
):
-f
— Force checking even if the file system seems clean.
-n
— Open the file system read-only, and assume an answer ofno
to all questions. Allowse2fsck
to be used non-interactively. This option may not be specified at the same time as the-p
or-y
options.
Further comments to option -n
from this Unix & Linux stackexchange answer:
If you meant
fsck -n
, then the filesystem-specific programs are called and passed the-n
option, which for most of them means “look but don’t touch”. If the filesystem is mounted,fsck
will usually find spurious errors, because a mounted filesystem tends to be in an inconsistent state as write operations are happening. It won’t lock up your system, but it won’t report anything useful either.
answered Jan 6, 2017 at 17:24
user639154user639154
3693 silver badges2 bronze badges
8
When the system enters a read-only state, it does so to prevent damage to the system. Make sure your HDD is working properly and/or backup your data before doing anything.
I suggest to boot a live USB/DVD, open GParted, and use the check/repair feature.
This is the command to enable writing:
sudo mount -o rw,remount /
answered Apr 28, 2013 at 2:41
9
If you are dual booting Windows with Ubuntu and you do not have any error in dmesg
, then the problem could very well be caused by Windows.
In Windows go to Control Panel → Power Options and disable Fast Startup. Now boot into Ubuntu.
answered Jul 16, 2018 at 16:09
Prejith PPrejith P
1011 silver badge2 bronze badges
7
When accessing an HDD from different OS (Windows & Linux) the disk could contain an unclean file system. So the metadata cached in the OS, deny mounting the disk
To try to correct the mistakes, identify the path of your partition disk in the Disk app (i.e: /dev/sdb1
found by lsblk
) and use ntfsfix
.
sudo ntfsfix /dev/sdb1
If the disk is not mounted automatically, so:
$ sudo mkdir /media/[mount point]
$ sudo mount -o rw /dev/sdb1 /media/[mount point]
If you get the error Read-only file system
then you should delete the following directories from Windows:
- .Tash-1000
- $RECYCLE.BIN/
In Git Bash as Admin:
Identify your disk. In my case is /f
$ cd /f
$ rm -R $RECYCLE.BIN/ && rm -R .Tash-1000
GL
answered Jul 18, 2020 at 4:22
If someone using dual OS(Ubuntu, Windows) like me, NTFS filesystem is the main reason of this problem. Inspect the path of disk like «/dev/sda3», unmount the disk and run:
sudo ntfsfix /dev/sda3
answered May 24, 2022 at 5:45
sundowatchsundowatch
2631 gold badge4 silver badges12 bronze badges
2
In my case, I have a common drive between Windows and Ubuntu.
On Ubuntu, I had installed trash-cli and had trashed some files.
When I booted in Windows, I did some defragmentation on that drive.
But when I went back to Ubuntu, then it started giving me Read-only file system
error on any write operation.
After reading @Braian Coronel’s answer, I went back to Windows and permanently deleted .Trash-1000
folder which solved my issue.
answered Dec 22, 2021 at 17:35
Thanks, Sérgio, for «mount» command without parameters idea.
I’d need to made adb push
into /data/data/com.my.app/lib
for some test issue, and get «Read-only filesystem» message.
ls command shows me:
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
So, it’s understood, that «lib» directory is separated from other application directories.
Command
mount -o rw,remount /mnt/asec
didn’t resolve «r/o fs» issue, it wants device parameter before directory parameter.
«df» command didn’t help also, but shows that my /mnt/asec/com.my.app-1
directory is at the separate mount point.
Then I looks by mount
and voila!
root@android:/ # mount
.........
/dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0
Next steps are already described upwards: remount to RW, push and remount back to RO.