什么是 BCD 存储?
启动配置数据 (BCD) 存储包含启动配置参数,并控制 Microsoft® Windows Vista™ 操作系统和代号为“Longhorn”的 Microsoft® Windows Server® 操作系统的启动方式。这些参数以前位于 Boot.ini 文件(在基于 BIOS 的操作系统中)或稳定 RAM (NVRAM) 条目中(在基于可扩展固件接口的操作系统中)。您可以使用 Bcdedit.exe 命令行工具在 BCD 存储中添加、删除、编辑和追加条目,以影响在预操作系统环境中运行的 Windows® 代码。Bcdedit.exe 位于 Windows Vista 分区的 "Windows"System32 目录下。
注意
虽然本文档主要介绍 Windows Vista 相关内容,但此信息同样适用于 Windows Server“Longhorn”。
注意
要在命令提示符下获得详细的命令和选项信息,请键入 bdedit.exe /?命令。例如,键入 bcdedit.exe /?CREATESTORE。
为什么从 Boot.ini 改为 BCD?
创建 BCD 的目的是为描述启动配置数据提供一种改进机制。随着新固件模型的不断涌现(例如,可扩展固件接口 (EFI)),人们需要一种可扩展和可互操作的接口来实现基础固件的抽象化。这一全新设计为 Windows Vista 中的各种新功能(例如,启动修复工具和多用户安装快捷方式)提供了支持基础。
BCD 文件位于注册表中的哪一位置?
- 基于 BIOS 的操作系统。BCD 注册表文件位于活动分区的 "Boot"Bcd 目录下。
- 基于 EFI 的操作系统。BCD 注册表文件位于 EFI 系统分区中。
是否任何用户都可以修改 BCD?
否。您需要提供管理凭据才能修改 BCD。
可以通过哪些方式修改 BCD?
根据您要更改的内容,可以使用下列工具修改 BCD:
- 启动和故障恢复。如果您的计算机上安装了多个操作系统,则通过“启动和故障恢复”。
- 系统配置实用程序 (Msconfig.exe)。Msconfig.exe 是一款更高级的工具,其功能包含下列选项:/debug、/safeboot、/bootlog、/noguiboot、/basevideo 和 /numproc。
- BCD WMI 提供程序。BCD Windows Management Instrumentation (WMI) 提供程序是一个管理接口,可用于编写修改 BCD 的实用程序脚本。这是唯一可用于 BCD 的编程接口。有关详细信息,请参阅 Microsoft 网站上的“启动配置数据 (BCD)”(http://go.microsoft.com/fwlink/?LinkId=56792)。
- BCDEdit.exe。BCDEdit.exe 是 Windows Vista 中取代 Bootcfg.exe 的命令行实用程序。有关详细信息,请参阅使用 Bcdedit.exe 可执行哪些操作?。
为什么在 EFI 启动管理器中看不到任何 Windows 条目?为什么有两个启动管理器?
所有 Windows 条目都存储在 BCD 存储中。在基于 EFI 的操作系统中,EFI 固件启动管理器中只有一个名为“Windows 启动管理器”的条目。此文件位于 "EFI"Microsoft"Boot"Bootmgfw.efi。如果使用 EFI 启动管理器启动 Windows 启动管理器,则基于 EFI 的操作系统和基于 PC/AT 的操作系统将提供相同的外观和用户体验。例如,高级启动选项菜单均可供使用。EFI 启动管理器的默认超时值为 2 秒,以便能够在 Windows Server 2003 (Service Pack 1) 与 Windows Vista 之间更轻松地进行启动切换。
多重引导环境
是否可以在已经包含某个操作系统的计算机上安装 Windows Vista?
可以。您可以将 Windows Vista 安装在另一个分区上。最好在安装旧版操作系统之后安装 Windows Vista。旧版操作系统将继续使用 Boot.ini 来进行启动配置。
在 Windows Vista 中,是否可以将过去使用 Boot.ini 的代码替换为现在使用 BCD?
不可以。您需要将代码改为针对旧版操作系统使用 Boot.ini,而针对 Windows Vista 使用 BCD。
在多重引导环境中,在 Windows Vista 之前的操作系统上修改 BCD 是否会修改启动配置?
不会。您需要修改 BCD 以更改 Windows Vista 的启动配置。但要更改旧版操作系统的启动配置,则还需要修改 Boot.ini(如果是基于 BIOS 的操作系统)或 NVRAM(如果是基于 EFI 的操作系统)。
如果不引导到 Windows Vista,是否可以完全禁用 BCD?
不可以。因为首先会运行 Windows Vista 的启动管理器以确定要启动哪个操作系统。因此,如果希望引导到旧版操作系统,则必须在 BCD 存储中将默认顺序设置为旧版操作系统。有关详细信息,请参阅如何更改默认操作系统条目。
BCDedit.exe
什么是 Bcdedit.exe?
您可以使用 Bcdedit.exe 在 BCD 存储中添加、删除、编辑和追加条目,以修改在预操作系统环境中运行的 Windows 代码。Bcdedit.exe 位于 Windows Vista 分区的 "Windows"System32 目录下。
使用 Bcdedit.exe 可以执行哪些操作?
Bcdedit.exe 目前使您能够执行下列操作:
- 为稍后安装 Windows Server“Longhorn”创建一个 BCD 存储。
- 向现有 BCD 存储中添加条目。
- 修改 BCD 存储中的现有条目。
- 删除 BCD 存储中的条目。
- 将条目导出到 BCD 存储。
- 导入来自 BCD 存储的条目。
- 列出当前处于活动状态的设置。
- 查询特定类型的条目。
- (向所有条目)应用全局更改。
- 更改默认超时值。
当运行 bcdedit /enum 时,为什么会得到一个 Windows 启动管理器条目、若干 Windows 启动加载器条目和一个旧条目?
启动环境分为两个类别:Windows 启动管理器和在启动环境中运行的各种启动应用程序。Windows 启动管理器实质上是一个微型操作系统,可控制您的启动体验并使您能够选择要运行的启动应用程序。启动应用程序有很多种(例如 Windows 启动加载器),并且每种启动应用程序所执行的任务都有所不同。例如,Windows 启动加载器应用程序将加载 Windows。
如果指定 /enum 时,您将获得以下内容:
- 一个 Windows 启动管理器条目(因为只有一个启动管理器)。
- 适用于计算机上安装的每个 Windows Vista 操作系统的 Windows 启动加载器应用程序。例如,如果您在不同分区上安装了两个不同版本的 Windows Vista,就会看到两个 Windows 启动加载器条目。
- 一 个旧条目。此条目并不是启动应用程序,但它使用 NTLDR 和 Boot.ini 引导至 Windows Vista 之前的操作系统。您可以使用此条目引导至 Windows Server 2003、Windows XP 或其他早期操作系统(如果计算机上安装了该操作系统)。
Bcdedit.exe 是否具有命令行帮助?
有。要在命令提示符下获得详细的命令和选项信息,请键入 bdedit.exe /? 和 bdedit.exe /?命令。例如,键入 bcdedit.exe /?CREATESTORE。
执行熟悉任务的新方式
如何更改全局 zf 设置
在命令提示符下键入:
bcdedit /dbgsettingsDebugType[debugport:Port] [baudrate:Baud]
[channel:Channel] [targetname:TargetName]
|
选项 |
说明 |
DebugType
|
指定调试器的类型。DebugType 可以是 SERIAL、1394 或 USB 之一。其余选项
取决于所选的调试器类型。
|
Port
|
用于 SERIAL 调试,指定用作调试端口的串行端口。
|
Baud
|
用于 SERIAL 调试,指定调试使用的波特率。
|
Channel
|
用于 1394 调试,指定调试使用的 1394 通道。
|
TargetName
|
用于通用串行总线 (USB) 调试,指定调试使用的 USB 目标名称。
|
示例
以下命令将指定条目设为默认
启动管理器条目:
bcdedit /default {cbd971bf-b7b8-4885-951a-fa03044f5d71}
以下命令将旧 Windows 加载器 (Ntldr) 设为
默认条目:{466f5a88-0af2-4f76-9038-095b170dc21c} 是 Ntldr 的预定义 GUID。
bcdedit /default {466f5a88-0af2-4f76-9038-095b170dc21c}
如何更改下一次重新启动的启动顺序
在命令提示符下键入:
bcdedit /bootsequence {ID} {ID} {ID} …
|
选项 |
说明 |
ID
|
指定构成下一次重新启动的启动顺序的 GUID。 在此一次性启动过后,它将还原为默认启动顺序。
|
示例
以下命令在启动管理器显示顺序中设置三个操作系统条目:
Bcdedit.exe /displayorder {c84b751a-ff09-11d9-9e6e-0030482375e6} {c74b751a-ff09-11d9-9e6e-0030482375e4} {c34b751a-ff09-11d9-9e6e-0030482375e7}
以下命令在启动管理器显示顺序中设置两个操作系统条目和旧 Windows 加载器:
bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f}
以下命令在启动菜单显示顺序的最后添加由 GUID 表示的条目:
bcdedit.exe /displayorder {c84b751a-ff09-11d9-9e6e-0030482375e6}-addlast
如何删除启动项目
在命令提示符下键入:
bcdedit /delete ID [/f]
|
选项 |
说明 |
ID
|
指定要删除的启动项目的 GUID。如果不指定 ID,则删除当前启动项目 ID。
如果指定一个已知 GUID,则必须通过指定 /f 强制进行删除。例如:
bcdedit /delete {default} /f
|
示例
以下命令将列出所有操作系统加载器启动项目:
bcdedit /enum osloader
以下命令将列出所有启动管理器条目:
bcdedit /enum bootmgr
在运行 Windows Vista 的计算机上安装旧版 Windows 时如何修改 BCD
要在运行 Windows Vista 的计算机上安装旧版 Windows 操作系统,请使用以下过程。
在运行 Windows Vista 的计算机上安装旧版 Windows
- 安装旧版 Windows。
- 登录到旧版操作系统,并通过运行以下命令还原最新的启动管理器。Fixntfs.exe 将位于活动分区 fixntfs /lh 的 "boot 目录下。
- 通过指定以下内容,为旧版操作系统创建一个 BCD 条目。Bcdedit.exe 位于 Windows Vista 分区的 "Windows"System32 目录下。Description 是对旧版操作系统中新条目的描述。
Bcdedit /create {legacy} /d “Description”
Bcdedit /set {legacy} device boot
Bcdedit /set {legacy} path "ntldr
Bcdedit /displayorder {legacy} /addlast
- 重新启动计算机以使更改生效。
如何创建一个可从硬盘启动 WIM 映像的条目
要创建一个可启动 Windows 映像格式 (WIM) 映像的条目,您需要创建一个 OSloader 类型的条目,并带有指向启动分区的 RAMDISK 选项。为此,请使用以下过程。在此过程中,arcpath multi(0)disk(0)rdisk(0)partition(1) 是指计算机上的 C: 驱动器,Boot.wim 是一个常规 Boot.wim,其中 Winload.exe 位于该 WIM 映像的 System32 文件夹中。
创建一个可从硬盘启动 WIM 映像的条目
- 通过指定以下内容,在您的 BCD 存储中创建 {ramdisktoptions} 对象。Drive 应是包含该映像的驱动器。
bcdedit /create {ramdiskoptions} /d "Ramdisk options"
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=Drive
bcdedit /set {ramdiskoptions} ramdisksdipath "boot"boot.sdi
- 通过指定以下内容,创建新的启动应用程序条目:
bcdedit /create /d "Boot from WIM" /application OSLOADER
- 这将为新创建的条目返回一个标识符 (GUID)。此过程的其他部分将使用 {GUID} 指代该新条目。接下来指定以下内容:
bcdedit /set {GUID} device ramdisk=[c:]"sources"boot.wim,{ramdiskoptions}
bcdedit /set {GUID} path "windows"system32"winload.exe
bcdedit /set {GUID} osdevice ramdisk=[c:]"sources"boot.wim,{ramdiskoptions}
bcdedit /set {GUID} systemroot "windows
- 如果要引导到 Windows 预安装环境 (Windows PE),则还需要指定:
bcdedit /set {GUID} winpe yes
bcdedit /set {GUID} detecthal yes
- 继续指定以下内容,将新条目添加到显示顺序中:
bcdedit /displayorder {GUID} /addlast
如何更改特定条目的调试器设置
要覆盖特定调试器设置的全局条目,请键入以下命令之一。
注意
此命令不会为特定启动项目启用或禁用调试器。
- 要设置串行调试,请键入:
bcdedit /set {GUID} debugtype:serial
bcdedit /set {GUID} baudrate:Baudrate
bcdedit /set {GUID} debugport:Port
- 要设置 USB 调试,请键入:
bcdedit /set {GUID} debugtype:usbbcdedit /set {GUID} targetname:debugging
- 要设置 1394 调试,请键入:
bcdedit /set {GUID} debugtype:1394bcdedit /set {GUID} targetname:32
示例
以下命令将 c74b751a-ff09-11d9-9e6e-0030482375e4 的调试器设置设为以 115,200 的波特率在 com1 上串行调试:
Bcdedit /set {c74b751a-ff09-11d9-9e6e-0030482375e4} debugtype:serial
Bcdedit /set {c74b751a-ff09-11d9-9e6e-0030482375e4} baudrate:115200
Bcdedit /set {c74b751a-ff09-11d9-9e6e-0030482375e4} debugport:1