一、先确认:是“挂载只读”,还是“设备只读”
1️⃣ 看挂载状态
mount | grep -i sd
# 或
findmnt /run/media
如果看到类似:
/dev/sdb1 on /run/media/usb type vfat (ro,nosuid,nodev)
说明是 文件系统被以 ro 挂载。
2️⃣ 看内核是否把设备标记为只读(更严重)
lsblk -o NAME,RO,RM,SIZE,TYPE,MOUNTPOINT
示例:
sdb 1 1 29G disk
└─sdb1 1 1 29G part /run/media/usb
RO=1→ 内核层面只读这种情况 重新 mount 往往没用
二、只是“挂载成只读”的情况(还有救)
3️⃣ 尝试重新以 rw 挂载
umount /dev/sdb1
mount -o remount,rw /dev/sdb1
或
mount -o rw /dev/sdb1 /run/media/usb
如果成功 → 问题结束。
三、文件系统出错,内核自动保护(最常见)
4️⃣ 看内核日志(非常关键)
dmesg | tail -n 50
如果看到:
FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain
Remounting filesystem read-only
或
Buffer I/O error on dev sdb
说明:
👉 文件系统损坏,内核强制只读
5️⃣ 对应文件系统修复
⚠️ 先卸载!
umount /dev/sdb1
FAT / exFAT(最常见 U 盘)
fsck.vfat -a /dev/sdb1
# 或
fsck.exfat /dev/sdb1
# 或
fsck.ext4 -f /dev/sdb1
修复完成后重新插拔或重新挂载。
四、设备被硬件写保护(基本没救)
6️⃣ 看设备是否被内核标记为只读
cat /sys/block/sdb/ro
输出
1→ 设备级只读输出
0→ 还能尝试
也可以
hdparm -r /dev/sdb
如果看到:
readonly = 1 (on)
尝试关闭:
hdparm -r0 /dev/sdb
❗如果失败:
SG_IO: bad/missing sense data
👉 说明是 U 盘控制器主动锁死
五、闪存寿命耗尽(非常常见)
6️⃣ 查看是否写保护
如果你看到 dmesg 类似:
usb-storage: device write protect is on
或:
Write Protect is on
这是 U 盘主控检测到 NAND 坏块过多
→ 自动进入 只读模式防止数据进一步损坏
⚠️ 这种情况:
-
❌ 无法恢复写入
-
✅ 还能拷数据
-
🔥 只能换新 U 盘
1835

被折叠的 条评论
为什么被折叠?



