当前位置: 首页 > 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.jsqmd.com/news/56469/

相关文章:

  • 代码质量的根基——从“能跑”到“好用”的思维跃迁 - 20243867孙堃2405
  • 36PE启动盘新秀:Ventoy(附各种PE的ISO下载)
  • 115 系统坏了不想重装?吕了了手搓系统修复软件帮你修复系统
  • 116Dism++备份系统,如何选择性的备份文件?
  • 66重装系统被驱动难倒?几个重要的驱动安装技巧,建议收藏!
  • 86 [深度解析] 系统的产生依赖于什么?
  • ArkTS 泛型编程指南:提升代码复用性与类型安全
  • 87 Windows 系统安装的本质是什么?
  • 内存溢出问题
  • 140 Windows 11 新系统一分钟打不开一个软件?原来卡顿的真凶在这里!
  • 124 禁用Windows更新有bug?不如先暂停它2000年!
  • 43 微软官方安装Windows途径
  • 82 深入解析 Windows RE:系统维护的强大工具
  • 126 激活Windows系统的四种终极方法
  • 99 如何破解 Windows 系统密码?
  • 讲讲django的文件对象
  • 香港中文大学(深圳) PHY1001 - Mechanics 笔记
  • P9606 ABB
  • 微PE的磁盘化启动:不再使用WEPE64.WIM,直接从分区启动PE系统!
  • 73 Windows系统磁盘与分区知识详解
  • isnumeric() 和 isdigit() 的区别
  • 109 C盘又变红了?清理C盘的便捷方法!
  • 79 对系统迁移几种方案的经验之谈
  • 108 彻底卸载Windows Defender的开源小工具
  • 梅德乐:从愿景到实践的十七载坚守
  • 【UEFI实战】在库中使用全局变量
  • 107 如何快速保存和恢复文件的默认打开方式?
  • 90 老牌压缩软件,性能强大,开源免费!
  • 95 为什么越来越多的人不再使用eD2k了?回顾电驴的兴与衰
  • 155 重装系统电脑循环重启?问题大概率出现在这里!