我对 UEFI 术语非常困惑。我读了很多页,这就是我所知道的:(如果我错了,请纠正我)
- UEFI 可以从 SATA 和 NVMe 磁盘启动
- UEFI 可以从 MBR 和 GPT 磁盘启动
- EFI 分区只是标记为 EF00 或类似代码的 FAT32 分区。对此不清楚
- UEFI 启动不会读取 MBR,而是寻找必须手动(或由操作系统安装)配置的“启动项”
最后一点引出了我的问题,
我不清楚,也是我的主要疑问:UEFI必须有一个 EFI 分区可以启动吗?
同样的背景下:这个 EFI 分区(又名 ESP)与所谓的安全启动有何关系?安全启动到底是什么意思?
简单介绍一下背景:我有一台双启动笔记本电脑,配有 1 TB NVMe 磁盘。它有四个 MBR 分区,我想将其转换为 GPT:
- Ubuntu 22 可启动
- 空的。这是 Ubuntu 不再使用的交换分区。这个我想用作 ESP,以防万一
- Windows 10 NTFS 主可启动分区
- 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 或类似键获得的同一启动菜单中。