bootrec /rebuildbcd 常无效是因为未在目标系统对应版本的 Windows PE/恢复环境中运行,且需确保系统分区被正确挂载并分配盘符;UEFI 双系统启动顺序由固件 NVRAM 决定,非单一引导文件控制。
为什么 bootrec /rebuildbcd 常常没用?
执行 bootrec /rebuildbcd 后提示“成功添加了 0 个分区”,基本说明 windows boot manager 根本没识别到你系统盘上的 windows 安装——不是命令错了,而是启动环境不对。它必须在「对应目标系统的 windows pe 或恢复环境」中运行,且该环境要能正确挂载目标 windows 分区(比如 c:\)。直接在另一个 windows(如 win10)里开 cmd 运行,或从老旧 win7 恢复盘启动,大概率失败。
实操建议:
- 用当前想修复的 Windows 版本对应的安装介质(如 Win11 ISO 制作的 U 盘)启动,选「修复计算机 → 疑难解答 → 高级选项 → 命令提示符」
- 先用
diskpart+list volume确认 Windows 所在分区号和盘符(注意:恢复环境里C:很可能不是你日常用的系统盘) - 若系统分区没分配盘符,用
assign letter=Z:临时挂载,再对Z:运行bcdboot Z:\Windows /s S: /f UEFI(S:是 EFI 系统分区,通常很小、FAT32、有EFI\Microsoft\Boot\bootmgfw.efi)
双系统下 bootmgr 和 grub 谁在管启动?
UEFI 模式下,真正决定“第一眼看到什么菜单”的是固件启动项顺序,不是某个单一引导文件。Windows 安装时会把自己的启动项(Windows Boot Manager)写入 EFI 分区,并注册进固件 NVRAM 启动列表;Linux 安装时(尤其用 grub-install)也会注册自己的启动项(如 ubuntu)。两者并存,但谁排第一,取决于 efibootmgr -v(Linux)或 bcdedit /enum firmware(Windows)看到的顺序。
常见错误现象:
- 明明装了 Ubuntu,开机却直进 Windows —— 因为 Windows 的启动项在 NVRAM 中排第一
- 改完
bcdedit /default {id}还是不生效 —— 这个命令只改 Windows 内部 BCD,默认不影响固件启动顺序
解决路径分两步:先确认当前固件启动顺序,再调整。Linux 下用 sudo efibootmgr -o 0001,0000 可强制把 Ubuntu(0001)设为第一;Windows 下需用 bcdedit /set {fwbootmgr} displayorder {current} {other-id} /addfirst,其中 {other-id} 是 Linux 启动项的 GUID(从 bcdedit /enum firmware 查)。
如何让 Windows 引导菜单显示 Linux 选项?
Windows 自带的 bootmgr 默认只认 Windows 系统,不解析 GRUB 或 Linux 内核。强行让它显示 Linux,本质是“骗”它加载一个指向 GRUB 的 EFI 应用。这需要手动向 BCD 添加一个自定义启动项,指向 EFI 分区里的 grubx64.efi(或 shimx64.efi)。
操作要点:
- 确保 EFI 分区已挂载(如
S:),且S:\EFI\ubuntu\grubx64.efi存在(路径依发行版而异) - 以管理员身份运行 CMD,执行:
bcdedit /create /d "Ubuntu" /application bootsector
→ 记下返回的{guid}bcdedit /set {guid} device partition=S:bcdedit /set {guid} path \EFI\ubuntu\grubx64.efibcdedit /displayorder {guid} /addlast - ⚠️ 注意:
/application bootsector是关键,用osloader会失败;路径必须用反斜杠,且不能带盘符前缀(即写\EFI\...,不是S:\EFI\...)
设置默认启动项后仍不生效?检查这三点
最常被忽略的是「启动模式混用」:BIOS(Legacy)和 UEFI 不能共存于同一套引导逻辑。如果 Windows 是 UEFI 安装,而你用 bootrec /fixmbr(仅适用于 Legacy),不仅无效,还会破坏 EFI 分区结构。
排查清单:
- 进 BIOS/UEFI 设置界面,确认「Boot Mode」是 UEFI(非 Legacy/CSM),且「Secure Boot」状态与你安装的系统一致(Ubuntu 通常需关闭,Win11 需开启)
- 运行
msinfo32,看「BIOS 模式」显示「UEFI」还是「传统」——必须和实际安装方式一致 - 检查 EFI 分区是否损坏:
diskpart → list volume → select volume=X → assign letter=Z: → Z:,然后dir Z:\EFI看是否有Microsoft和ubuntu(或其他发行版)目录;若整个EFI目录为空或缺失,说明 EFI 分区未被正确使用或已格式化
UEFI 双系统引导的复杂性不在命令本身,而在启动链路上每个环节(固件 → EFI 分区 → 启动项注册 → BCD 或 grub.cfg 解析)都必须对齐。错一个,就表现为“设置无效”。











