You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GRUB多EFI可执行文件的启动行为是否符合UEFI规范?

为什么Ubuntu的EFI厂商目录下会存在多个.efi文件?

你注意到的这个现象其实是Ubuntu为了适配Secure Boot、提供完整启动及辅助功能的合理设计,并没有违反UEFI 2.7规范的核心要求——咱们先拆解每个文件的作用,再结合规范来解释:

首先明确UEFI规范的核心约束:

UEFI规范2.7版本的「13.3.1.3 目录结构」章节明确规定:每个厂商子目录中,针对每种支持的处理器架构必须且只能存在一个可执行EFI镜像,以确保EFI启动管理器从厂商子目录中仅能加载一个镜像。

这里的关键是**“可执行EFI镜像”指的是供EFI启动管理器直接调用的启动入口镜像**,而非目录下所有的efi文件。Ubuntu目录下的这些文件各司其职,只有一个是真正的启动入口:

  • SHIMX64.EFI:这是Ubuntu向UEFI启动管理器注册的唯一启动入口,是微软签名的shim加载器,作用是绕过Secure Boot的签名限制,加载后续的GRUB程序。它完全符合规范中“每个架构一个可执行启动镜像”的要求。
  • GRUBX64.EFI:由shim加载的实际GRUB引导程序,负责解析启动菜单、加载Ubuntu内核和初始化系统,它是shim的依赖程序,不是EFI启动管理器直接加载的目标。
  • MOKMANAG.EFI:Secure Boot环境下的Machine Owner Key(MOK)管理工具,用来添加、删除或验证自定义的签名密钥,属于启动辅助工具,并非启动入口。
  • mmx64.efi:GRUB内置的内存测试工具,用于在系统启动前检测内存完整性,同样是辅助功能程序。
  • fwupx64.efi:固件更新工具fwupd的EFI组件,用于在EFI环境下更新硬件固件,属于系统维护类的辅助程序。

简单来说,Ubuntu的做法是把唯一的启动入口SHIMX64.EFI作为规范要求的“可执行EFI镜像”,其他文件都是这个主流程的辅助工具或依赖组件,不会被EFI启动管理器当作独立启动项加载,完全符合UEFI规范的约束。

内容的提问来源于stack exchange,提问作者Intron BBS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:27:02