UEFI 是否必须有 EFI 分区才能启动?

UEFI 是否必须有 EFI 分区才能启动?

我对 UEFI 术语非常困惑。我读了很多页,这就是我所知道的:(如果我错了,请纠正我)

  • UEFI 可以从 SATA 和 NVMe 磁盘启动
  • UEFI 可以从 MBR 和 GPT 磁盘启动
  • EFI 分区只是标记为 EF00 或类似代码的 FAT32 分区。对此不清楚
  • UEFI 启动不会读取 MBR,而是寻找必须手动(或由操作系统安装)配置的“启动项”

最后一点引出了我的问题,
我不清楚,也是我的主要疑问:UEFI必须有一个 EFI 分区可以启动吗?

同样的背景下:这个 EFI 分区(又名 ESP)与所谓的安全启动有何关系?安全启动到底是什么意思?

简单介绍一下背景:我有一台双启动笔记本电脑,配有 1 TB NVMe 磁盘。它有四个 MBR 分区,我想将其转换为 GPT:

  1. Ubuntu 22 可启动
  2. 空的。这是 Ubuntu 不再使用的交换分区。这个我想用作 ESP,以防万一
  3. Windows 10 NTFS 主可启动分区
  4. Windows NTFS 第二硬盘

这种布局可能看起来很奇怪。原因是时间。很久以前,在 UEFI/SSD 之前的时代,我安装并格式化了一台笔记本电脑。我一直使用 Clonezilla 将磁盘复制到新笔记本电脑。虽然它可以在 Ubuntu 和 Windows 上正常启动,但我想是时候发展到(对我来说仍然很模糊的)UEFI 了,不要在 BIOS 失效时惊慌失措。即使我设法将磁盘转换为 GPT 和 UEFI,我也不确定如何配置双启动(目前 GRUB 可以解决这个问题),但这是另一个问题的主题

答案1

UEFI 可以从 SATA 和 NVMe 磁盘启动

与任何其他固件类型一样,UEFI 可以从具有驱动程序的设备启动。较新的 UEFI 系统通常会有 NVMe 驱动程序;较旧的系统可能只有 SATA 驱动程序。

UEFI 可以从 MBR 和 GPT 磁盘启动

是的,尽管正在启动的操作系统可能有其自身的限制。通常来说,Windows 不喜欢从 MBR 磁盘进行 UEFI 启动。

(请注意,从 MBR 磁盘启动实际上并不使用 MBR 启动代码;只使用 MBR 分区表。)

EFI 分区只是标记为 EF00 或类似代码的 FAT32 分区。对此不清楚

MBR 和 GPT 的每个分区都有一个“分区类型/用途”字段。在 MBR 中,EFI 分区的类型为 0xEF(而 Windows 数据分区的类型为 0x07)。

在 GPT 中,EFI 分区的类型为 C12A7328-F81F-11D2-BA4B-00A0C93EC93B,gdisk为了方便起见,分区工具将其缩写为 EF00。

FAT32 是所有 UEFI 实现必须支持的强制基线。

UEFI 启动不会读取 MBR,而是寻找必须手动(或由操作系统安装)配置的“启动项”

是的,它不会读取 MBR 引导代码。它会查找存储在主板 NVRAM(“CMOS 内存”)中的“引导条目”。

引导条目指向特定的文件在特定分区内,例如\EFI\Ubuntu\grub.efi

对于可移动磁盘(通常也对于内部磁盘,如果没有启动项),UEFI 还会在它找到的每个 EFI 兼容分区内的固定路径上查找可启动的 .EFI 文件。

我不知道并且我的主要疑问是:UEFI 是否必须有一个 EFI 分区才能启动?

从技术上来说,不是。启动文件必须是某处在磁盘上,但它不一定需要是投入的分割。

对于可移动磁盘(USB 记忆棒),根本不需要专用分区;通常 .efi 引导加载程序文件就在 USB 记忆棒的主分区上。

对于固定磁盘,这通常是必要的,因为 EFI 分区的标准类型是 FAT32,而您不希望将其用作主 OS 分区。但是,由于 UEFI 实现可能支持其他文件系统,我实际上已经看到将 EFI 文件转储到主 Windows NTFS 分区上的系统 - 用户的固件支持 NTFS 并且只使用启动项告诉它使用的任何分区。

(启动时实际上并不检查“分区类型”ID;而是启动项指定分区的唯一 ID。)

话虽如此,你确实应该将其作为一个单独的分区,特别是如果您的操作系统要使用 Ext4 之类的东西,您将无法使用“单分区”技巧,因为您的固件不支持 Ext4。

同样的背景下:这个 EFI 分区(又名 ESP)与所谓的安全启动有何关系?安全启动到底是什么意思?

安全启动意味着对启动的所有内容进行数字签名检查。主要是指 EFI 分区中的 .efi 文件嵌入了数字签名(与 .exe 文件的格式相同),并且固件将强制执行该签名。

即使我设法将磁盘转换为 GPT 和 UEFI,我也不确定如何配置双启动(目前 GRUB 可以解决这个问题),但这是另一个问题的主题

如果您不使用安全启动,您可以继续使用 GRUB 来实现安全启动(并且它通常会像以前一样自动配置以识别 Windows)。从另一个 .efi 应用程序启动一个 .efi 应用程序是一回事。

更简洁的方法是设置两个 UEFI 启动项,每个项都直接进入相应的 OS 引导加载程序(例如,选择“Ubuntu”并获取 GRUB)。这些项将显示在按 F8 或类似键获得的同一启动菜单中。

相关内容