安装 Debian 9.9 时 EFI 的正确位置

安装 Debian 9.9 时 EFI 的正确位置

我正在安装 Debian 9.9,我希望我的 1 TB 硬盘和 8 GB RAM 具有这种布局。

Size              Name / Mounted at
512 MB            EFI System Partition
40 GB             /
8GB               /swap
Remaining space   /home

在互联网上,人们使用挂载在 /boot 或 /boot/efi 的 EFI 分区。

由于 Debian 9 不允许 /boot 是 FAT32,所以我们不能使用 /boot。我是否正确地认为,出于同样的原因,即使 /boot/efi 也不是一个选项?

有什么理由让 /grub 文件夹中包含 GRUB2 吗?它不会自行将 GRUB2 安装在 EFI 系统分区中吗?

替代分区方案(即 /boot 中的 EFI、/boot/efi 或安装在 /grub 中的 GRUB2)有哪些好处?

答案1

EFI 分区的标准位置(至少对于 Debian 而言)是/boot/efi.这可以是并且应该FAT32 分区。

在标准 Debian Grub EFI 布局中,grub 具有三个部分:

  1. /boot/efi
    挂载的 EFI 分区
    包含存根 grub 引导加载程序和配置
  2. /boot/grub
    同一分区 /boot 或 /
    包含 grub 模块和实际的 grub 配置
  3. /etc/grub.d
    与/
    包含自动配置脚本相同的分区

Grub 并不完全安装在 EFI 上,其中很大一部分位于其他地方。因此,为了能够启动,您仍然需要/boot/grub.它仅安装存根和存根配置以将其自身指向其余部分。典型的 EFI 存根配置如下 ( /boot/efi/EFI/debian/grub.cfg):

search.fs_uuid 2c675303-d207-4573-98f5-59a33c9890ab root hd0,gpt3
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

请注意此配置仅告诉 grub 在哪里可以找到真正的配置(/boot/grub/grub.cfg位于硬盘 0 分区 3 上)。

另请注意,即使配置主要存储在 /boot/grub 中,您也永远不会手动编辑它,而是要求 grub 脚本为您编辑它。因此,要重新配置 grub(即使只是添加新内核),您还需要/etc/grub.d.请注意,此目录中的脚本可能依赖于 Debian 安装的其他库。


因此,您必须保留 /boot/grub 有两个原因:

  1. 它包含您的实际配置和 grub 模块。
  2. 以便自动配置脚本知道在哪里编写新配置。

如果您确实想转向/boot/grubEFI...(非标准)

实际上没有什么可以阻止你。只需确保脚本/etc/grub.d知道在哪里可以找到它(例如:留下符号链接)

我以前出于深奥的原因这样做过。我运行一个带有 EFI 分区的系统,其中包含两个目录EFIgrub.我这样设置:

# Move /boot/grub onto my EFI partition
mv /boot/grub /boot/efi

# Leave a symbolic link from the old location to the new location
ln -s /boot/efi/grub /boot/grub

# Update the stub config /boot/efi/EFI/debian/grub.cfg to point to the new location
grub-install

# For safety update the contents of /boot/efi/grub aka /boot/grub
update-grub

我实际上喜欢这个设置,因为它可以防止我在这里多次看到的错误,即人们删除操作系统并破坏 grub 并阻止任何其他操作系统启动。


分区的原因

分区有多种目的。关于引导加载程序的分区部分,这对于处理系统各个部分的不同功能很有用。

  • 您的 BIOS 只能读取基于 FAT 的文件系统
  • Grub 对文件系统有很好的支持,但 LVM 和加密卷可能是个问题
  • Linux 可以读取所有内容
  • 老的Grub 旧版无法读取非常大的磁盘或分区

您的 BIOS 需要能够加载并运行 grub,因此 EFI 需要位于基于 FAT 的文件系统上。

您的主分区可能位于 grub 无法读取的分区上,但 grub 需要访问您的内核、Initramfs 及其自己的配置,因此 /boot 和 /boot/grub 需要位于 grub 可读的分区上。在过去的 grub 遗留时代,您还需要确保该分区足够小,并且位于非常小的磁盘上驱动器的开头附近。

Linux 可以读取所有内容,但您可能希望 Linux 在 LVM 或加密卷上运行。

相关内容