为什么 dd 不能为 Microsoft 制作可用的可启动 USB 棒?

为什么 dd 不能为 Microsoft 制作可用的可启动 USB 棒?

请不要让我参考关于这个主题的(大部分是错误的)答案。没有一个是正确的。

在过去的几年里,我制作了上百万个这样的可启动棒:dd if=(this).iso of=/dev/sdb bs=4M bla ..显然,它每次都可以用于 ISO,特别是 Linux 发行版,但如果这是任何 Windows 7 或 10 iso,则生成的 USB 棒无法启动,并且无法被任何 PC BIOS(尤其是戴尔)识别。 iso 非常好,并作为包含所有 Windows 媒体的文件系统安装,但 BIOS 看不到它,因此无法使用。为什么不呢?

推论:Microsoft 提供了各种工具来输入 iso 并进行必要的写入 USB/DVD(在 Windows 下运行)。这些工具失败了。我不在乎,但我想知道,这些工具是否做了一些神奇的事情,而不仅仅是直接进行物理复制dd

答案1

克隆(使用dd或其他克隆工具)适用于大多数当前的 linux iso 文件。它们是混合 iso 文件,准备好以便可以使用同一个文件来创建 DVD 启动盘、USB 启动驱动器和启动存储卡(例如 SD 卡)。

克隆不会从当前 Windows iso 文件创建可启动的 USB 驱动器。如果您愿意,您需要一些特殊工具来实现此目的,或者手动执行这些步骤(在提取过程中)。

此链接主要关注工具woeusb(Linux 中的一个工具)用于从当前 Windows iso 文件创建可启动的 USB 驱动器。我最近测试了它,可以验证它是否有效。

你可以自己动手施展“魔法”详细帮助请访问

help.ubuntu.com/community/Installation/iso2usb/diy/windows-installer-for-big-files

答案2

我相信这个问题已经得到解答,但我想补充一个更详细的描述。首先,计算机读取 CD-ROM 和 DVD 的方式与所有其他磁盘介质不同。CD-ROM 或 DVD 将使用名为 ISO 9660 的文件系统(或名为 UDF 的较新文件系统)进行格式化。另一方面,其他磁盘样式的介质(包括任何 USB)都以主引导记录或 MBR 开始。更大的磁盘现在使用 GPT,但对于本讨论而言,情况类似。计算机中的 BIOS 将从磁盘介质读取 MBR 或 GPT 并在那里查找引导加载程序。对于 MBR,引导加载程序与 MBR 一起保存在磁盘上的第一个 512 字节扇区中。GPT 略有不同,它在磁盘的其他位置分配称为 EFI 分区的东西。GPT 本身位于磁盘的前几千字节中。

要启动 CD-ROM,这是一个完全不同的过程。该标准称为 El Torito Boot,描述了驻留在 ISO 9660 文件系统内的结构。当计算机上的 BIOS 或 UEFI 尝试从 CD-ROM 启动时,它会使用该 CD-ROM,而不会查找 MBR 或 GPT。这意味着启动 ISO 的设置必须与 USB 驱动器完全不同。

许多 Linux 发行版使用一种称为混合 ISO 的技术。ISO 9660 文件系统有一个有趣的功能,它将前 32 千字节声明为系统区域,供其他人使用。它根本不声明什么可以放在那里,并且会忽略那里的所有内容。将光盘读取为 ISO 9660 的软件将始终跳过该部分。这为在其中隐藏 MBR 或 GPT 标签留出了足够的空间,并使用传统的磁盘引导程序。混合 ISO 实际上有两个不同的引导加载程序,一个是 ISO 9660 El Torito Boot 的一部分,另一个用于传统磁盘引导。

因此,总而言之,没有什么可以说 ISO 映像应该可以在 USB 磁盘上启动。如果操作得当,这是 ISO 9660 允许的一项额外功能。例如,MBR 的引导加载程序可以超过 32 KB,否则它将覆盖 ISO 内容。但是制作混合 ISO 是许多 Linux 发行版为了让用户的生活更轻松而做的事情。这不是微软愿意做的事情。

相关内容