Windows启动中的BCD文件解析

启动配置数据(BCD)文件的探索


前言

在我的惠普电脑蓝屏后, 出现了"Oxc000007b"问题, 提示缺少winload.efi文件,在我查阅资料后, 发现是UEFI的Windows Boot Manager程序读取文件的路径失效了, 上次这台双系统电脑出现这个问题是四年前了。而与之相关的正是bcd文件, 可以找到UEFI模式中所有的启动信息。

介绍

图1

在官方的解释中, 可以看到"启动配置数据(BCD)文件提供了一个用于描述启动应用程序和启动应用程序设置的存储区。BCDEdit是一个用于管理BCD的命令行工具。它可以用于各种目的,包括创建新存储、修改现有存储和添加引导菜单选项。"

我们可以在"%WINDIR%\System32"文件夹中找到bcdedit.exe, 如果是像我一样无法进入系统的话, 则可以在windows开机时,进入系统恢复选项(像我的惠普则是按着F11),再选择进入高级选项, 再进入命令行提示符。

此时便进入到cmd命令行界面, “X:\Windows\System32”, 在这里输入命令:

bcdedit /enum all

意思是在命令行中列出所有的UEFI信息

图2

实践

在界面中,我们可以看到标识符, 这便是windows启动管理器。

而在左侧"device"对应着右侧的"partition=C:", 表面EFI信息存在此windows下的C盘中。“path"则对应着路径, “default"则是默认的加载项, 对应着windows启动加载器。而下面一串长长的字符则表示从休眠状态中恢复的选项, 并没有用set去改变它的本名。

图3

通常而言, efi文件的信息都是当前windows系统下的C盘中, 但在我的双系统中则是存在"HarddiskVolume2"中, 这是因为之前装双系统的时候分盘导致的。下面让我们再来看一下,“winload.efi"文件存在的路径:

图4

可以看到winload.efi存放的路径,“C:Windows\system32"。而之前出错的问题也是bootmgr找不到此路径下的winload.efi文件。在这里我们可以用bcdedit.exe来更改device和path。

图5

让我们来试试将”“的路径更改为"HarddiskVolume2”。关于harddiskVolume的信息, 可以从硬盘信息拿到。

bcdedit /set {bootmgr} device partition=HarddiskVolume2

此时,我们看到修改已经完成。

图6

此时,作为双系统的电脑已经能找到winload.efi文件加载。

深入

让我们再关注到bcdedit的其他命令:

图7

这里也是常用命令,包括创建一个新的boot设置数据存储等等。一般用作对efi信息的备份。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus