现象描述
USB Mass Storage Gadget 格式化完后:
- 旧文件还在
- 可以创建新文件、写入数据
- 删除文件提示成功,重插后文件又出现
原因分类
1. 存储设备进入只读模式
U 盘、TF 卡、eMMC 出现坏块时控制器会自动切换为 Read-Only。表现为删除”成功”但重新挂载后文件复原。
Linux 排查:
dmesg | grep -i readonly
dmesg | grep -i "write protect"
出现以下字样即确认只读:
Write Protect is on
switching to read-only mode
mmcblk0: read only
2. Gadget 镜像文件损坏
如果通过镜像文件方式挂载(echo /data/usb.img > lun/file),镜像内 FAT/exFAT 文件系统可能损坏:
# 检查镜像文件系统
fsck.vfat usb.img
# 或
dosfsck usb.img
3. Windows 快速格式化未重建文件系统
Windows “快速格式化”只重写 FAT 表,不实际清除旧数据,旧文件仍可被恢复工具读取。
彻底解决方式:
磁盘管理 → 删除分区 → 新建分区 → 完整格式化(取消勾选"快速格式化")
4. OverlayFS 层隔离(Android Root 环境)
TrickyStore、KernelSU、Magisk 等工具可能挂载了 OverlayFS,删除的是上层(upperdir),底层(lowerdir)文件仍然存在,重挂载后又出现。
mount | grep overlay
如有输出,需要先卸载 overlay 再操作底层文件系统。
5. NAND Flash 已损坏
最符合”能写入但删除无效”的情形:控制器接收了写入缓存但没有真正落盘,重插后旧数据回来。
验证方式:
touch test.txt && sync
rm test.txt && sync
umount /dev/sdX && mount /dev/sdX /mnt
ls /mnt/test.txt # 如果文件还在,基本确认存储介质损坏
修复方法
U 盘 / TF 卡(Linux)
# 用 diskpart 或 dd 低格
sudo dd if=/dev/zero of=/dev/sdX bs=1M status=progress
U 盘 / TF 卡(Windows)
以管理员运行 CMD:
diskpart
list disk
select disk N
clean
create partition primary
format fs=fat32 quick
assign
exit
Android/Linux 开发板 eMMC
eMMC 只读后一般无法软件修复,需要更换存储模块或使用厂商专用刷机工具重新初始化 flash 控制器。
快速定位表
| 现象 | 最可能原因 |
|---|---|
| 删除后重插文件回来 | NAND 只读 / OverlayFS |
| 格式化后旧文件可见但访问慢 | 快速格式化(未清除) |
| fsck 报错 | 镜像文件 FAT 损坏 |
| dmesg 有 write protect | 存储介质已进入只读保护 |
