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