从另一个链接加载 Windows 启动管理器?

从另一个链接加载 Windows 启动管理器?

是否可以使用 Windows 启动管理器来链式加载另一个 Windows 启动管理器?

例如,(如何)我可以使用C:\bootmgr读取的启动管理器C:\boot\BCD来链式加载另一个D:\bootmgr使用的启动管理器D:\boot\BCD

答案1

\boot\bcdBOOTMGR 将在它认为是活动启动分区的分区(通常是磁盘 0 上的活动分区)上查找配置单元。在 EFI 机器上,bootmgr 的 EFI 版本\boot\bcd将从 ESP(EFI 系统分区)加载,该分区始终为 FAT32,通常约为 100 MiB 左右。

然而,你的问题非常令人困惑。你说

内容是启动BCD链式加载另一个使用以下命令的启动管理器 D:\bootmgr启动盘\BCD

但接着说

嗯?如果可能的话,我会尽量避免开设两家 BCD 商店

在您给出的尝试实现的示例中,这两个不同的 BCD 文件不是位于两个不同的分区上吗?

所以我不确定你到底想做什么。如果你想让旧版 BOOTMGR 加载 EFI BOOTMGR 使用的相同 BCD 数据库,是的,这是可能的。你需要修改磁盘上的模拟引导记录(用于阻止不理解 GPT 的机器重新初始化磁盘和丢失数据的假 MBR)以指示至少存在两个分区,即 ESP 和 Windows 分区,其中 ESP 标记为活动。

这样,如果传统模式下的 BIOS(或不支持 UEFI 的 BIOS)尝试从具有修改后的模拟 MBR 的 GPT 磁盘启动您的机器,它将视 ESP 分区为“常规”启动分区并从中加载(通过其引导扇区,您需要确保使用或之类的工具正确写入bootsectbootrecBOOTMGR,而 BOOTMGR 则会读取\boot\bcd同一分区上的。

答案2

您希望第一个 bootmgr 加载辅助 bootmgr,而不是加载典型的 OS 引导加载程序之一

“如果有效”,您应该将以下条目添加到第一个 C:\boot\BCD

bcdedit /create /d "Chainloaded Bootmgr" /application BOOTSECTOR
bcdedit /set {ID} device partition=d:
bcdedit /set {ID}  path \bootmgr
bcdedit /displayorder {ID} /addlast

这应该会创建菜单项“Chainloaded Bootmgr”;触发时它应该从 D: 加载第二个 bootmgr

答案3

问题不清楚,但你可以尝试该工具EasyBCD 点击此处下载 EasyBCD! &VisualBCD 点击此处下载 VisualBCD

这些工具可帮助您编辑和修改引导加载程序。

答案4

用户 Pat 指定的方法对我有用。不幸的是,下载的 bootmgr 使用了旧的配置文件 (BCD)。

但是我发现 grub4dos 可以自动沿着链查找并加载 bootmgr。为此,您甚至不需要指定磁盘上的分区。

您将需要 BOOTICE、grub4dos 映像中的“grldr”以及 EasyBCD/bcdtool/Visual BCD,或者您可以使用命令行(Pat 用户方法)。

  1. 下载 grub4dos
  2. 将“grldr”解压到包含原始 bootmr 的分区的根目录
  3. 通过EasyBCD/bcdtool/Visual BCD/cmd添加BCD应用程序/bootsec条目,指定启动分区和路径/grldr
  4. 在 grldr 旁边,创建一个 menu.lst 文件并指定以下内容:
debug off
default 0 
timeout 30
graphicsmode -1 640:800

title find bootmgrD
find --set-root /bootmgrD
chainloader /bootmgrD
  1. 将 Boot、EFI 文件夹和 bootmgr 文件复制到所需分区,并将 bootmgr 重命名为 bootmgrD(或使用新名称创建此文件的副本)。
  2. 对于 BOOTICE 中的这个分区,指定 pbr“bootmgr”(尽管这可能是可选的)

您可以使用任何名称作为 bootmgr 而不是 bootmgrD。每个分区的名称必须是唯一的

相关内容