【UEFI】启动项

启动项(Boot Options)可以认为是Boot Loaders,每个平台默认的启动文件如下所示:在ESP目录下一般有

路径 说明
EFI/BOOT/bootx64.efi x86_64 平台默认启动文件
EFI/BOOT/bootia32.efi IA32(32位 x86)平台默认启动文件
EFI/BOOT/bootaa64.efi ARM64(AArch64)平台默认启动文件
EFI/BOOT/bootriscv64.efi RISC-V 平台的默认启动文件

这是当没有 BootOrder 配置或找不到指定项时,UEFI 固件会尝试查找的默认文件路径。

注:ESP(EFI System Partition,EFI系统分区)是一种特殊的分区,用于存储启动时必要的系统文件和引导加载器,以支持系统的启动和运行。

顺位如下:

复制代码
[UEFI 固件]
   │
   ├─ 初始化硬件、运行 SEC/PEI/DXE/BDS
   │
   └─> 加载启动项     
         ├─ BOOTX64.efi
         ├─ Windows: bootmgfw.efi → winload.efi → ntoskrnl.exe
         └─ Linux: GRUB → vmlinuz + initrd → Linux内核

在 UEFI 启动流程中,BOOTX64.EFI 是操作系统加载的"第一步入口"。

BOOTX64.efi由操作系统厂商制作

它的主要作用是:

  • 从 UEFI 固件中被加载并执行;
  • 初始化必要的环境(内存映像、设备映射、配置参数);
  • 然后加载真正的操作系统内核 (如 Windows 的 ntoskrnl.exe,Linux 的 vmlinuz 等)。

比如说,在Ubuntu官网下载一个Ubuntu2204的iso文件:

右键装载之后可以看到里面的文件目录:

进入这个EFI目录下

再进入boot文件夹中,就可以看到存在的bootx64.efi文件了

项目 说明
是否为 OS 一部分? 是,BOOTX64.EFI 是 OS 厂商(如微软、Linux 发行版)提供的程序。
由谁加载? 由 UEFI 固件(BIOS)通过 BootOrder 或硬编码路径加载。
是否加载内核? 不直接加载内核,但通常会加载下一个 loader(如 winload.efi 或 GRUB)。
是否为内核? ❌ 不是内核,是"内核的启动引导者"。

这个文件通常是操作系统提供的

  • Windows:Windows Boot Manager (bootmgfw.efi) 会重命名/复制为 bootx64.efi
  • Linux:GRUB、systemd-boot 等引导器也可以放成 bootx64.efi
  • 操作系统厂商提供的 UEFI 可执行文件

不同操作系统的boot loader

实际上,Ubuntu/CentOS 默认不使用 bootx64.efi ,而是默认使用自己路径下的 shimx64.efigrubx64.efibootx64.efi 常用于安装镜像、U盘或 BIOS fallback。

启动项名称 文件路径示例 说明
Windows Boot Manager \EFI\Microsoft\Boot\bootmgfw.efi Windows 的标准启动项
Ubuntu \EFI\ubuntu\grubx64.efi Ubuntu GRUB 启动器
CentOS \EFI\centos\shimx64.efigrubx64.efi 含 shim 安全引导的 GRUB
Fedora \EFI\fedora\shimx64.efi Fedora 启动项
Arch Linux \EFI\Boot\bootx64.efi 或自定义 Arch 用户自定义常见

以上都是硬编码路径,实际上使用的更多的是利用UEFI来管理启动项。也就是通过NVRAM 注册的启动项。

  1. 开机时按 BIOS 热键 (常见的是 DELF2F10ESC

  2. 进入 BIOS/UEFI Setup 界面后,找到:

    • Boot 标签页
    • Boot Options / Boot Priority / Boot Manager
  3. 你可以看到类似这样的启动项列表:

    复制代码
     Boot Option #1: Windows Boot Manager 
     Boot Option #2: Ubuntu 
     Boot Option #3: UEFI: USB Disk, Partition 1`
  4. 有的 BIOS 支持 "Add New Boot Option",你可以手动指定:

    • 名字(如 "My Linux")
    • 路径(例如:\EFI\centos\shimx64.efi

也就是bootx164.efi可以作为系统启动的兜底选项,平时各个操作系统都有自己的引导程序。

Tips:

Linux下使用命令:efibootmgr -v,可以查看自己的启动项