如何告诉 Windows 启动管理器 (bootmgr) 加载并执行指定分区的第一个扇区 (chainload)?

如何告诉 Windows 启动管理器 (bootmgr) 加载并执行指定分区的第一个扇区 (chainload)?

我有 2 个旧式 MBR 分区(非 GPT、非 EFI):

  1. 一个“活动”分区,包含Windows 7 OSWindowsbootmgr启动管理器及其 BCD。
  2. 第二个分区包含一个奇特的非 Windows 操作系统,其内部有自己的引导加载程序代码分割引导记录(PBR/VBR)-第二个分区的第一个扇区(512 字节)。

我可以通过以下步骤创建启动菜单项,通过 Windows7 的启动管理器 (bootmgr) 成功启动 Exotic OS:

Copy the first sector of the Exotic OS' partition into the file named `exotic.bin` in the Windows7's filesystem.
Execute:
     bcdedit /create /d ExoticOS /application bootsector  
     bcdedit /set {**guid**} device partition=c:  
     bcdedit /set {**guid**} path \exotic.bin  

然而,这种启动方法并不完善,因为 Exotic OS 经常更新其自己的启动扇区(在其自己分区的第一个扇区中),然后该文件exotic.bin就会变得过时。

我试过:

bcdedit /create /d ExoticOS /application bootsector
bcdedit /set {**guid**} device partition=\Device\HarddiskVolume2

...这些命令已成功执行,但我不知道如何指定第一个扇区号在此分区上。

问题:如何指示 Windows 启动管理器 (bootmgr) 加载并执行 Exotic OS 的启动扇区,直接地来自第二个分区的第一个扇区 - 而不是来自过时的副本exotic.bin

答案1

在命令提示符下执行以下命令Windows 7

     bcdedit /create /d ExoticOS /application bootsector  
     bcdedit /set {**guid**} device partition=\Device\HarddiskVolume2
     bcdedit /set {**guid**} path :512
     bcdedit /displayorder {**guid**} /addlast

其中表示命令返回的花括号中的{* * guid * *}32 个字符,是安装 的分区的标识符。请参阅GUIDbcdedit /create ...\Device\HarddiskVolume2Exotic OS这个答案了解如何找出此分区标识符的指南。
该字符串:512表示“加载指定分区的前 512 个字节...并执行它”。

为了实现此功能,您必须使用bootmgr可用bootmgr这里

相关内容