我过去曾将许多 ISO 映像写入 USB。但是,由于某种原因,我无法在实验室中运行 CentOS 的多台计算机上完成此任务。
场景相当简单。我有一个 ISO。 ISO 本身是由 Linux 中的一个程序生成的(后部 - Relax and Recover)。它是可启动恢复 ISO。
当我使用 dd 将其写入 USB 时,没有创建任何(!)分区。
例如,我将这个 U 盘放入 Windows 机器中并对其进行格式化。我把它放入我的 Linux 机器中并fdisk /dev/sde
显示分区。
blkid
显示标签和格式类型。
执行检查分区后dd if=image.iso of=/dev/sde bs=1M
显示没有分区。磁盘标签已更改。
如果我使用 Windows 实用程序,例如 rufus,那么果然如此。分区在那里并且驱动器启动。
我有点困惑,因为我以前从未遇到过这种情况。值得注意的是,该映像旨在引导 UEFI 系统。但我不确定这在这种情况下是否重要。
答案1
默认情况下,ISO 映像只能刻录到光学介质。如果在写入 USB 记忆棒时需要可启动,则需要额外的准备步骤来实现这一点。
现代Linux安装ISO 映像几乎总是以这种方式准备,而其他 ISO 通常不是这样。诸如此类的工具ReaR
可能会也可能不会执行额外的准备步骤。
对于 UEFI 可移动介质,可启动性的要求可能非常简单:如果文件\EFI\BOOT\BOOTx64.efi
存在于 FAT32(或 ISO9660)文件系统中,则该文件系统将在 x86_64 硬件上可 UEFI 启动。
从技术上讲,USB 介质上的 UEFI 可启动性可能还需要引导加载程序文件位于具有正确分区类型的 EFI 系统分区中(MBR 分区为 0xef,GPT 分区为特定类型 GUID)。但某些 UEFI 固件更加宽松,可以从\EFI\BOOT\BOOTx64.efi
固件能够读取的任何文件系统中包含的任何可移动介质启动。 UEFI 固件将始终支持 FAT32,通常支持 ISO9660,但也可以选择支持其他文件系统类型,例如 UDF 或 NTFS(PC)或 HFS+(Apple 计算机)。
Rufus 可能只是在 USB 上创建了一个有效的分区表,并将 ISO 的内容写入该分区,并依赖操作系统和 UEFI 固件能够识别和读取 ISO9660 文件系统。或者它可能足够聪明,能够检测到\EFI\BOOT\BOOTx64.efi
ISO9660 文件系统上的文件,自动创建一个单独的 ESP 分区,并将\EFI
主 ISO9660 文件系统的目录树复制到 ESP 分区中。