USB 驱动器上的 FAT 太多?

USB 驱动器上的 FAT 太多?

不久前,我使用类似这样的代码在 USB 驱动器上写入了一个图像:

dd bs=4M if=/path/to/image.iso of=/dev/sdb && sync

那里一定出了什么大问题,因为在使用驱动器一两次后,Ubuntu 不再自动挂载它。因此,我决定先覆盖分区表,因为映像分区表不是标准表。所以我做了:

dd count=1 bs=512 if=/dev/zero of=/dev/sdb && sync

之后,Ubuntu 突然再次挂载了驱动器,我实际上可以访问映像。这很有趣,因为我基本上删除了分区表。因此,我尝试了:

cfdisk /dev/sdb

然而,cfdisk喊了一声FATAL ERROR: cannot open disk drive。因此,我尝试了 gparted 并创建了一个新的分区表。现在,驱动器已自动安装,但我对整个过程感到怀疑,所以我尝试了一下,fsck.msdos这是我收到的非常令人不安的消息:

prompt@prompt:~$fsck.msdos /dev/sdb
dosfck 3.0.12, 29 Oct 2011, FAT32, LFN,
Currently, only 1 or 2 FATs are supported, not 251.

但是,如果我用以下方法检查分区表,fdisk则不会收到任何错误消息,什么都没有,只有一个带有一个分区的干净表:

Disk /dev/sdb: 4004 MB, 4004511744 bytes
218 heads, 51 sectors/track, 703 cylinders, total 7821312 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00095e47

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     7821311     3909632    b  W95 FAT32

所以,我现在看到的唯一选择是将第一个扇区清零,这就是这一切的开始。我将尝试将整个设备清零并报告结果。不过,请随时给我其他建议。

答案1

擦除第一个 mibibyte

通常来说擦除(用零覆盖)第一个 mibibyte删除可能使使用或创建分区表和文件系统的程序感到困惑的数据。

你可以用dd与前 512 个字节类似的方法执行此操作。但dd这样做有风险,因此我建议mkusb,即“用安全带缠绕dd”。还有其他工具比更安全dd,例如磁盘别名gnome-disks

将整个驱动器清零应该可行,但这样做很慢,并且会导致内存单元不必要的磨损。我只在驱动器变慢时使用它(以便使其再次快速运行并将裕度恢复到“僵局”状态)。请参阅此链接:Pendrive 寿命

克隆

如果使用或其他克隆工具正确完成dd,克隆过程非常可靠。mkusb

因此,我认为您的问题取决于分区表和/或文件系统,它们来自映像文件(image.iso),或者是由于错误或不完全的关机导致文件系统损坏。

当 USB 驱动器上的某个分区仍处于挂载状态时,您不得将其拔出。让系统刷新缓冲区、完成将数据从 RAM 写入分区的文件系统非常重要。

答案2

我使用 Kde-parted 修复了同样的错误。

我遇到了这个错误,也没有fsck.vfat修复dosfsck

因此我创建了一个新的 FAT,在卸载之前,标记了分区、顶部、设备、创建新的 FAT,或者ctrl—— shiftN

然后格式化,创建一个新的分区,一切又正常工作。

相关内容