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