将可启动 USB 转换为 ISO 文件

将可启动 USB 转换为 ISO 文件

我正在尝试从可启动的 USB 记忆棒获取 ISO 文件。该记忆棒的设备名称是dev/sdf1。在此答案中:将可启动 USB 转换为 ISO 文件dd被建议复制。所以我这样做了:

sudo dd if=/dev/sdf1 of=win7.iso

但是,该棒的大小为 30G,但只使用了 12G。运行上述命令,它会创建一个大于 12G 的 iso 映像,dd当文件大于 20G 时我停止了,因为我的磁盘空间不足。ISO 文件变得这么大是正常的吗?还是有其他方法可以实现我的目标?

答案1

dd是 1:1 复制,它会复制整个设备,而不管其上有什么。如果您只复制一个分区 ( sdf1),则不太可能启动,因为引导加载程序通常位于 sdf MBR 上。

如果可用空间已清零,则可以使用 gzip 来保存可用空间。

要将可用空间清零,您可以使用:

mount /dev/sdf1 /mnt/tmp
dd if=/dev/zero bs=1M | split -b 1G - /mnt/tmp/zerofile
sync
rm /mnt/tmp/zerofile*
umount /mnt/tmp

要创建 gzip 压缩图像:

dd if=/dev/sdf bs=1M | gzip > win7.img.gz

要从该图像恢复,方法是:

gunzip < win7.img.gz | dd of=/dev/sdf bs=1M

其他替代方案是partimagentfsclone(对于 ntfs 来说),它们仅存储文件而不是可用空间,但是结果可能无法启动,因为它不是 1:1 的复制。

答案2

您可以像这样压缩图像

dd if=/dev/sdf1 conv=sync,noerror bs=64K | gzip -c  > usb.img.gz

这样,它就不会复制 USB 驱动器的空白部分。

dd创建磁盘映像,而不是 iso。

相关内容