什么是混合图像?

什么是混合图像?

我一直设法仅使用 来创建可启动的 Linux USB 设备dd。但是当涉及到 时Windows,计算机无法从 USB 启动。- 我不知道为什么它不能那样工作,但最重要的是:为什么需要将 写入MBR设备才能使 Windows 正确启动?

答案1

您的前提是错误的。并非所有 Linux 发行版都可以通过dd闪存驱动器上的映像启动。例如,在旧版 Ubuntu 中,您必须使用工具来创建 Ubuntu 安装/实时 USB 驱动器。在 Ubuntu 5.x 或 6.x 中,您甚至必须使用单独的 CD 进行实时会话和安装。

目前大多数 Linux 发行版都使用混合 ISO这样你就可以把整个 ISO 写入磁盘,它就可以工作了。然而,这并不意味着所有的 Linux 发行版都支持这一点。Knoppix 刚刚在最新版本(8.1)

什么是混合图像?

每当有新版本发布时,我们都会从 Ubuntu 镜像中下载 ISO 映像。同时,这些映像可以直接刻录到 CD-ROM 光盘上,用于创建启动安装 USB,需要使用特定的 USB 创建工具,如“启动盘创建器”(Ubuntu 默认包含)、“UNetbootin”等 W使用混合图像,您可以使用“dd”命令简单地将图像的数据(包括文件系统)写入 USB 驱动器。请注意,安装后仅复制其内容是行不通的,因为它不会复制 MBR 和分区表以及映像末尾的其他扇区。

普通 ISO 的开头全为零。混合 ISO 的开头将包含 MBR,这样 BIOS 就会认为这是有效的引导扇区并加载它

使用 CD/DVD 和 USB 记忆棒进行 BIOS 和 EFI 的混合设置

EL Torito 启动目录可以在同一个 ISO 文件系统中为 PC-BIOS 和 EFI 提供替代启动映像。

但只有当 El Torito 位于光盘介质上时,固件才会对其进行解释:CD、DVD、BD。要从 USB 记忆棒或其他硬盘类设备启动 PC-BIOS 和 EFI,需要 MBR,如果需要,还需要 GPT。

http://wiki.osdev.org/El-Torito#Hybrid_Setup_for_BIOS_and_EFI_from_CD.2FDVD_and_USB_stick

Linux 引导加载程序支持在 BIOS 和 UEFI 系统中从 MBR 和 GPT 启动,因此不会有问题。但是,USB 闪存驱动器在 Windows 中将不再可写入,因为它被识别为 CD 或 DVD 驱动器。您需要清理驱动器并使用 MBR 或 GPT 方案重新创建,例如。如果您希望将驱动器用于常规数据存储以及启动,或者如果您希望带持久数据的实时启动

另一方面Windows 不使用混合 ISO通常,USB 安装程序制造商只会复制 boot.wim、install.wim 和其他必要文件,然后将 Windows 引导加载程序刷新到驱动器。由于 Windows 引导加载程序在 UEFI 系统上需要 GPT,在 BIOS 系统上需要 MBR,因此如果您在 UEFI 上启动 MBR 闪存驱动器,它将无法工作。

了解更多信息:

答案2

仅当启动固件为 BIOS 或处于 BIOS 兼容模式时才需要 MBR。如果固件处于完整 UEFI 模式且不支持兼容性,则视窗将期望启动磁盘分区为 GPT。

磁盘分区的 Windows 启动支持可在以下位置找到:Windows 支持大于 2 TB 的硬盘

System        BIOS + MBR   UEFI + GPT                  BIOS + GPT                   UEFI + MBR
Windows 7     Supported    Supported; (64-bit only)   Boot volume not supported     Boot volume not supported
Windows Vist  Supported    Supported; (64-bit only)   Boot volume not supported     Boot volume not supported
Windows XP    Supported    Not supported              Boot volume not supported     Boot volume not supported

答案3

您的前提是错误的。
如果 PC 有 BIOS,则始终需要 MBR。
如果您设法使用 制作可启动磁盘或闪存驱动器dd,则您要么使用该设备的现有 MBR,要么该dd命令将新副本写入第一个扇区。

安装在第一个扇区的 MBR 是每个通过 PC 架构和 BIOS 模拟硬盘驱动器的设备所必需的。此要求与任何操作系统无关。

我总是设法仅使用 dd 来创建可启动的 Linux USB 设备。

如果你曾经dd复制过混合体ISO 映像复制到 USB 闪存驱动器,那么该映像中肯定有 MBR。
而如果您尝试使用普通 ISO 映像,则该 USB 闪存驱动器将无法启动。请参阅USB启动机制和光盘启动机制有什么区别?

但是当涉及到 Windows 时,计算机无法从 USB 启动。

USB 是总线,不是设备。
您需要一个设备来启动。
您肯定会遇到从 USB HDD 或 SDD 启动与从 USB 闪存驱动器启动的区别。

为什么需要将 MBR 写入设备才能使 Windows 正确启动?

可能是因为默认情况下,Windows 不会将 USB 闪存驱动器视为(或格式化)硬盘驱动器。对于 USB 闪存驱动器,Windows 会写入没有分区表的设备引导扇区,就像软盘驱动器一样。
另一方面,Linux 将 USB 闪存驱动器视为 HDD,并始终写入带有分区表的 MBR。

当你声称你“将 MBR 写入设备”,毫无疑问你使用的是Linux系统而不是Windows系统。

附录

为了证明 Windows 没有为 USB 闪存驱动器安装分区表,下面是 USB 闪存驱动器第一个扇区的十六进制转储,该驱动器首先用“清理” dd if=/dev/zero of=/dev/sdb count=1,然后在 Win7 系统上使用默认参数进行格式化。

USB 闪存驱动器引导扇区的十六进制转储 请注意,分区表所在的位置有一个文本字符串。

相关内容