Windows 说我需要格式化 FAT32 分区

Windows 说我需要格式化 FAT32 分区

我最近尝试使用 Linux Mint 19 系统将 USB 驱动器(Kingston DT Elite G2)上的某些文件从 NTFS 移至 FAT32。我所做的是:

  • 建立 FAT32 分区
  • 将一些文件从 NTFS 分区复制到 FAT32 分区。

执行此操作后,Windows 和 Linux 仍可读取这两个分区。但是,在缩小 NTFS 分区并增加 FAT32 分区的大小后,Windows 再也无法读取 FAT32 分区。我收到“您需要格式化磁盘”消息。Windows 仍可读取 NTFS 分区。

然后我fsck /dev/sdb2在 Linux 系统上运行,它删除了脏位(已设置)并修复了一些文件长度不正确的文件。(请注意,fsck.fat使用的是,而不是fsck.ext。)

即使运行后fsck,问题仍然存在。Windows 磁盘管理显示该分区为 RAW(无法识别)。 磁盘管理

但是,这个分区甚至可以被一些 Windows 程序读取。DiskInternals 将它作为一个无名 FAT32 分区读取,没有任何错误(即使这个分区有名字)。 磁盘内部

我该怎么做才能让 Windows 资源管理器再次读取该分区?

答案1

这可能与https://unix.stackexchange.com/q/410440/168301,其他人也遇到了同样的问题。链接到的评论(应该是答案)https://bugzilla.gnome.org/show_bug.cgi?id=759916#c21

如果它可以帮助某人,下面是我用来修复 USB 密钥上损坏的 FS 的单行代码,基于上述评论:

$ echo -ne '\xeb\x58\x90' | sudo dd conv=notrunc bs=1 count=3
of=/dev/sdb1

注意瞄准正确的分区(在我的情况下是 /dev/sdb1,在你的情况下可能是其他分区),并首先在文本文件上测试命令行,以确保你的 shell 正确解释十六进制(上述操作在 ZSH 中有效,但在其他 shell 中,你可能必须将反斜杠加倍)。

我在 bash(不是 zsh)中运行了此命令,它修复了我硬盘上一个存在相同问题的分区(以前,Windows 和 testdisk 无法识别该分区上的文件系统)。不过我没有在 fish 上测试。

我仍然认为需要更改 Linux 的 fsck.vfat 以识别和修复此错误,并且 testdisk 理想情况下应该识别这种类型的损坏磁盘并为您恢复它,并且 photorec 在尝试取消格式化这种类型的损坏分区时不应该进入无限循环。

相关内容