UEFI 的 BCD 系统存储设置

对于典型的部署方案,你不需要修改 BCD 存储。 本主题介绍 BCD 存储中可以修改的各项 BCD 设置。 在 UEFI 系统上,这包括以下启动应用程序的设置:

以下部分将详细介绍其中每个启动应用程序的可用设置,以及如何修改 UEFI 系统的每个应用程序。

为简单起见,本部分中的 BCDEdit 示例将修改 BCD 系统存储。 若要修改另一个存储(例如 BCD-template 的副本),请在命令行中包含存储名称。

UEFI 的 Windows 启动管理器设置

Windows 启动管理器 ({bootmgr}) 管理启动进程。 基于 UEFI 的系统包含固件启动管理器 Bootmgfw.efi,用于加载基于 NVRAM 中存储的变量的 EFI 应用程序。

Windows 启动管理器中 devicepath 元素的 BCD 设置指示固件启动管理器。 名为“BCD-template for Windows”的模板包含 Windows 启动管理器的以下设置。

## Windows Boot Manager

identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager

设备设置

device 元素指定包含 Windows 启动管理器的卷。 对于 UEFI 系统,Windows 启动管理器的 device 元素设置为系统分区卷号。 若要确定正确的卷号,请使用 Diskpart 工具查看磁盘分区。 以下示例假设系统包含单个具有多个分区的硬盘驱动器,其中包括驱动器号为 S 的系统分区。

以下 Diskpart 命令选择磁盘 0,然后列出该磁盘上的卷的详细信息,包括这些卷的驱动器号。 它显示卷 2 为系统分区。

DISKPART> select disk 0
DISKPART> list volume

  Volume ###  Ltr  Label   Fs     Type        Size     Status     Info
  ----------  ---  ------  -----  ----------  -------  ---------  ------
  Volume 0     D           NTFS   Partition    103 GB  Healthy
  Volume 1     C           NTFS   Partition     49 GB  Healthy    Boot
  Volume 2     S           FAT32  Partition    200 MB  Healthy    System

如果未为系统分区分配驱动器号,请使用 Diskpart assign 命令分配一个。 以下示例假设系统分区为卷 2,并分配 S 作为其驱动器号。

Diskpart
select disk 0
list volume
select volume 2   // assuming volume 2 is the system partition
assign letter=s

确定系统分区卷后,将 Windows 启动管理器的 device 元素设置为相应的驱动器号。 以下示例将 device 设置为驱动器 S。

Bcdedit /set {bootmgr} device partition=s:// system partition

提示

如果先前使用 Diskpart 获取了驱动器号,然后重启了电脑,请在运行此命令之前使用 Diskpart 再次检查驱动器号。 驱动器号可能会根据环境而变化,因此请确保设置正确的分区。

路径设置

path 元素指定 Windows 启动管理器应用程序在该卷上的位置。 对于 UEFI 系统,path 指示固件启动管理器,其路径为 \EFI\Microsoft\Boot\Bootmgfw.efi

可以通过枚举存储中的值来确认 BCD-template 的路径是否正确,如下所示:

bcdedit /store bcd-template /enum all

若要将 path 显式设置为 \EFI\Microsoft\Boot\Bootmgfw.efi,请使用以下命令。

Bcdedit /set {bootmgr} path \efi\microsoft\boot\bootmgfw.efi

其他设置

应将 Windows 启动管理器设置为 UEFI 固件显示顺序中的第一项,如以下示例所示。

Bcdedit /set {fwbootmgr} displayorder {bootmgr} /addfirst

此外,应指定 Windows 启动管理器显示顺序中的第一个 Windows 启动加载程序应用程序。 以下示例演示如何将指定的 Windows 启动加载程序放在显示顺序的最前面。

Bcdedit /set {bootmgr} displayorder {<GUID>} /addfirst

在上面的示例中,<GUID> 是指定的 Windows 启动加载程序对象的标识符。 下一部分将更详细地介绍此标识符。

注意

装有多个操作系统的多启动系统具有 Windows 启动加载程序的多个实例。 Windows 启动加载程序的每个实例具有自身的标识符。 可将默认 Windows 启动加载程序 ({default}) 设置为其中的任一标识符。

Windows 启动加载程序设置

BCD 存储至少包含 Windows 启动加载程序的一个实例,并可以选择性地包含多个实例。 一个单独的 BCD 对象代表每个实例。 每个实例加载一个已安装的 Windows 版本,该版本采用该对象的元素指定的配置。 每个 Windows 启动加载程序对象具有自身的标识符,该对象的 devicepath 设置指示正确的分区和启动应用程序。

BCD-template for Windows 具有单个 Windows 启动加载程序对象,该对象具有以下设置。

## Windows Boot Loader

identifier              {9f25ee7a-e7b7-11db-94b5-f7e662935912}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Microsoft Windows Server
locale                  en-US
inherit                 {bootloadersettings}
osdevice                partition=C:
systemroot              \Windows

此 Windows 启动加载程序的标识符为 {9f25ee7a-e7b7-11db-94b5-f7e662935912}。 可以在系统上使用此 GUID,也可以让 BCDEdit 工具为你生成新的 GUID。

若要简化 BCDEdit 命令,可将 BCD 系统存储中的某个 Windows 启动加载程序指定为默认加载程序。 然后,可以使用标准标识符 ({default}) 来代替完整的 GUID。以下示例将适用于 EFI 的 Windows 启动加载程序指定为默认启动加载程序(假设它使用 BCD-template 中的标识符 GUID)。

Bcdedit /default {9f25ee7a-e7b7-11db-94b5-f7e662935912}

设备和 OSDevice 设置

以下元素指定关键位置:

  • device 元素指定包含启动应用程序的分区。
  • osdevice 元素指定包含系统根目录的分区。

对于适用于 EFI 的 Windows 启动加载程序,这两个元素通常都设置为 Windows 系统分区的驱动器号。 但是,如果启用了 BitLocker 或计算机上安装了多个 Windows 版本,则 osdevicedevice 可以设置为不同的分区。BCD-template 将这两个元素设置为驱动器 C,这是典型值。 还可以显式设置 osdevicedevice 值,如以下示例所示。 该示例还假设已将适用于 EFI 的 Windows 启动加载程序指定为默认启动加载程序对象。

Bcdedit /set {default} device partition=c:
Bcdedit /set {default} osdevice partition=c:

路径设置

Windows 启动加载程序的 path 元素指定启动加载程序在该卷上的位置。 对于 UEFI 系统,path 指示适用于 EFI 的 Windows 启动加载程序,其路径为 \Windows\System32\Winload.efi

可以通过枚举存储中的值来确认 BCD-template 的 path 值是否正确。 还可以显式设置 path 值,如以下示例所示。

Bcdedit /set {default} path \windows\system32\winload.efi

Windows 内存测试程序设置

Windows 内存测试程序 ({memdiag}) 在启动时运行内存诊断。 应用程序 BCD 设置中的 devicepath 元素指示正确的应用程序。

注意

Intel Itanium 计算机不包含 Windows 内存测试程序,且不需要 {memdiag} 设置。

BCD-template for Windows 具有以下设置。

## Windows Memory Tester

identifier              {memdiag}
device                  partition=\Device\HarddiskVolume1
path                    \boot\memtest.exe
description             Windows Memory Diagnostic

设备设置

对于 UEFI 系统,Windows 内存测试程序的 device 元素设置为系统分区驱动器号。 以下示例假设系统分区为驱动器 S,如前面示例中使用的那样。

Bcdedit /set {bootmgr} device partition=s:  // system partition

路径设置

path 元素指定 Windows 测试管理器在 device 元素指定的卷上的位置。 对于 UEFI 系统,path 指示应用程序的 EFI 版本 (\EFI\Microsoft\Boot\Memtest.efi)。

可以通过枚举存储中的值来确认 BCD-template 的 path 值是否正确。 还可以使用 BCDEdit 工具显式设置 path 值,如以下示例所示。

Bcdedit /set {memdiag} path \efi\microsoft\boot\memtest.efi