本版
查看: 28764|回复: 0

[水] 【转】关于Bootmgfw.efi、Bootx64.efi的详解

[复制链接]

Super Moderator

楼主(1#)
发表于 2015-12-1 18:17:55 | 只看该作者 |只看大图 |倒序浏览 |阅读模式
前言:
[color=rgb(68,68,68)]1、本教程针对于[/color]UEFI[color=rgb(68,68,68)]启动来叙述的,根据普遍的支持UEFI的机器来叙述[/color]
[color=rgb(68,68,68)] 2、本教程以[/color]Windows 8 X64[color=rgb(68,68,68)] 来作为参考[/color]

标题简要说明:
[color=rgb(68,68,68)]Windows Boot Manager --------安装完Windows系统后而出现的启动选项(相关的信息存储在NVRAM),[/color]可以删除和建立[color=rgb(68,68,68)]和bcdboot.exe有关[/color]
[color=rgb(68,68,68)] Bootmgfw.efi --------引导Windows的引导文件 [/color]
[color=rgb(68,68,68)] Bootx64.efi ---------UEFI的必需引导文件[/color]
[color=rgb(68,68,68)] bcdboot.exe--------修复UEFI启动的命令行工具,微软出品[/color]


开始前先引进两个概念:

计算机默认引导
[color=rgb(68,68,68)]-----------就是不管你的计算机有没有操作系统,定义了UEFI启动后将通过Bootx64.efi 引导你的计算机,并进入各种模式,维护、安装、计算机或者系统
这里是 Bootx64.efi ,它只是一个通用名,权限丰富且大于Windows 默认,就是说如果你的Windows 默认的启动文件不在了,
启动计算机默认的引导文件Bootx64.efi 也是可以启动计算机的。使用计算机默认文件随时可以在各种环境下启动计算机,EFI SHELL、ISO、
Windows、Linux...都可以,通吃型.

[/color]Windows默认引导 [color=rgb(68,68,68)]-------就是你为计算机安装了操作系统,或者修复了UEFI引导后,启动菜单会有 Windows Boot Manager 选项,该选项默认从bootmgfw.efi 启动系统
[/color] [color=rgb(68,68,68)]bootmgfw.efi 该位置的该文件只能用于启动Windows,不是通用名,[/color]权限单一




[color=rgb(68,68,68)] ========================================================[/color]
0、
[color=rgb(68,68,68)]对于UEFI启动环境来说,Bootx64.efi 用处更大,这里Bootx64.efi 是个通用名,就是所任意有效的efi改成Bootx64.efi 都被计算机启动加载,并启动。
bootmgfw.efi 不是通用名,只适合启动Windows。
[/color]
[color=rgb(68,68,68)]当然对于UEFI启动Windows来说Bootx64.efi 和bootmgfw.efi 其实是同一个文件,二者的循环冗余校验CRC值是一样的。
他们都有启动windows的能力,但是身处的位置不一样,

efi\boot\bootx64.efi
efi\microsoft\boot\bootmgfw.efi

对系统的引导产生的影响肯定也不一样,下面我们来验证....
[/color][color=rgb(68,68,68)]======================================================[/color]


[color=rgb(68,68,68)] 从三个方向来讲:([/color]以下结论都经过事实验证,经得住任何怀疑和猜测!!)
[color=rgb(68,68,68)] ========================================================[/color]
1、[color=rgb(68,68,68)]光盘介质UEFI启动【[/color]已验证[color=rgb(68,68,68)]】:[/color]

[color=rgb(68,68,68)] 通过分析微软原装镜像的UEFI引导记录(efisys.bin)我发现,最初出光盘的引导文件是efi\boot\[/color]bootx64.efi[color=rgb(68,68,68)],因为此项验证较简单,我总共验证了:[/color]
[color=rgb(68,68,68)] win7 x64 ;win8 x86 ;win8 x64 三者的光盘引导文件分别是 [/color]bootx64.efi bootia32.efi bootx64.efi

结论:[color=rgb(68,68,68)]UEFI在光盘上的启动不依赖于操作系统,可认为是无操作系统环境,故 [/color]bootx64.efi[color=rgb(68,68,68)] 是[/color]计算机默认[color=rgb(68,68,68)]引导文件[/color][color=rgb(68,68,68)]========================================================[/color]

2、[color=rgb(68,68,68)]移动磁盘介质UEFI启动【[/color]已验证[color=rgb(68,68,68)]】:[/color]

[color=rgb(68,68,68)] 普遍的,可以从论坛上看到通过[/color]bootx64.efi 启动U盘

结论:[color=rgb(68,68,68)]UEFI在移动磁盘介质上的启动不依赖于操作系统,可认为是无操作系统环境,故 [/color]bootx64.efi[color=rgb(68,68,68)] 是[/color]计算机默认[color=rgb(68,68,68)]引导文件[/color]
[color=rgb(68,68,68)] ========================================================[/color]

3、[color=rgb(68,68,68)]本地磁盘介质UEFI启动【[/color]已验证[color=rgb(68,68,68)]】:[/color]

::原生ESP分区引导文件分析

[color=rgb(68,68,68)]我为此安装了微软win8 x64的操作系统,分析ESP分区的全部文件,[/color]分别存在[color=rgb(68,68,68)]: [/color]
[color=rgb(68,68,68)] efi\boot\[/color]bootx64.efi[color=rgb(68,68,68)] [/color]
[color=rgb(68,68,68)]efi\microsoft\boot\[/color]bootmgfw.efi

我们不禁思考:
哪个文件测试真正用到的呢?计算机默认启动哪个呢?系统默认启动哪个呢?

[color=rgb(68,68,68)]那好很简单,我们依次删除他们看看系统能否启动就知道了....[/color]

[color=rgb(68,68,68)] 1、[/color]删除[color=rgb(68,68,68)] bootmgfw.efi ,[/color]保留[color=rgb(68,68,68)] bootx64.efi [/color]

>结果:
[color=rgb(68,68,68)]选择从本地硬盘启动 [/color]系统仍然可以引导进入
选择 Windows Boot Manager
进入失败


[color=rgb(68,68,68)]2、[/color]删除[color=rgb(68,68,68)] bootx64.efi ,[/color]保留[color=rgb(68,68,68)] bootmgfw.efi [/color]

> 结果:
[color=rgb(68,68,68)]选择从本地硬盘启动 [/color]进入失败
选择 Windows Boot Manager 系统仍然可以引导进入

结论:
bootx64.efi
[color=rgb(68,68,68)] 是[/color]计算机默认[color=rgb(68,68,68)]引导文件[/color]
bootmgfw.efi 是 Windows默认[color=rgb(68,68,68)]引导文件[/color]



4、bcdboot 和 “Windows Boot Manager ” “ Bootmgfw.efi” “ Bootx64.efi ” 之间的联系

bcdboot 修复系统引导的命令格式: bcdboot 系统位置 /l 语言

例:

[color=rgb(102,102,102)]
  • bcdboot c:\windows /l zh-cn

复制代码[/color]
当我们执行了上述代码后:

bcdboot.exe 会修复系统引导[color=rgb(68,68,68)],而且会同时修复[/color]计算机默认引导[color=rgb(68,68,68)]和[/color]Windows 默认引导[color=rgb(68,68,68)],在ESP分区同时出现bootx64.efi和bootmgfw.efi,[/color]

[color=rgb(68,68,68)] 并且bootx64.efi是由bootmgfw.efi 改名而来的。与此同时在Boot Menu启动选择菜单那里生成“Windows Boot Manager”,[/color]

[color=rgb(68,68,68)] Windows Boot Manager 及其包含的信息是保存在主板上的[/color]NVRAM[color=rgb(68,68,68)]里面的,而不是保存在硬盘上,故删除Windows Boot Manager需要到BIOS设置区删除。[/color]

::这里我们如果通过bcdedit查看bcd文件的话,我们可以发现,bootmgfw.efi 是 Windows默认引导文件。所以我们的结论同原生ESP分区测试的结论一样。


[color=rgb(68,68,68)]UEFI规范中,关于NVRAM的正解:
NVRAM是BIOS ROM中的一段区域,一般定义为64k byte, 现在EFI把所有的变量都存在这里。

[/color]

结论:
bootx64.efi
[color=rgb(68,68,68)] 是[/color]计算机默认[color=rgb(68,68,68)]引导文件[/color]
bootmgfw.efi 是 Windows默认[color=rgb(68,68,68)]引导文件[/color]


最后:
写这篇帖子最主要的原因,是能够让那些不是很明白Bootx64.efi和Bootmgfw.efi区别的、或者模糊知道的朋友,清楚了解二者之间的关联以及区别不要再有 Bootx64.efi就是Bootmgfw.efi改名而来的、Bootx64.efi就是Bootmgfw.efi
像这些不正确的说法,以免误导后来的朋友.....
准确的说:“
Bootx64.efi 可以是 Bootmgfw.efi,也可以是其他任意有效的efi程序”

回复

支持 | 反对  0 支持 / 0 反对 评分 举报

联系我们(Contact)|手机版|萝卜头IT论坛 ( 苏ICP备15050961号-1 )

GMT+8, 2026-11-06 13:43 , Processed in 0.07 second(s), 20 queries , Gzip On.

快速回复 返回顶部 返回列表