当前位置: 首页 > news >正文

60 对UEFI引导的深入探究:efi引导程序的位置一定是死的吗?

对UEFI引导的深入探究:efi引导程序的位置一定是死的吗?

对于Windows系统,bootx64.efi和bootmgfw.efi是同一个文件,只是名字不同.他们本质都是bootmgfw.efi,用于引导Windows系统,无法引导其他系统.

所以,即便是Windows系统安装后在EFI分区里产生了bootx64.efi,由于它和bootmgfw.efi相同,所以它也不能引导其他系统(如Linux)启动.

引导Linux系统启动还需要Linux专用的bootx64.efi.虽然名字一致,但其文件本身已经发生了变化.

由于Linux系统是使用grub引导器引导启动,所以在Linux下,计算机的一种可行的启动流程是UEFI->bootx64.efi->grub.相当于bootx64.efi启动了grub(grub也是efi程序),grub引导Linux.

此外,由于grub的强大引导能力,他可以同时引导Windows,Linux,苹果系统等等系统类型.所以,使用Linux和Windows双系统的计算机一般可以使用grub作为引导器,而不是用Windows boot manager.


UEFI启动菜单里的启动项目是存储在主板上的NVRAM(非易失性随机存储介质)里面的,并不存储在硬盘中,所以不能通过操作硬盘处理编辑,但可以通过在UEFI固件里面的设置来更改.

在UEFI启动菜单中,每一个启动项都指向一个efi程序.

  • Windows boot manager指向bootmgfw.efi

  • 硬盘启动项指向bootx64.efi

  • 如果安装了Linux,UEFI启动菜单里面可能会有一个Linux启动项,笔者没用过,不知道

    由此可见,Windows计算机有两种可行的启动过程:

  1. UEFI->bootmgfw.efi(Windows boot manager)->读取BCD文件->启动
  2. UEFI->bootx64.efi(硬盘启动项)->读取BCD文件->启动

对efi引导程序位置影像系统启动的探究

bootx64.efi一定要放在EFI\boot文件夹里面吗?bootmgfw.efi一定要放在EFI\Microsoft\boot文件夹里面吗?如果移动了他们,会发生什么?

为了弄清楚efi引导程序的基本工作原理,笔者进行了控制变量实验.


bootx64.efi

首先,笔者删除了bootmgfw.efi,留下了bootx64.efi.然后,笔者把bootx64.efi复制到了EFI分区里的各个位置.包括:

  • EFI分区根目录(\)

  • *\EFI*

  • *\EFI\Microsoft*

  • *\EFI\Microsoft\Recovery*

  • *\EFI\Microsoft\Boot*

    笔者删除了bootx64.efi本来存在的地方,防止干扰.

    使用VMWare,笔者测试了在UEFI固件中使用每一份bootx64.efi的启动情况.结果如下:

除了\EFI\Microsoft\Recovery\里面的bootx64.efi,其余所有的bootx64.efi都可以引导计算机启动.

笔者把\EFI\Microsoft\boot\文件夹里面的所有名字里面含有"BCD"的文件移动到EFI分区里面的其他位置,发现任何bootx64.efi都无法启动.

那么,为什么\EFI\Microsoft\Recovery\里面的bootx64.efi无法引导启动?

为探究其原因,笔者将\EFI\Microsoft\Recovery\里面的BCD文件全部删除,使得该文件夹里面只剩bootx64.efi这一个文件.然后从这个文件成功启动了Windows.


对bootx64.efi的总结

bootx64.efi引导Windows启动的过程主要总结如下:

  • bootx64.efi首先检测他所在的文件夹里是否有BCD文件,若有,则直接读取它,然后根据这个BCD引导启动.

  • 若它所在的目录里没有BCD文件,则他开始在EFI分区中按照\EFI\Microsoft\boot\BCD这个固定的顺序寻找BCD文件.然后从这个文件引导启动.

  • 如果\EFI\Microsoft\boot\里面没有有效的BCD文件,那么无法引导启动系统.

    所以,刚刚的问题就可以解释了.Recovery文件夹里面本来是有BCD文件的,bootx64.efi优先读取这个BCD.

    但是这个BCD文件并不是Windows系统的BCD,而是WindowsRE恢复环境的BCD文件.笔者做测试的虚拟机没有WindowsRE,所以无法启动.


bootmgfw.efi

笔者对bootmgfw.efi进行了与bootx64.efi完全一致的研究测试.

结果表明,bootmgfw.efi与bootx64.efi的表现完全一致,这更加证明了:在Windows系统中,bootmgfw.efi和bootx64.efi是同一个文件.


希望本文能加深你对Windows引导程序的深入理解.

http://www.gsyq.cn/news/66717.html

相关文章:

  • 2025.11.30总结
  • 代码质量的根基——从“能跑”到“好用”的思维跃迁 - 20243867孙堃2405
  • 36PE启动盘新秀:Ventoy(附各种PE的ISO下载)
  • 66重装系统被驱动难倒?几个重要的驱动安装技巧,建议收藏!
  • 图片压缩与格式转换:优化应用资源加载
  • 87 Windows 系统安装的本质是什么?
  • 82 深入解析 Windows RE:系统维护的强大工具
  • P9606 ABB
  • 微PE的磁盘化启动:不再使用WEPE64.WIM,直接从分区启动PE系统!
  • 90 老牌压缩软件,性能强大,开源免费!
  • 95 为什么越来越多的人不再使用eD2k了?回顾电驴的兴与衰
  • 138 Windows安装程序无法将Windows配置为在此计算机的硬件上运行的解决办法
  • 121 如何无损转换分区表类型?其实并不是单向的!
  • 139 不用PE不用RE不用U盘不双击setup.exe:独家重装Windows系统的骚操作(全网首创)
  • 77如 何安装集火最纯最官方的正版Microsoft Office套件?
  • 96 优秀系统镜像管理软件: Dism++使用方法全解
  • 第四
  • 2025最新郑州空调/地暖维修保养服务公司最新top5推荐!空调维修/空调清洗/空调保养/地暖清洗/地暖保养,行业专业数据+市场口碑榜+选择指南,南阳/平顶山/周口/新乡
  • Centos7.9-生成自定义SSL证书-用于服务器调试、部署
  • 164再谈 C 盘节约: WizTree 扫 C 盘一览无余,看 WimBoot+ 目录链接如何欺骗系统偷天换日
  • test-20251130
  • 第四篇Srum冲刺博客
  • CSAPP Archlab
  • 鸿蒙超级终端体验:无缝流转的底层实现与用户体验优化 - 青青子衿-
  • 分布式硬件池化:跨设备摄像头、传感器能力协同 - 青青子衿-
  • 【日记】傍晚半马训练途中,我似乎快要认不出自己生活的这座小城市了(1295 字)
  • 如何开始微信小程序渗透?
  • Python并发编程:concurrent.futures全解析
  • 一题多解的题目
  • 在 vscode 中部署juypter notebook 插件