UEFI 的 BCD 系统存储设置
对于典型的部署方案,你不需要修改 BCD 存储。 本主题介绍 BCD 存储中可以修改的各项 BCD 设置。 在 UEFI 系统上,这包括以下启动应用程序的设置:
- Windows 引导管理器
- Windows Boot Loader
- Windows Memory Tester
以下部分将详细介绍其中每个启动应用程序的可用设置,以及如何修改 UEFI 系统的每个应用程序。
为简单起见,本部分中的 BCDEdit 示例将修改 BCD 系统存储。 若要修改另一个存储(例如 BCD-template 的副本),请在命令行中包含存储名称。
UEFI 的 Windows 启动管理器设置
Windows 启动管理器 ({bootmgr}
) 管理启动进程。 基于 UEFI 的系统包含固件启动管理器 Bootmgfw.efi,用于加载基于 NVRAM 中存储的变量的 EFI 应用程序。
Windows 启动管理器中 device
和 path
元素的 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 启动加载程序对象具有自身的标识符,该对象的 device
和 path
设置指示正确的分区和启动应用程序。
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 版本,则 osdevice
和 device
可以设置为不同的分区。BCD-template 将这两个元素设置为驱动器 C,这是典型值。 还可以显式设置 osdevice
和 device
值,如以下示例所示。 该示例还假设已将适用于 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 设置中的 device
和 path
元素指示正确的应用程序。
注意
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