我正在安装 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 具有三个部分:
/boot/efi
挂载的 EFI 分区
包含存根 grub 引导加载程序和配置/boot/grub
同一分区 /boot 或 /
包含 grub 模块和实际的 grub 配置/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 有两个原因:
- 它包含您的实际配置和 grub 模块。
- 以便自动配置脚本知道在哪里编写新配置。
如果您确实想转向/boot/grub
EFI...(非标准)
实际上没有什么可以阻止你。只需确保脚本/etc/grub.d
知道在哪里可以找到它(例如:留下符号链接)
我以前出于深奥的原因这样做过。我运行一个带有 EFI 分区的系统,其中包含两个目录EFI
和grub
.我这样设置:
# 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 或加密卷上运行。