Windows Boot Manager是在UEFI固件下控制整个启动过程、读取启动配置并且加载操作系统的内核的核心引导程序,并不是单独的应用程序,在ESP系统分区里有一个名为bootmgfw.efi的文件来实现上述功能,该文件会根据BCD(启动配置数据)找到Windows安装的位置以及相关的内核参数和多系统选项等信息,在开机的时候,UEFI固件会按照NVRAM中的设置去调用它从而执行winload.efi来完成内核的初始化工作,不管是单一的操作系统正常启动还是使用F8进入高级模式或者从恢复环境中重新启动等等各种情况之下都是由它来进行协调工作的——它是Windows和硬件固件之间的桥梁,也是保证系统可以正常运行、灵活配置以及自我修复的基础。

一、它所处的位置和存放的地方都很清楚
Windows Boot Manager用bootmgfw.efi的形式来存储于EFI系统分区下的EFIMicrosoftBoot子目录里,此分区一般为FAT32格式、100M到500M之间大小,并且是由Windows安装程序自动生成并且隐藏起来不能通过资源管理器进行访问。可以利用管理员身份打开磁盘管理或者使用diskpart命令查看ESP分区的状态,在CMD中输入bcdedit /enum firmware可以得知UEFI启动项所指的位置,也可以通过CMD中的mountvol S: /S命令把ESP挂载出来之后再进入到S:EFIMicrosoftBoot这个目录里面去检查文件有没有什么问题存在的话就会出现“操作系统找不到”的错误信息。
二、使用BCD数据库来完成灵活的开机控制
启动配置数据(BCD)就是Windows Boot Manager工作的依据,在ESP分区下的EFIMicrosoftBootBCD路径里以二进制的形式存在。虽然不是普通的文本文件,但是可以利用系统自带的工具进行修改:用管理员权限打开CMD后输入bcdedit就可以看到所有的启动选项了,比如当前的操作系统的设备信息、操作系统所在的磁盘位置等等;用bcdedit /set {default} bootmenupolicy legacy就可以把传统的菜单模式改成新的;如果要添加一个新的操作系统或者老版本的操作系统作为启动项的话,就需要用到bcdboot D:Windows /s S: /f UEFI来重新构建整个引导环境,并且还要保证BCD里面对应的条目的identifier、description以及recoveryenabled这些字段都正确无误。
三、和UEFI固件一起工作来创建一个标准的启动链条
在UEFI平台上,并不是只有Windows Boot Manager可以成为启动程序之一,在NVRAM里默认存在一个叫做“Windows Boot Manager”的选项会被固件调用出来。这个选项会在第一次安装或者修复的时候被写入到系统中去,它所对应的底层文件是位于ESP里的bootmgfw.efi。用户可以在开机的时候不断地按下F2、F10或者是Del键进入到UEFI设置界面,在这里可以对它的优先级进行修改;也可以使用efibootmgr(对于Linux系统而言)、bcdedit /enum firmware(对于Windows系统而言)这样的命令行工具来手动地去管理这些条目。如果换了新的主板或者重新设置了UEFI的话,那么这个条目就会消失不见,在这种情况下就需要利用带有Windows安装光盘的设备来进行操作了——即运行bootrec /rebuildbcd或者bcdboot C:\Windows /s S: /f UEFI来重建它。
四、具有高级的功能但是要正确的去触发和设置
Windows Boot Manager没有图形用户界面,但是可以被一些特定的按键组合所触发,并且会显示一个高级启动选项菜单,在该菜单里可以找到安全模式、系统还原以及UEFI固件更新等选项;按下Shift+F8就可以打开这个菜单了;另外还可以通过长按电源按钮三次再重启来进入到Windows恢复环境(WinRE),此时底层还是由Boot Manager加载winre.wim文件里的winload.efi;上述所有功能都依靠BCD中的“recoveryenabled”、“bootstatuspolicy”等相关参数的存在与否而存在或不存在;如果这些参数被关闭的话,则需要使用命令bcdedit /set {default} recoveryenabled on来开启它们。
因此,在UEFI时代的Windows启动过程中,Windows Boot Manager既是稳定可靠的又是可以被控制和追溯以及修复的核心部分,并不只是一直能够开机这么简单。






评论区 (0)
暂无评论,快来抢沙发吧!
发表评论