![硬盘是否需要 GUID 分区表(GPT)才能在 UEFI 模式下启动?](https://linux22.com/image/1354620/%E7%A1%AC%E7%9B%98%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%20GUID%20%E5%88%86%E5%8C%BA%E8%A1%A8%EF%BC%88GPT%EF%BC%89%E6%89%8D%E8%83%BD%E5%9C%A8%20UEFI%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E5%90%AF%E5%8A%A8%EF%BC%9F.png)
EFI 启动是硬件特有的吗?我有一块带有 UEFI Bios 的台式机主板,但我只能在“UEFI”模式下从 USB 驱动器启动。DVD 驱动器和 HDD(RAID 0 阵列)都只能在传统模式下启动。HDD 是否需要有 GPT 分区表才能在 UEFI 模式下启动?
答案1
基于(U)EFI 的系统,按规格, 只可以引导可以从 GPT 样式的磁盘启动。传统 BIOS 可以从 MBR 样式的磁盘启动,一些案例(取决于制造商),它们也可以从 GPT 启动。但是,根据 UEFI 规范,磁盘应该有一个 GPT 分区表。
这篇 MSDN 文章描述得很好:
支持 UEFI 的系统要求启动分区必须位于 GPT 磁盘上。其他硬盘可以是 MBR 或 GPT。
答案2
不是。GUID 分区表 (GPT) 方案中 EFI 系统分区的全局唯一标识符 (GUID) 为 C12A7328-F81F-11D2-BA4B-00A0C93EC93B,而主引导记录 (MBR) 分区表方案中的 ID 为 0xEF。因此,它完全可以按照规范要求的那样工作。
“UEFI 2.x 规范正式要求支持 GPT 和 MBR 分区。第 324 页(9.3.6.1),还有第 72、113–115、539 等”
此外,“UEFI 规范要求完全支持 MBR 分区表。但是,一些 UEFI 实现在检测到启动磁盘上的某些类型的分区表时会立即切换到基于 BIOS 的 CSM 启动,从而有效地阻止了从 MBR 分区磁盘上的 EFI 系统分区执行 UEFI 启动”。 https://en.wikipedia.org/wiki/EFI_system_partition
另请参阅https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=821341
答案3
EFI 是否启动某些特定硬件?
是的。一些实现,特别是较旧的实现或来自 OEM 锁定主板的实现更容易受到限制或存在缺陷。
硬盘是否需要有 GPT 分区表才能在 UEFI 模式下启动?
从技术上来说不是,但就你的情况而言,“可能,另外你还需要一些其他的东西(特别是 EFI 文件和 EFI 变量)“。这是详细答案(也适用于将来偶然发现此问题的人):
人们经常问的一个问题是“我可以从 MBR 磁盘进行 UEFI 启动吗?”答案是“可以,但这非常棘手。”虽然在正确的环境中从技术上讲这是可行的,但许多因素会阻止您这样做,例如严格遵守规范的 UEFI 环境,或坚持安装到正确类型的分区表的 Windows 安装程序。
首先,光学介质根本不是本文讨论的内容。它通常使用 ISO9660 或 UDF 之类的系统,完全不属于 MBR/GPT 领域。
其次,可移动介质的处理方式与固定磁盘略有不同。大多数 UEFI 实现对可移动临时 UEFI 可启动磁盘的容忍度远高于对固定磁盘的容忍度。
话虽如此,以下是典型的UEFI 系统将枚举可启动设备:
如果启用了 UEFI 启动:
查看 EFI 变量以查看是否有任何配置的启动条目。
大多数操作系统都会在 EFI 变量系统中创建指向其启动文件的指针。这些变量存储在 EFI NVRAM 中。
大多数操作系统还会采取额外步骤,创建 EFI 系统分区并将其启动文件存储在那里,而不是主操作系统卷上。这稍微提高了灵活性,但也解决了典型 UEFI 系统的一个明显问题:仅原生支持 FAT32 分区。
查找带有 EFI 文件(如“\EFI\BOOT\BOOTX64.EFI”)的任何可移动驱动器。请记住,大多数 UEFI 系统只能从 FAT32 读取,因此如果您的可移动驱动器是 NTFS 或其他格式,则可能找不到启动文件。
枚举所有光驱,无论它们是否具有 EFI 引导代码。
如果启用了 BIOS 或 CSM 启动:
- 枚举所有固定磁盘,无论它们是否具有有效的 MBR
- 枚举所有可移动磁盘,无论它们是否具有有效的 MBR
- 枚举光驱,无论它们是否有可启动光盘。
上面没有涉及一些其他内容,例如选项 ROM、PXE 启动等。
现在来看看上述过程的一些观察。首先,无论启动模式如何,光驱都倾向于一直显示。这通常是因为 BIOS 和 UEFI 系统都不想等待光盘旋转后再继续启动。它们还倾向于同时在两种模式下显示为可启动,因此如果您有可以双向启动的光盘,则可以从 BIOS 的启动菜单中选择其中一种。
因为通过编程确定驱动器(固定或可移动)是否包含有效的 MBR 引导代码有点困难,所以如果系统有 BIOS 或 CSM 引导可用,它往往只允许从当前存在的任何磁盘进行引导。但是,这可能是您问题的一部分的答案:虽然大多数系统应该将 USB 驱动器视为固定磁盘,也许您的系统以不同的方式对待它。例如,有些 BIOS 会将 USB 设备确切地就像固定磁盘一样,您可能需要调整 BIOS 中的“硬盘启动顺序”或类似控制。或者您的 BIOS 可能被锁定或损坏,并且没有意识到它可以在 BIOS 模式下启动。一些额外的提示:尝试将驱动器插入 USB 2.0 而不是 3.0 端口,并在 BIOS 中启用 USB 兼容性选项。某些 BIOS 无法与第三方 USB 或 ATA 控制器后面的设备一起工作,例如在芯片组中没有集成 USB3 的机器上。
随着 EFI 的出现,系统现在可以轻松确定哪些启动设备可用(通过查看包含启动条目的 EFI 变量),以及确定特定驱动器是否实际包含启动代码(通过查找 BOOTX64.EFI 文件是否存在)。然而,这导致了一些有趣的警告。虽然正式EFI 系统应该只在 GPT 磁盘中查找 EFI 文件,但大多数情况下它也会查找其他地方。例如,您可以将 Windows 7 或更新版本的安装光盘复制到 FAT32 USB 记忆棒,它可能会在 EFI 模式下正常启动。UEFI 足够智能,可以检查所有可移动磁盘中是否存在“\EFI\BOOT\BOOTx64.EFI”文件,即使 NVRAM 中没有相应的 EFI 变量。大多数 UEFI 系统也可以从 MBR 磁盘正常启动,只要 EFI 变量包含有关去哪里和做什么的详细信息。例如,现在我正在使用一台出厂时安装了 Windows 8.1 的戴尔笔记本电脑,以 UEFI 模式启动,并使用安全启动,但磁盘被分区为 MBR。
还可能发生一些有趣的事情:如果您安装了支持 EFI 的操作系统(如 Windows 或 Ubuntu),它会在安装其引导加载程序时创建适当的 EFI 变量。然后,如果您移除或擦除驱动器,系统将具有 EFI 变量,并带有操作系统的名称,但无法引导到这些变量,因为它找不到变量引用的磁盘。此外,如果您将功能齐全的 EFI 可引导磁盘从一台计算机带到另一台计算机,它可能无法像 MBR 那样无缝地启动。如果 NVRAM 中没有相应的变量,许多 UEFI 实现甚至不允许您尝试在 UEFI 模式下从固定磁盘启动。这就是为什么您的 RAID 阵列或其他固定硬盘驱动器可能不会在启动菜单中显示为 UEFI 条目,除非它们具有所有正确的结构(如 EFI 变量)。
但是,考虑到你遇到的具体问题,我认为你的大多数问题都是由于 BIOS 损坏造成的,而不是你的设置问题。值得注意的是,USB 驱动器显示为 UEFI 设备而不是 BIOS 设备是非常奇怪的。您是否关闭了安全启动并启用了任何 CSM 或 BIOS 启动选项?此外,您的光驱显示为 BIOS 选项而不是 UEFI 选项似乎有点奇怪,但并非闻所未闻。
答案4
这是 MSDN 上的内容。
GPT 磁盘需要 UEFI 吗?
“不。GPT 磁盘是自我识别的。解释 GPT 磁盘分区方案所需的所有信息都完全包含在物理介质上指定位置的结构中。”