BCD 启动菜单
BCD 是 Boot Configuration Data 的缩写,即有关启动设置的数据。无论是以往 BIOS 启动模式(legacy)下的 ntldr 启动还是现在流行的 EFI 启动,XP 之后的 Windows 系统1都需要读出 BCD 文件存储的启动信息来引导启动。
编辑 BCD 菜单
在 CMD 中,我们可以使用bcdedit指令来编辑 BCD 菜单,但这显然是非常不直观的。为了方便编辑,我们在这里使用 Bootice 来进行操作。
使用 Bootice 编辑 BCD 菜单

打开 Bootice 后,我们选择 BCD 编辑页面,点击智能编辑模式。
如果想要编辑的不是当前系统的 BCD,比如想编辑 Windows 安装 U 盘中的 BCD,或是在 PE 模式下读取原系统的 BCD,则需要手动寻找 BCD 位置。通常情况下的 BCD 位置如下:
- BIOS 启动:
 - 
    
C:\boot\bcd - EFI 启动:
 - 
    
Z:\efi\microsoft\boot\bcd //Z盘代表ESP分区 

进入编辑界面后,我们可以看到在左侧列出了全部的引导项目,如果想增加引导系统,只需要点击添加即可,反之点击删除。在右侧显示的是当前选中的引导项目的详细参数。
在这里我们要修改如下几项:
- 
    
- 设备类型
 - 通常为 Partition 分区,如果你的系统装在 RamDisk 或者 VHD 上面,那么我想你的技术水平应该不需要参考这篇 Tutorial,在这里我就不详细说明了。
 
 - 
    
- 启动磁盘
 - 选择系统安装所在的硬盘。
 
 - 
    
- 启动分区
 - 选择 C 盘的分区。
 
 - 
    
- 菜单标题
 - 随便起一个自己看的懂的标题,例如
WIN10 EDU X64 
 
- 
    
- 启动文件
 - 这里注意,要根据启动方式选择对应的启动文件。
        
\windows\system32\boot\winload.exe // 对于BIOS启动的系统 \Windows\system32\winload.efi // 对于EFI启动的系统 
 - 
    
- 系统路径
 - 这里是统一的
        
\Windows 
 
全部修改完后记得保存。
编辑 WINPE U盘的 BCD
有的时候,我们希望 U 盘能同时启动 Windows 官方安装镜像和 PE 系统,当然你可以选择用 GRUB2 这种功能强大的工具达到这个目的,但是比较简单的办法就是直接编辑 BCD 文件。
首先,我们先把 Windows 安装镜像用软碟通写入 U 盘,这样我们就得到了一个纯净的 Windows 环境。
之后在 U 盘根目录建立WINPE目录2,之后把 WINPE 镜像中的有效成分WINPE.sdi和WINPE.wim拷入目录下。3
之后打开 Bootice,依次编辑两处 BCD:
- BIOS 启动:
 - 
    
BCD 位置:U:\boot\bcd - EFI 启动:
 - 
    
BCD 位置:U:\efi\microsoft\boot\bcd 
在左侧选择添加-添加 WIM 启动项

照着图片修改即可
- 
    
- 设备类型
 - 选择 WIM 启动项,这里自动是 RamDisk,WIM 在启动时被挂载到内存,所以用 RamDisk 很合理。
 
 - 
    
- 启动磁盘
 - 没有实际的硬盘,选择 WIM
 
 - 
    
- 启动分区
 - 无
 
 - 
    
- 设备文件
 - 即 WIM 文件,WINPE 包含的系统的所有文件
 
 - 
    
- SDI 文件
 - SDI 文件是系统部署映像,体积几百 KB,理解为配置文件即可。
 
 - 
    
- 菜单标题
 - 随便起一个自己懂的标题就行。
 
 - 
    
- 启动路径
 - 和 Windows 的配置一样,注意不同启动方式路径不同。
 
 - 
    
- 系统路径
 - 同样是统一的
\Windows 
 
修复 BCD
有的时候,因为一些操作(比如更换硬盘等),导致系统找不到 BCD 文件,表现为开机蓝屏报错如下。
Your PC needs to be repaired
The Windows Boot Configuration Data file is missing required information
File: \Boot\BCD
这时候我们就需要修复 BCD,方法有两种。
使用 Bootice 修复 BCD
进入 PE 环境运行 Bootice,按照上文介绍的配置方法,重新设置 BCD。如果发现 BCD 文件遗失,可以从 PE 的目录或者其他运行正常的 Windows 系统下复制一份 BCD 然后拷入相应的位置即可。
使用命令行修复 BCD
Windows 提供了一条bcdboot指令可以供我们用来修复 BCD,具体用法如下:
C:\Users\admin>bcdboot -help
Bcdboot - Bcd 启动文件创建和修复工具。
bcdboot.exe 命令行工具用于将关键启动文件复制到
系统分区以及创建新的系统 BCD 存储。
bcdboot <source> [/l <locale>] [/s <volume-letter> [/f <firmware>]] [/v]
                 [/m [{OS Loader ID}]] [/addlast] [/p] [/c]
  source     指定 Windows 系统根目录的位置。
  /l         指定在初始化 BCD 存储时使用的
             可选区域设置参数。默认值为“简体中文”。
  /s         指定一个可选的卷号参数,该参数用于指定
             要将启动环境文件复制到的目标系统
             分区。默认值为固件所标识的
             系统分区。
  /v         启用详细模式。
  /m         如果提供了操作系统加载器 GUID,则此选项可以将
             给定的加载器对象与系统模板合并,以生成
             可启动条目。否则,只合并全局对象。
  /d         指定应保留现有的默认
             Windows 启动条目。
  /f         与 /s 命令一起使用,指定目标系统分区
             的固件类型。<firmware> 的选项是 'UEFI'、
             'BIOS' 或 'ALL'。
  /addlast   指定 Windows 引导管理器固件条目
             应该最后添加。默认行为是首先添加
             它。
  /p         指定 Windows 引导管理器固件条目
             位置应予以保留。如果条目不存在,
             则将在第一个位置添加新条目。
  /c         指定不应迁移模板描述的
             任何现有对象。
示例: bcdboot c:\windows /l en-us
          bcdboot c:\windows /s h:
          bcdboot c:\windows /s h: /f UEFI
          bcdboot c:\windows /m {d58d10c6-df53-11dc-878f-00064f4f4e08}
          bcdboot c:\windows /d /addlast
          bcdboot c:\windows /p
一般我们只需要记住这两条:
BIOS 启动:
bcdboot C:\Windows /f bios
EFI 启动:
bcdboot C:\Windows /s Z: /f uefi
注意其中的Z:代表 ESP 分区,需要手动挂载到 Z 盘符。关于如何挂载 ESP 分区可以参考DISKPART指令挂载ESP分区。
参考链接:
编辑启动选项:
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/devtest/editing-boot-options
