我有一个 iso 映像(它是一个 windows 安装盘),但我不想刻录 dvd。我想创建一个可启动的 USB 闪存驱动器。而我想用linux工具来完成这个任务。
我找到了几个食谱,他们建议使用dd
如下工具:
dd if=/path/to/my.iso of=/dev/sdx
(这里是https://www.linux.com/blog/how-burn-iso-usb-drive)
另一个配方建议先在 USB 上创建一些分区(fe终端:从 iso 创建可启动 USB),这对我来说看起来很奇怪。
据我了解,闪存驱动器只是一个存储。它只是一个硬件,在给定该块的索引的情况下存储/返回一个数据块。这是对的吗?
/dev/sdx
Linux 通过设备提供对这个存储的访问(x
可能是任何字母,在我的情况下设备名称是/dev/sdb
)。我可以通过此设备访问 USB 记忆棒上的任何数据。这个对吗?
该dd
命令只是逐位读取文件的内容(嗯,逐块)并将数据写入指定的设备。如果输入文件足够大,U 盘上的每一位数据都将被覆盖。没有关于分区、文件系统类型等的信息会继续存在。这个对吗?如果是,在dd
命令之前对 USB 棒进行分区/格式化有什么用?
命令的结果dd
不是我所期望的。完成后,我可以从我的 linux 机器上看到 U 盘上的文件,但 U 盘无法启动,而且我的 Windows 根本无法读取(建议格式化 U 盘)。
我将使用一些工具来创建可启动的 USB 棒(rufus 或 yumi 或其他任何东西),现在这不是问题。问题是我不明白为什么我不能dd
用于此目的。
上述食谱可能不适用于所有iso图像吗?请帮助我了解发生了什么。
克隆和提取
这是克隆(使用
dd
和其他克隆工具完成。这是通过提取工具完成的。
克隆和提取都是可能的常用方法。这两种方法都有多种工具。
如果 iso 文件是混合 iso 文件,您可以通过刻录到 CD/DVD 磁盘和克隆到大容量存储设备来制作引导驱动器:USB pendrive、存储卡、HDD 或 SSD。如果 iso 文件不是混合 iso 文件,您可以通过刻录到 CD/DVD 磁盘来制作引导驱动器,但它不适用于大容量存储设备。但是您仍然可以使用提取工具制作引导设备(通过创建正确的分区表并将iso文件中的相关内容提取到大容量存储设备中)。
是的。
是的。
是的,因此,您不需要在克隆之前对 USB 记忆棒进行分区/格式化。无论如何,它的所有痕迹都会消失。
大多数主要的 linux 发行版都提供混合 iso 文件,这些文件在克隆时制作 USB 引导驱动器。但不是全部,例如不是 Knoppix(但您可以使用 处理 Knoppix iso 文件
isohybrid
)。Windows 7-10 iso 文件不是混合 iso 文件。因此,您需要一种提取方法(手动或使用工具)来创建 USB 引导驱动器。
链接
help.ubuntu.com/community/Installation/iso2usb
克隆无需准备
如何使用
dd
取决于.iso
文件的创建方式。这是正确的,但是如果我
dd if=/dev/sdb1 of=test.iso
在创建.iso
? 或者可能运行了一些类似dd if=/dev/sdb of=test.iso bs=1M seek=1
导致它跳过第一个1M
数据的东西?dd
不关心底层分区方案,这意味着你如何使用它完全取决于块设备的结构和你正在写入的数据。如果您
dd
使用该设备,您将失去您的 USB 可用空间,因为 dd'ing 将覆盖 MBR/GPT。对您的设备进行分区可能允许将您的图像写入分区,从而让您保留可用空间。但是您需要调整您的引导管理器(grub?)才能从该分区启动。如果您对驱动器进行分区,您将拥有 sdx1、sdx2、... 允许您
dd if=your.iso of=/dev/sdx1
或您想要的分区。这里的问题是您想使用 Windows 安装盘来执行此操作,这可能是个问题。如果 Windows 需要 DVD 单元进行安装,它可能无法启动,或者您可能需要重新调整该映像以避免该检查。在 Linux 上事情更容易,因为许多发行版允许启动 iso 本身,其他可能需要一些 hack 才能拥有一个带有许多发行版的 USB,您可以从这些发行版开始。