UEFI分区是否必须或应该首先出现?如果是的话,为什么呢?


1对于我的最新安装(Arch Linux + GRUB + GPT + UEFI),这是最后的。 - muru
2个回答

在本答案中,关键词“SHOULD”、“MUST”和“MAY”(大写)的解释请参考RFC 2119

一个(U)EFI系统分区(以下简称ESP):

唯一的官方限制是:

  • ESP必须位于磁盘的前2.2TB内。
所以,ESP必须位于前2.2TB的磁盘中的任何位置,但绝对没有必要将ESP作为第一个分区或者完全位于磁盘的开头。
(只是因为华盛顿州雷德蒙德的某个大公司建议系统集成商采用不同的方法)...

如果磁盘容量小于2.2TB,我会将其放在磁盘的最后一个分区,因为它只用于加载其他操作系统,但这只是个人的、完全主观的意见!


你是指最后一句中的“如果小于2.2 TB”吗?否则,我觉得你的建议没有意义... - KutuluMike
@Fabby,在实际中,非FAT32的UEFI可以正常工作吗? - Pacerier
5你在帖子中提到的“official limit”链接的文档涉及BIOSMBR的限制。ESP是一个EFI构造,所以BIOS的限制不适用于它。我已经将ESP放置在2TiB以上的位置,并成功地从这些ESP引导了计算机。话虽如此,在MBR磁盘上的ESP必然位于2^32扇区(通常为2TiB)以下,或者至少从那里开始。然而,在基于EFI的系统上,MBR很少用于系统磁盘,因此这个限制几乎不值得一提。 - Rod Smith
这里有一个很好的理由不要将EFI分区放在第一位。我有一个双头的SanDisk Extreme USB闪存驱动器。一端是标准的USB连接器,另一端是用于手机的USB-C连接器。该驱动器上有多个分区,用于各种Linux安装和一个数据分区。通过将数据分区放在第一位,Windows和Android都可以挂载和读写。而Android和任何先前版本的Windows系统只能挂载可移动驱动器的第一个分区。 - Brian H.

EFI规范明确指出在这个细节上没有限制:

UEFI对系统中存在的系统分区数量或位置不加限制。

(版本2.5,第540页。)

从实际角度考虑,将ESP放在首位是明智的,因为这个位置不太可能受到分区移动和调整操作的影响。例如,假设ESP存在于操作系统A和操作系统B之间,并且您决定删除操作系统B并将其空间分配给操作系统A。在这种情况下,您需要先移动ESP才能扩展操作系统A的分区。此外,一些工具(如efibootmgr)将/dev/sda1作为ESP的默认位置。因此,如果您将ESP放在其他位置,然后忘记覆盖默认设置,可能会创建一个无法启动的条目。

将ESP放在磁盘末尾在大多数情况下几乎可以达到同样的效果,但这种方法存在一些微妙的问题。首先,如果更改分区数量,则ESP的编号可能不再与其在磁盘上的位置匹配,或者某些分区工具可能会重新编号它。任何一种结果都可能导致混淆或需要重新配置。此外,如果您使用RAID并添加磁盘空间,则位于磁盘末尾的ESP将突然变成中间的ESP,这可能需要您将其移动。
许多预安装的Windows系统将ESP放在第二个位置,而第一个位置被一个小型制造商特定的分区占用。这样的配置很好用,由于制造商的分区也不太可能被移动或删除,因此这种配置实际上并不比将ESP放在第一个位置更差。我不会刻意去“修复”这样的配置,但如果我拿到一个空白磁盘并被告知要开始安装操作系统,我也不会这样做。
总的来说,如果您有一些强制性的原因要创建ESP而不是放在第一个位置,那么请随意这样做;但是,如果您从一个空白磁盘开始,并且没有其他强制性原因,我会将ESP放在第一位。