BCD 启动菜单
编辑 BCD 菜单
使用 Bootice 编辑 BCD 菜单
编辑 WINPE U盘的 BCD
修复 BCD
使用 Bootice 修复 BCD
使用命令行修复 BCD
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
[/m [{OS Loader ID}]] [/addlast] [/p] [/c]
source 指定 Windows 系统根目录的位置。
/l 指定在初始化 BCD 存储时使用的
可选区域设置参数。默认值为“简体中文”。
/s 指定一个可选的卷号参数,该参数用于指定
要将启动环境文件复制到的目标系统
分区。默认值为固件所标识的
系统分区。
/v 启用详细模式。
/m 如果提供了操作系统加载器 GUID,则此选项可以将
给定的加载器对象与系统模板合并,以生成
可启动条目。否则,只合并全局对象。
/d 指定应保留现有的默认
Windows 启动条目。
/f 与 /s 命令一起使用,指定目标系统分区
的固件类型。
'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
XP 之前的系统启动信息存储在 Boot.ini 文件中。 ↩
当然如果你想的话可以把这个文件夹改成任何名字,只需要在后续操作中改成相应目录即可。 ↩
同样,如果你的PE不叫这个名字,你只需要找到同样后缀名的两个文件,然后重命名即可。 ↩