无法挂载SD卡

无法挂载SD卡

我想安装一张SD卡。插入 dmesg 日志后,我会看到以下内容:

[Thu Oct 25 10:59:44 2018] sd 0:0:0:0: [sdb] 30318592 512-byte logical blocks: (15.5 GB/14.5 GiB)
[Thu Oct 25 10:59:44 2018]  sdb: sdb1

看起来不错,但是当我想安装它时,它失败了,使用 command sudo mount /dev/sdb1 /mnt/sdcard,这是 dmesg 输出:

[Thu Oct 25 10:59:55 2018] FAT-fs (sdb1): error, invalid access to FAT (entry 0x00038a03)
[Thu Oct 25 10:59:55 2018] FAT-fs (sdb1): Filesystem has been set read-only

有人能告诉我出了什么问题吗?我不想格式化该卡,因为我会丢失所有数据。

答案1

阅读 Linux 内核源代码可以<source code root>/fs/fat/fatent.c发现该消息的措辞可能有些糟糕:它实际上意味着正在访问的 FAT 条目没有通过有效性检查。

您可能想要卸载卡,然后运行fsck.fat -n /dev/sdb1以评估卡上文件系统的运行状况,然后可能运行fsck.fat -aw /dev/sdb1以尝试修复它。

在尝试修复文件系统之前,如果其中的文件很重要,您可能需要制作卡内容的映像文件:dd if=/dev/sdb1 of=/some/place/with/plenty/of/space/sdcard.img bs=16k

答案2

我的第一个想法是这可能是由于 SD 卡的锁定机制造成的,但我在 Google 上搜索了一下,听起来这就是当 Linux 尝试从 FAT 分区读取损坏的数据时收到的消息。我会尝试 fsck。如果这不能解决问题,那么您可能别无选择,只能重新格式化。不过,如果 SD 卡确实至少以只读方式安装,那么仍有可能恢复一些数据。

相关内容