我想安装 Arch Linux,但不知道是否应该安装 ESP,/boot
或者/boot/efi
如果我安装 ESP,/boot/efi
我是否必须-p
在使用创建目录时使用该选项mkdir -p /mnt/boot/efi
。
答案1
我想安装 Arch Linux,但不知道是否应该将 ESP 挂载在 /boot 或 /boot/efi 上
对于单操作系统机器来说,/boot
这是最简单的,因为:
- 官方内核包(
linux
等)直接在 下安装内核/boot
。 - 一些较小的 UEFI 引导程序(例如
systemd-boot
)可以引导内核仅有的来自 EFI 系统分区。(GRUB 可以从任何地方启动。)
因此,如果你的引导程序需要内核位于 ESP 中,那么你必须将 ESP 挂载在/boot
,或者设置一个脚本来自动复制内核从/boot
ESP 所在的位置开始。
我必须使用 -p 选项吗
看看 -p 选项的作用,然后想想你是否需要它。
它不会使目录变得特殊——其目的mkdir -p
是自动预先创建所有父目录。如果您正在创建,/boot/efi
则它会自动创建/boot
以防缺少父目录。
答案2
为仅限 Arch安装方面,grawity 是一个很好的例子。但是,如果您正在安装大多数非 Arch 发行版,或者如果您在 Arch 和其他任何发行版之间进行多重引导,则安装 ESP/boot
会有一些缺点,例如:
- 将内核放在 ESP 上(如果您将其安装在 上)
/boot
,则它们可供您正在启动的其他操作系统使用。这可能会造成混淆,特别是如果您将 ESP 安装在/boot
多个 Linux 发行版上时——可能不清楚哪个发行版拥有哪个内核。(引导加载程序规范应该可以解决这个问题,但很少有发行版采用它,而且只有在广泛使用的情况下才会有效。)如果您使用 Windows、macOS 或其他任何操作系统进行多重启动,将 Linux 内核放在 ESP 上会导致它们被其他操作系统篡改或意外删除。(可以肯定的是,您无法保护 Linux 免受其他操作系统的破坏——其他操作系统可能会删除 Linux 分区或使用文件系统驱动程序造成破坏。ESP 使用 FAT 并且意味着无法跨操作系统共享,这使得其内容更容易受到意外或恶意破坏。 - ESP 必须比原本需要的更大才能容纳 Linux 内核。如果您是从头开始,这不一定是个大问题,因为您可以适当调整其大小;但如果您从现有的 Windows 安装开始,现有的 ESP 可能太小。在这种情况下,您需要调整其大小(很麻烦)或使用另一个 ESP(作为当前 ESP 的补充或替代)。
- 一些 Linux 发行版要求存放 Linux 内核的文件系统支持符号链接或其他 FAT 不支持的功能。不过 Arch 将其内核放在 FAT 上没有问题,所以这不只是 Arch 的问题。
/boot/efi
是 ESP 更常见的挂载点,而不是/boot
。尽管 Arch 的文档和主要支持脚本可能与 ESP 配合良好/boot
,但您可能会遇到更晦涩的支持脚本,尤其是当您运行 Arch 生态系统之外的某些东西时,它会错误地假设 ESP 安装在/boot/efi
。这可能会导致麻烦。我不知道这方面的任何具体例子,但这就是问题的一部分——您不知道随机脚本 A 会做什么。
FWIW,我最近修改了我的Linux 的 EFI 引导加载程序页面。该页面上的引导加载程序和引导管理器中,有些如今几乎已不重要——ELILO、GRUB Legacy 和 rEFIt 都已停止开发,并在重要方面被遗忘。SYSLINUX 也有一段时间没有更新了,而且似乎没有比 ELILO 更灵活。剩下的是 GRUB 2、rEFInd 和systemd-boot
(以前称为 gummiboot),后两者依赖于 EFI 存根加载器,它是 Linux 内核自 3.3.0 以来的一部分。其中,仅systemd-boot
要求将内核存储在 ESP 上,这是一个主要限制。我理解像 这样的轻量级引导管理器的吸引力,并且在 Arch-only 系统上,如果您采用极简主义方法,则在和 使用 上systemd-boot
安装 ESP可能有意义。但是,如果您进行多重引导,恕我直言,使用 GRUB 2 或 rEFInd 更有意义。 (免责声明:我从 rEFIt 分叉出了 rEFInd,所以我并不公正。)/boot
systemd-boot