修复图像上的FAT文件系统

我有一个损坏的FAT文件系统的USB笔式驱动器。 现在我尝试修复它。 因此,首先尝试从中获得的东西,而不会进一步危害原始硬件,我使用以下命令行使用dd创build了一个映像:

 $ sudo dd if=/dev/sdb of=pendrive.img 

现在我想通过运行fsck来修复映像中的文件系统。

但是fsck立即终止如下:

 $ sudo fsck.vfat -a -t -v pendrive.img fsck.fat 3.0.27 (2014-11-12) Logical sector size is zero. 

有什么技巧可以告诉fsck假定一个扇区的大小,或者这个消息是什么意思? 有人可以帮助解释这个输出吗?

这个问题类似于文件中的fsck文件系统,但这是关于ext2的。 另外https://superuser.com/questions/129189/cant-mount-fat32-drive-under-ubuntu-linux没有给出答案。

你用你的dd命令制作了你的整个USB随身碟的图像。 这意味着该映像还包含一个分区表。

这就是为什么你不能直接将图像作为文件系统安装的原因。

要在映像中安装文件系统,您需要使用kpartx实用程序从映像中的分区表中生成虚拟设备。

 kpartx -v -a /path/to/image 

将在/dev/mapper目录中创build新的分区映射,这将指向映像中的实际分区。 然后,您可以将这些条目用作mount命令或fsck.vfat命令的设备。