在 Linux 中,分区或设备被只读(read-only)挂载,通常由以下几类原因导致。你可以按这个思路逐一排查。
Linux 在挂载时如果发现文件系统不一致(如 ext4 有错误),会自动以只读方式挂载,防止数据损坏。
典型现象:
dmesg 中有类似:EXT4-fs error (device sda1): ...
remounting filesystem read-only
解决:
# 查看错误
dmesg | tail
# 卸载后检查(不要在挂载时做)
umount /dev/sda1
fsck -y /dev/sda1
# 重新挂载
mount /dev/sda1 /mnt
某些文件系统默认就是只读的,例如:
romount -o ro /dev/sda1 /mnt
或 /etc/fstab 中:
/dev/sda1 /mnt ext4 ro 0 0
解决:
mount -o remount,rw /mnt
或修改 /etc/fstab 中的 ro 为 rw
判断方法:
lsblk -o NAME,RO
如果 RO=1,说明设备被标记为只读。
blockdev --getro /dev/sda1
返回 1 表示只读。
临时解除(仅当硬件允许):
blockdev --setrw /dev/sda1
系统崩溃或根分区异常时,会整体只读挂载根文件系统。
# 1. 当前挂载状态
mount | grep sda1
# 2. 是否只读
findmnt -o TARGET,OPTIONS /mnt
# 3. 设备是否只读
lsblk -o NAME,RO
# 4. 内核日志
dmesg | tail
如果你愿意,可以贴出:
mount 输出dmesg | tail/etc/fstab我可以帮你精确定位是哪一种原因。