Windows 修复引导

适用场景:Windows 开机直接进入恢复模式、黑屏或提示找不到引导文件(多出现在双系统 EFI 分区被覆盖、ESP 分区被格式化之后)。你会学到在 WinPE 环境下用 bcdboot 重建 UEFI 启动项的方法,以及 BCDBoot 命令的工作原理。

PE 环境下使用 cmd 命令修复

  1. 选择优盘的 WinPE 启动盘启动系统。
  2. 使用 DG 分区软件,可看到 Esp 分区,然后右键菜单选择分配盘符。这样可以挂载引导分区。
  3. 格式化已经分配盘符的 esp 分区。
  4. 以管理员身份打开 cmd 执行以下命令:
bcdboot C:\Windows /s F: /f uefi /l zh-cn

各参数的具体含义:

c:\windows 系统安装目录,打开我的电脑,查看你的系统是安装在那个盘,就输入相应的盘符和目录。
/s S: 指定esp分区所在磁盘,小编指定ESP分区为t盘。
/f uefi 指定启动方式为uefi,注意之间的空格一定要输入。
/l zh-cn 指定uefi启动界面语言为简体中

Bcdboot 命令的原理及作用

在 win8/10 系统中有一条 BCDboot.exe 命令,它是一种快速设置系统启动分区或修复系统启动环境的命令行工具。BCDboot.exe 命令是通过从已安装的 Windows 系统文件夹中复制一小部分启动环境文件来设置/修复系统的。BCDboot 还会在系统分区上创建引导配置 BCD 文件,该文件存储了启动引导项,可让您选择引导已安装的 Windows。

当系统无法启动时,用 U 盘或光盘启动 Windows PE 环境、或者使用 win8/10 的高级修复模式启动到命令符环境(推荐),然后运行 BCDboot 命令来修复损坏的系统。BCDboot 命令通常在 %WINDIR%\System32 文件夹内,它运行后从计算机上已有的 Windows 映像复制一套启动环境文件到启动分区(GPT)/目录(MBR)中。

这些启动环境文件包括:从已安装的系统 %WINDIR%\boot\efi 文件夹和 %WINDIR%\System32\boot 文件夹复制到系统启动分区中。在 UEFI+GPT 环境下,BCDboot 将文件复制到固件所标识的默认系统启动分区(ESP)。另外,BCDboot 还使用 %WINDIR%\System32\Config\BCD-Template 文件为模板,在系统启动分区上创建新的 BCD(启动菜单)文件,并初始化 BCD 启动环境文件。可以在 BCD-Template 文件中定义特定的 BCD 设置(需要 BCD 文件编辑器)。

在基于 BIOS 的系统上,系统分区是使用主引导记录 (MBR) 磁盘格式的磁盘上的活动分区。BCDboot 会在系统分区上创建 \Boot 目录,并将所有需要的引导环境文件都复制到此目录中。

在基于 UEFI(统一可扩展固件接口) 的系统上,EFI 系统分区是使用 GUID 分区表 (GPT) 磁盘格式的磁盘上的系统启动分区(ESP)。BCDboot 会创建 \Efi\Microsoft\Boot 目录,并将所有需要的引导环境文件都复制到此目录中。

BCDboot 命令行格式:

BCDBOOT source [/llocale] [/svolume-letter] [/v] [/m [{OS Loader GUID}]]

验证与自查

  1. 重启后出现 Windows Boot Manager 引导项,能正常进入 Windows
  2. ESP 分区中存在 \EFI\Microsoft\Boot\bootmgfw.efi 文件
  3. 进入系统后运行 bcdedit /enum 能看到 {bootmgr} 与系统引导项
  4. 双系统用户修复后确认 efibootmgr 中 Windows Boot Manager 与 Linux 引导项并存

参考