启动项(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`
  1. 有的 BIOS 支持 “Add New Boot Option”,你可以手动指定:

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

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

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

【UEFI】启动项的更多相关文章

  1. 用efibootmgr管理UEFI启动项,添加丢失的启动项

    UEFI用来替代传统BIOS引导操作系统,学会修改UEFI启动项也变得十分重要,UEFI全称为:“统一的可扩展固件接口”(Unified Extensible Firmware Interface), ...

  2. 删除Ubuntu的UEFI启动项

    bcdedit 删除 千万不要手贱用diskpart之类的命令直接删除文件夹,大写的没,有,用! 感谢这个视频的up主,youtube看不到请翻墙.https://www.youtube.com/wa ...

  3. (译)UEFI 启动:实际工作原理

    本文是我翻译自国外技术博客的一篇文章,其中讲述了 UEFI 的一些基本概念和细节. 本文的原始链接位于: https://www.happyassassin.net/2014/01/25/uefi-b ...

  4. UEFI启动(翻译)

    本文是我翻译自国外技术博客的一篇文章,其中讲述了 UEFI 的一些基本概念和细节. 本文的原始链接位于: https://www.happyassassin.net/2014/01/25/uefi-b ...

  5. UEFI启动视频详解:启动分析+N项操作实例

    ============================================================= ※※※※最给力的视频解说※※※※ 2011hiboy全部共享资料:立刻去   ...

  6. LINUX下EFIBOOTMGR的使用,删除UEFI主板多余启动项和添加启动项

    用uefi装了几次次archlinux,搞的uefi启动选项下多出来好多启动项..这东西重格硬盘也是不好用的.发现以下方法可以解决. efibootmgr   //显示efi的启动项 删除一个引导项 ...

  7. UEFI+GPT引导实践篇(一):切换到UEFI启动,准备安装介质

    如果只单纯比较UEFI引导和BIOS引导,那么毫无疑问UEFI引导要简单很多.不过现在的主板大都是同时兼容BIOS和UEFI引导方式,所以在实际操作前还需要确认一些东西.详见下文. 1.我的电脑支不支 ...

  8. (转载)uefi启动解析:由原理到实例

    这是本文的全部内容:A:什么是UEFI,其含义B:UEFI模块包含的文件逐个分析及其引导流程+ESP分区的本质C:判断自己的机器是X64(64 bit)构架还是IA32(32 bit)的构架D:给传统 ...

  9. 默认系统为UEFI启动的GPT分区的WIN7(8),如何安装VHD的UEFI WIN8(7)

    默认系统为UEFI启动的GPT分区的WIN7(8),如何安装VHD的UEFI WIN8(7) 情况A:如果默认系统为UEFI启动.GPT分区的WIN7,想安装个VHD的UEFI WIN8.1 1:系统 ...

  10. 重装win10+ubuntu 双系统 UEFI启动模式

    有较强的时效性!!先看一眼日期是否太古老! 任务 卸载双系统中的Ubuntu14,安装Ubuntu16 环境 操作系统: Win10 + Ubuntu14双系统 硬盘: 固态硬盘 + 机械硬盘,电脑的 ...

随机推荐

  1. 装在U盘或移动固态硬盘里的系统——适用于Ventoy和VirtualBox的Win to go 和 Linux to go 系统制作教程

    写在前面 前段时间, 突然想起了大学期间折腾过的双系统, 又恰逢最近学习工作需要用到Linux系统环境, 用虚拟机又感觉性能跟不上, 因此萌生了一个用移动固态硬盘安装双系统的想法. 照着网络上各位老师 ...

  2. CAD如何使用 “库” 和 “打开文件菜单栏” 和 “项目管理器”

    这个是一个简单的问题,就是库工具栏丢了怎么办? 点击 默认-块-插入-库中的块,这个菜单栏就会恢复了 打开文件菜单栏,有些同学的菜单栏默认是不存在的,需要特殊功能时可以使用命令行MANUBAR使其显现 ...

  3. Mysql数据类型TINYINT(1)与布尔型的坑

       需求背景:从MySQL数据库读取1.2.3.4等阿拉伯数字定义的状态,并转换成Java中Integer类型的数据,但是转换失败了.    问题分析:布尔型 bool 或者 boolean 在My ...

  4. springboot读取并映射额外的yml配置到bean

    项目结构 userPermission.yml # 用户权限 user-permission: api: # 系统管理员 system_manager: - "*:*:*" # 应 ...

  5. 初识protobuf

    protobuf的优点 性能方面 序列化后,数据大小可缩小3倍 序列化速度快 传输速度快 使用方面 使用简单:proto编译器自动进行序列化和反序列化 维护成本低:多平台只需要维护一套对象协议文件,即 ...

  6. Springboot笔记<6>Rest的使用和请求参数注解@PathVariable、@RequestHeader、@ModelAttribute、@RequestParam、@MatrixVariable、@CookieValue、@RequestBody

    Rest的使用和原理 Rest风格支持(使用HTTP请求方式动词来表示对资源的操作) • 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveU ...

  7. 袋鼠云数栈 DataOps 数据生产力实践,实现数据流程的自动化和规范化

    袋鼠云产品团队在帮助企业进行数字化转型实践的过程中,发现很多企业在数据生产链路上都有着相同的问题.包括数据团队聚焦于业务需求短期内的快速交付,内部缺少自顶向下的数据生产管理制度,在数据标准.数据生产流 ...

  8. ES索引迁移优化:3倍速ReIndex + 零感知切换

    在大模型驱动的时代,向量模型.索引抽取模型.文本切分模型(chunking)的迭代速度令人目不暇接,几乎每几个月就要升级一次.随之而来的,是Elasticsearch索引结构的频繁变更需求.然而,ES ...

  9. HarmonyOS NEXT仓颉开发语言实现画板案例

    大家上午好,今天分享一下仓颉开发语言实现的画板案例. 最近总是有同学说我写ArkTS冒充仓颉,为了自证清白,截图给大家看一下,确实是仓颉文件: 仓颉提供了画布组件Canvas,我们所有的绘制工作都要在 ...

  10. 05 - Multitouch/RoutedEvents例子

    文中例子是基于wpf Canvas写的,由于Maui还没有支持Canvas,所以顺手自己写一个.之前写了一个InkCanvas,发现扩展性太差了,这次写这个Canvas,支持自定义碰撞测试等.自己写的 ...