核心配置: BCD文件详解与BOOTICE编辑实战
核心配置:BCD文件详解与BOOTICE编辑实战
本系列文章阅读顺序:
- 计算机固件启动原理Windows系统引导启动流程第一篇
- 全面揭秘UEFI固件启动Windows全流程
- 核心配置BCD文件详解与BOOTICE编辑实战
- BIOS固件启动Windows系统
- 修复Windows系统引导的一般方法
bootx64.efi,bootmgfw.efi都做了些什么?
了解并且运行了efi程序之后,我们将介绍这两个efi程序究竟做了什么操作,启动了Windows系统.
首先,大家可以放心的是:bootx64.efi,bootmgfw.efi这两个程序只是名字不同而已,他们的文件本质是一样的,是两个一模一样的程序.所以,它们的运行原理是一致的.
至于为什么会有两个一样的efi程序,但名字还不一样,我会在之后讲解.
bootmgfw.efi,是Windows启动管理器.
你可能见过这两个界面:


这两个界面都是Windows启动管理器的界面,也就是说,他们都是bootmgfw.efi的界面.
为什么是两种界面?
因为微软自Windows 8 开始引入了磁贴风格扁平化设计,便于触摸设备使用.
黑色的便是老式的Windows启动管理器界面,蓝色的是Windows 8 之后引入的metro界面,比较现代.
它们的本质是相同的,只不过蓝色的界面更美观一些.然而,新式的界面在有多系统的电脑上可能会拖延启动时间.
我们可以手动配置BCD文件,来选择使用这两种界面的任意一种.
关于如何配置BCD文件,我将在之后讲解.
bootmgfw.efi这个Windows启动管理器列出了操作系统的启动菜单供我们选择.
比如,上图中就有win1,win2,win3,PE1,PE2这些系统可以启动.
那么,下一个问题就是:这些可以启动的系统的列表是从哪里来的?
BCD文件
没错,BCD文件里面记录了这个系统列表.
BCD文件是什么?
BCD文件(boot configuration data),启动配置数据.
BCD文件里记录了操作系统的启动信息,包括系统位置,启动模式,启动程序,系统菜单名称等等.可以说是Windows系统启动的字典索引.
BCD文件只适用于Windows系统.
BCD文件就像是NVRAM里面的启动顺序记录一样,都是记录菜单.只不过NVRAM启动顺序是给UEFI用的,BCD是给bootmgfw.efi用的.
BCD文件位于和bootmgfw.efi相同的文件夹里.一般情况下,EFI分区里的文件的位置都不可以改变,如果改变就可能发生UEFI固件和efi程序找不到文件的情况,导致启动失败.
具体详细内容可以阅读我的第60篇文章《对UEFI引导的深入探究:efi引导程序的位置一定是死的吗?》

学会如何编辑BCD,是系统运维迈向高阶的关键一步.
编辑BCD
我们无法使用普通的文本编辑器编辑BCD,因为里面的数据是加密的.我们可以使用第三方图形界面工具编辑BCD,也可以使用微软提供的命令行工具bcdedit编辑BCD.
由于命令行工具使用不方便,不适合入门,笔者介绍使用第三方优秀小工具BOOTICE这款软件编辑BCD菜单.有兴趣的同学可以学习一下命令行工具的编辑方法.
BOOTICE软件可以在各大平台下载.笔者提供一个下载链接,方便下载:
打开BOOTICE,我们点击上方"BCD编辑"->选择当前系统BCD->智能编辑模式即可编辑我们自己电脑的BCD.
BCD是重要的启动配置数据,请谨慎操作,错误操作可导致无法启动系统.
建议在虚拟机中编辑BCD练习.

这个界面大体分两部分:左半栏,右半栏.左半栏的上部显示的是在Windows启动管理器(bootmgfw.efi)界面显示的操作系统启动菜单的样子.其余部分都是BCD的编辑选项.
我将进行详细介绍.
“上移,下移,默认,添加,删除”:对某一个启动项目在菜单中的位置上移,下移,设置为默认启动项目,添加新的启动项目,删除某一个启动项目.
全局设置
- 超时时间:在有多个启动项目时,设置等待时间,到了这个时间之后自动启动被设置为默认的启动项目.
- 启动界面语言:选择Windows启动管理器界面的语言.是否生效还需要搭配EFI分区中语言文件夹中的语言文件.
- 显示菜单:若勾选,无论是否有多个启动项目,都在启动的时候显示Windows启动管理器菜单.
- 禁用数字签名验证:禁用启动程序的数字签名验证.
启动设备
设备类型:启动的系统的启动类型.正常的Windows系统是以分区方式启动的.(也就是Windows系统安装在分区里面).Ramdisk和VHD分别为另外两种启动类型,会在未来介绍.
启动磁盘:安装的Windows系统所在的磁盘.
启动分区:Windows系统所在的分区.(也就是我们常常说的C盘)
设备文件,SDI文件是Ramdisk和VHD需要的依赖文件,不是正常Windows系统启动所需,将在未来介绍.
设置
- GUID:该启动项的”身份证”(全局唯一标识符)不可更改.
- 菜单标题:显示在Windows启动管理器的菜单名字,作用是让我们分辨哪个菜单对应哪个系统.我们可以随意对其进行命名.(不建议使用中文)
- 启动文件:用于启动Windows系统运行的第一个程序.对于UEFI固件的计算机,这个程序都是位于系统盘的
\Windows\system32\winload.efi. - 系统路径:
\Windows这个也是不变的. - 系统语言:系统语言.
safeboot:安全启动,一般是normal mode,正常模式
PAE:开启这个功能可以使32位的CPU访问超过4GB大小的内存.
NX:阻止恶意代码加载的技术.
检测硬件抽象层:检测操作系统与硬件之间的抽象层面是否正常.
启动到winPE:如果这个启动项启动PE系统,则需要勾选他.
启用 win 8 metro 界面:勾选后,bootmgfw.efi将显示蓝色磁贴风格的Windows启动管理器界面.不勾选则使用黑色背景界面.
测试模式:笔者不知道.目前来看,作用不是很大.不介绍.
保存当前系统设置:保存某一个启动项的设置.
保存全局设置:保存整个BCD文件.
以上是bootice编辑BCD界面所有按钮功能的介绍.
介绍完功能,如何编辑BCD就显而易见了.我在此强调几点经验.
新建BCD菜单,对于Windows 7/8/8.1/10/11系统,点击
添加->新建win7/8/8.1启动项常规安装的Windows系统,设备类型是
分区启动磁盘选择Windows系统所在的磁盘
启动分区选择Windows系统所在的分区
菜单标题自拟,最好用英文
启动文件:如果是UEFI固件,那就是winload.efi.(如果是BIOS固件,那就是winload.exe.)
系统路径,系统语言不用改
所有的路径前面别忘了加一个反斜杠!()
safeboot,PAE,NX保持默认设置
不启用win 8 metro界面.(除了美观,没别的作用,拖慢启动菜单选择速度)
启动到winPE不勾选或者半勾选.
每次编辑完成后,先点击
保存当前系统设置,再点击保存全局设置超时时间按照自己的习惯设置(能反应过来就行)
其余的选项保持默认
你可能有一个疑惑:为什么有的选项的勾选状态有三种,分别是勾选,不勾选和半勾选?
网上并没有统一的说法,但是根据笔者经验,半勾选的状态代表这个功能对于当前启动项,**能开启就开启,不能开启就不开启,属于中间模棱两可的状态,**是否开启取决于启动时的启动环境条件.
至此,BCD编辑讲解结束.
BCD编辑结束后,操作系统的启动也就接近了尾声.
UEFI启动Windows的最后阶段
bootmgfw.efi通过读取BCD文件,把操作系统启动菜单列出在Windows启动管理器界面,供用户选择启动.
用户选择一个项目启动之后,bootmgfw.efi根据BCD文件里面记录的启动项目的启动文件(也就是
\Windows\system32\winload.efi),加载运行这个winload.efi.
然后bootmgfw.efi就把计算机的控制权交给了winload.efi这个程序.
winload.efi程序负责加载Windows系统的内核,启动Windows.
UEFI固件模式下的Windows系统至此启动完毕.
问题解答
EFI分区为什么在文件资源管理器里面看不见?
- EFI分区的重要性不言而喻.一旦用户错误更改了里面的文件,就可能导致Windows系统关机后无法再次启动.对于如此重要的分区,操作系统把他隐藏了起来,不让用户触及.
- 我们可以使用系统自带的
磁盘管理工具看见EFI分区.或使用第三方软件diskgenius浏览编辑里面的文件.
为什么存在两个相同的文件bootx64.efi,bootmgfw.efi?
事实上,UEFI规范中,把bootx64.efi这个程序作为UEFI固件启动的默认启动程序.也就是当NVRAM里面没有任何记录的时候,UEFI固件默认加载bootx64.efi.
bootx64.efi的位置是固定的,位于EFI分区的
\EFI\boot\bootx64.efi微软把bootx64.efi当做一个启动的备用选项.一旦bootmgfw.efi损坏丢失,UEFI固件可以启动bootx64.efi,同样启动Windows系统.
更详细的内容,请阅读我的第59篇文章:《关于Windows Boot Manager,Bootmgfw.efi,Bootx64.efi,bcdboot.exe 的详解》
本系列文章阅读顺序:
- 计算机固件启动原理Windows系统引导启动流程第一篇
- 全面揭秘UEFI固件启动Windows全流程
- 核心配置BCD文件详解与BOOTICE编辑实战
- BIOS固件启动Windows系统
- 修复Windows系统引导的一般方法