在 Ubuntu 帮助 wiki 中磁盘空间,建议 EFI 分区的大小在 100~250 MB 左右。但是,我可能有一个 150 MB 的 EFI 分区,而它实际上需要 151 MB 的空间!
那么如何知道我需要分配给 EFI 分区的确切大小?
答案1
你无法知道精确的尺寸除非:
- 你计划永远不更新操作系统
- 执行初步测试安装,然后使用该信息在另一个操作系统安装期间重新创建分区
以我自己的机器为参考,日常主力机上的 EFI 分区大小为 1GB。这些分区位于至少 512GB 大小的存储设备上。目前,没有一个 EFI 分区的使用率超过 1.8%,即 180MB(最低为 97MB)。
由于过去曾因 EFI 分区过小而受到困扰,因此我允许 Ubuntu 安装向导选择其 EFI 分区的大小,从那时起就再也没有出现过任何问题。
补充笔记:
Microsoft 建议其操作系统使用 100 MB,而许多 Linux 论坛建议 Linux 操作系统或任何双重启动或多重启动的情况。
gdisk 的作者建议 550 MiB。
按照Arch Linux 维基,为避免某些 EFI 可能出现的问题,ESP 大小至少应为 512 MiB。建议使用 550 MiB,以避免 MiB/MB 混淆并意外创建 FAT16。
因此,EFI 系统分区最常见的大小准则是 100 MB 到 550 MB 之间。其中一个原因是,由于它是驱动器上的第一个分区,因此以后很难调整大小。EFI 分区可能包含语言、字体、BIOS 固件和其他固件相关内容。有些固件/软件安装在 EFI 分区中,而不是数据驱动器中。
由于将来可能很难扩大 EFI 分区的大小,并且许多存储设备的大小为数百 GB,因此选择不是除非计划安装操作系统、断开设备与互联网的连接并永远运行而不进行更新,否则这是绝对最低限度。
答案2
所需空间取决于所使用的启动方法和安装的其他操作系统。
GRUB 仅安装其第一和第二阶段引导加载程序,该程序相当小,然后使用其自己的文件系统驱动程序通过 EFI 接口加载内核和 initrd 以进行块设备访问。这只需要几兆字节。
systemd 引导加载程序和 Windows 将其内核和包含驱动程序的初始 ramdisk 复制到 ESP 中,这需要一点空间——具体需要多少取决于初始 ramdisk 中包含的驱动程序。
Windows 仅选择最低限度的驱动程序,类似于MODULES=dep
在initramfs配置文件,因此它们只需要几兆字节,但如果硬件变化太大(例如,当您将硬盘从内部 SATA 端口移动到附加卡时),就无法启动。
据我所知,Ubuntu 默认为MODULES=most
,因此它会将几兆字节的驱动程序复制到 initramfs 中。这很可靠,但需要额外的空间。
Ubuntu 通常会保留最后安装的两个内核版本,因此需要有足够的空间容纳两个版本的 initramfs,另外在升级期间还需要一个额外的空间(在删除旧版本之前,将新版本复制到 ESP)。
所以:
如果您只使用 GRUB 并且不打算(永远)切换,那么 10 MB 就足够了。
如果您双启动到 Windows 并使用 GRUB,则 Windows 的默认 100 MB 就足够了。
如果您计划使用 systemd-boot,请为至少三个 initramfs 副本留出足够的空间,目前约为 30-40 MB,并且在未来的版本中可能会增加。200 MB 应该是安全的,典型的安装使用 500 MB,因为对于现代硬盘大小来说,这并不重要。
答案3
如果您只打算在磁盘上安装 Linux,那么只需几兆字节就足够了。我从未见过引导加载程序占用超过 3MB 的空间。因此,在大多数情况下,选择发行版允许的最小大小即可。
但需要考虑以下几点:
- 如果你做将来某个时候想要使用双启动之类的东西可能会很麻烦,因为其他操作系统往往比 Linux 引导加载程序占用更多的空间。例如,Windows 将其恢复工具存储在那里,并且至少需要 300 MiB。
- 如今磁盘空间相当便宜。
- 即使它不是那么便宜 - 例如在 SSD 上 - 您也可以将其视为 SSD 磨损均衡的缓冲空间(此外,不要忘记在文件系统中启用修剪/丢弃功能)。
- 此外,据称一些早期的 UEFI 实现至少需要 512 MiB,但我个人从未遇到过这种情况。
我认为 50-100 MiB 对于大多数 Linux 安装来说应该足够了;它为您提供了一些用于额外引导加载程序的回旋余地,同时又不会在设备上浪费太多空间。