UEFI引导和BCD启动修复

理论

概念理解

  • UEFI
    UEFI菜单是固件(firmware)的一部分,它是现代计算机系统中的一个更先进的替代传统BIOS的接口。它提供了一个图形化或文本界面的启动管理器,允许用户选择从哪些设备或操作系统启动。
  • BCD
     BCD菜单是Windows操作系统的一部分,由bcdedit命令管理。它存储在BCD存储(Boot Configuration Data store)中,定义了Windows如何启动,包括启动多个操作系统的选项、启动参数等。

引导启动过程

  • UEFI启动:当电脑启动时,UEFI固件启动并查找所有EFI分区。
  • EFI分区选择:UEFI基于其配置或用户选择,决定从哪个EFI分区启动。
  • EFI引导信息:UEFI加载EFI分区上的启动加载程序(如bootmgfw.efi),这是由EFI分区的引导信息指导的。
  • BCD启动信息:启动加载程序然后读取BCD文件,BCD存储了如何启动各种操作系统的具体信息,包括启动参数、操作系统路径等。
  • 启动系统:基于BCD中的配置,启动加载程序启动选择的操作系统。

常见问题

修复EFI引导

  • 现象:启动黑屏永久转圈
    • 原因:读取引导系统文件失败
  • EFI引导修复
    • 创建:EFI-FAT32分区并分配盘符
    • 格式化:format H: /FS:FAT32
    • 重建:bcdboot C:\windows /s H: /f UEFI 或用windows引导修复指定efi效果一样
  • MBR引导修复
    • 用bootice修复分区引导PBR选bootmgr,再修复硬盘MBR即可

硬盘改为移动引导

  • 改造方案,保留原直插 bcd条目,新增usb guid条目
    • 用bootice工具,选择I盘bcd,新增一条启动项,指向一样的系统目录
    • 查看BCD菜单:bcdedit /store I:\EFI\Microsoft\Boot\BCD /enum all
bcdedit /store I:\EFI\Microsoft\Boot\BCD /copy {5b230f5b-ec32-11ef-9700-d162f58c607e} /d "Windows 11 USB 2230"

主要命令

bootrec

# bootrec 是用于修复启动问题的一个工具,主要用于恢复环境。通常是在Windows恢复环境(WinRE)下进行,因为这些命令可能需要直接访问硬盘的启动扇区。

bootrec /fixmbr - 修复MBR主引导记录
bootrec /fixboot - 修复启动扇区
bootrec /scanos - 扫描并列出所有Windows安装
bootrec /rebuildbcd - 重建BCD

bcdedit

# bcdedit 是 Windows 下的一个命令行工具,用于管理启动配置数据(Boot Configuration Data, BCD)。

# {identifier} 是一个由bcdedit /enum 命令返回的GUID

bcdedit /enum - 查看启动条目
bcdedit /copy {current} /d "gpd win11 on 2230" - 复制当前启动项并创建新的启动条目
bcdedit /default {identifier} - 默认启动条目
bcdedit /delete {identifier} - 删除条目
bcdedit /timeout 30 - 启动超时
bcdedit /export C:\BCD_Backup - 导出
bcdedit /import C:\BCD_Backup - 导入
bcdedit /set {bootmgr} displaybootmenu yes - 设置启动菜单选项
mountvol - 查看分区GUID

bcdboot 

# bcdboot 用于设置系统分区上的启动环境,它从Windows安装目录复制必要的启动文件。

bcdboot C:\Windows /s E: /f ALL - 复制c盘win启动文件到目标系统盘
bcdboot C:\Windows /s E: /f UEFI - 指定启动加载路径