答案1
如果您这样做cp /dev/sdb1 file.img
(或者与此相同,dd
但使用dd
在这里会适得其反,尤其是在默认块大小的情况下),将设备第一个分区的原始内容复制sdb
到file.img
,file.img
的内容将是一个 VFAT 格式的文件系统映像,例如iso
image 将包含 ISO9660 类型文件系统的映像,因此您需要访问其中的文件的是能够理解 VFAT 文件系统的东西,就像您需要能够理解 ustar/pax 文件格式来访问存档中的文件一样tar
。
/dev/sdb1
Linux 内核确实理解 VFAT 文件系统,这就是您在挂载/dev/sdb1
到某个目录后能够访问文件的方式。
您还可以使用块设备挂载包含在普通文件中的文件系统loop
。
sudo losetup -f --show file.img
f
将创建一个循环设备(使用其路径的第一个ree 设备show
),其行为类似于块设备,但由常规文件支持。
然后您可以使用 来安装它sudo mount /dev/loopXX /some/directory
。
如果您不打算对图像进行任何修改,则可能应该通过向该命令添加-r
或将其挂载为只读,或者甚至通过将选项-o ro
传递给 来使循环设备本身成为只读。-r
losetup
如今,如果您通过以下选项,则可以自行mount
完成:losetup
-o loop
sudo mount -o loop file.img /some/directory
对于更新的版本,您甚至可以跳过,-o loop
因为如果尝试挂载常规文件,它会假设您想要循环挂载:
sudo mount file.img /some/directory
其他理解 VFAT 文件系统的东西是 GNU mtools
,您可以使用COMMAND.COM
/ CMD.EXE
MS-DOS/Windows 命令(dir
, type
, copy
... )前缀m
(对于 Microsoft/MS-DOS)来访问 VFAT 格式磁盘中的文件或磁盘映像。
mdir -i file.img
将列出 中包含的 VFAT 文件系统根目录的内容file.img
。