在 Ubuntu 和其他几个发行版中,EFI 分区安装在/boot/efi.
据我了解,在操作系统 rootfs ( /)之前读取 EFI 分区。那么在内核加载和挂载之后/,我们还需要 EFI 分区做什么?理论上,在初始安装后,您不再需要访问/boot/efi,因为它只包含 .efi 二进制文件...
那么为什么要安装呢?从设计的角度来看,似乎自动挂载带有您不经常访问的敏感文件的分区并不是一件非常明智的事情......
编辑:
一些最近的系统可能grub.cfg在其 efi 分区中包含 。请参阅此错误报告,尽管我的 16.04LTS 并非如此。因此,对于 ESP 上带有配置文件的系统,挂载它更有意义。然而,人们需要多久运行一次update-grub,并且脚本不能在更新后挂载它并再次卸载它?
在各种情况下可能需要访问 ESP 的原因有多种:
/boot/efi/EFI/ubuntu/grubx64.efi -- 这是 EFI GRUB 2 二进制文件,如果 GRUB 包更新,则必须替换它。/boot/efi/EFI/ubuntu/grub.cfg-- 这是一个 GRUB 配置文件,功能很少;主要是它加载/boot/grub/grub.cfg。完成此重定向是为了为安全启动系统启用“挂钩”;没有安全启动,grubx64.efi二进制文件可以在本地构建并直接指向/boot/grub/grub.cfg;但是由于/boot/grub/grub.cfg从一个系统到另一个系统的位置不同(如 ESP 所见),将grub.cfg文件放在 ESP 上是安全启动所必需的,这不允许grubx64.efi在本地构建。恕我直言,将主要的grub.cfg和其他 GRUB 支持文件放在 ESP 上会更有意义,但负责这个的开发人员选择了一种更保守的方法,相对于基于 BIOS 的系统所做的。在任何情况下,grub.cfgESP 上的内容很少会更新;但这在某些时候可能是必要的,特别是如果 GRUB Debian 软件包已更新。/boot/efi/EFI/ubuntu/shimx64.efi-- 这是 Shim 二进制文件,它是安全启动运行所必需的。与 GRUB 2 二进制文件一样,它可能会通过 Debian 软件包更新进行更新,但不是软件包的更新shim-signed。/boot/efi/EFI/ubuntu/MokManager.efi-- 这是 MokManager 二进制文件,它是一个 Shim 支持工具。与 Shim 一样,它可能会在包更新中进行更新。/boot/efi/EFI/ubuntu/fwupx64.efi-- 这是一个帮助在基于 EFI 的计算机上自动更新固件的工具。与前面的 EFI 二进制文件一样,它可能会通过 Debian 软件包更新进行更新。fwupdate二进制文件和匹配的fwupx64.efiEFI 二进制文件至少部分自动化的过程。(不过,我并不是 100% 肯定后者需要将文件写入 ESP。这是相当新的,目前只有很少的文档。)总之,操作系统本身或您可能想要或需要读取或写入 ESP 的原因有很多。也就是说,这些原因在数量上很少,因此暂时安装 ESP 然后在完成后卸载它的机制可能是有益的。当然,Debian 软件包安装脚本可以完成这项工作,例如,修改 ESP 上的配置文件的自动化工具也可以。不过,AFAIK 更改 ESP 的安装状态还没有出现。
请注意,默认情况下 ESP 以相当严格的权限挂载。最近(从 15.10 或 16.04 开始,也许 - 我不确定确切的时间),挂载权限已更改,因此只能root从/boot/efi. 即使在此之前,也只能root写入 ESP,尽管读取权限较宽松。由于root可以挂载分区,此时不挂载 ESP 的安全优势很小,尽管这样做的好处是可以降低 ESP 因错误、电源故障等而损坏文件系统的风险。