如何将 Windows 7 启动文件 (bootmgr, ...) 移动到不同的驱动器?

red*_*ber 10 windows-7 grub multi-boot ubuntu

我想要一个双启动设置。所以首先我在一个硬盘驱动器的第一个分区(我们称之为 HDD1)上安装了 Windows 7,然后我在 HDD1 的第二个分区上安装了 Ubuntu 9.10。不幸的是,这不起作用(它绕过了 GRUB2 并直接进入了 Windows)。我决定重新安装 Ubuntu,那时我注意到(出于某种原因)Windows 决定将其引导文件放在另一个硬盘驱动器上(我们称之为 HDD3)。

我想解决这个问题 - 我想将引导文件从 HDD3 移动到 HDD1。它可能有助于解决我的双启动问题,但即使它没有,根据我的经验,它也会在路上省去很多麻烦。我怎样才能做到这一点?我将假设它不像复制文件那么容易,但我想被证明是错误的:)

red*_*ber 17

通过一些谷歌搜索,我找到了以下解决方案(我使用 HDD1 和 HDD3 来表示我关心的两个硬盘,如上面我的问题中所引用的):

  1. 引导文件由一个名为Boot的文件夹和一个名为bootmgr的应用程序组成。它们是系统文件,因此通常是隐藏的。您必须使它们可见。
  2. 将它们都从 HDD3 复制到 HDD1。它会抱怨无法复制两个文件:BCDBCD.log,这两个文件都在Boot文件夹中。后者不重要(它只是一个日志文件),可以忽略;前者将在下一步中复制。
  3. 使用管理员权限打开命令提示符。键入以下命令:bcdedit /export HDD1:\Boot\BCD,其中 HDD1 是目标驱动器的驱动器号。就我而言, HDD1 是C,所以命令是bcdedit /export C:\Boot\BCD.
  4. 现在,您必须编辑BCD文件,以使条目全部正确。我使用了Windows 7 附带的bcdedit程序,但还有其他程序。我听说EasyBCD相当不错(而且免费),但最新版本并不完全支持 Windows 7。我相信支持 Windows 7 的新版本很快就会推出。首先,我在命令提示符(具有管理员权限)上导航到HDD1\Boot并键入bcdedit /store BCD /enum ALL. 我使用/store开关指定当前目录中的BCD文件 - 省略此开关将使用我认为的默认值,即在 HDD3 上。此命令列出BCD文件中的所有条目。
  5. 我扫描的条目,和原来的条目{bootmgr},并{memdiag}都指向HDD3。当然,我希望它们指向 HDD1。因此,我以以下形式发出命令:bcdedit /store BCD /set [entry_name] device partition=HDD1:. 由于我的机器上的HDD1 是C,我将键入以下内容来设置{bootmgr}条目:bcdedit /store BCD /set {bootmgr} device partition=C:.

就是这样。最后一步是通过Disk Management(从计算机管理访问)使 HDD1处于活动状态 - 它在我的系统上已经处于活动状态,因此我无需执行任何操作。

现在,至于奇怪的双启动问题,原来我忘记了我已经物理切换了硬盘驱动器的顺序。因此,BIOS 启动顺序不正确(它试图首先从HDD3启动,而不是从 HDD1 启动)。是的,这对我来说是一个非常愚蠢的错误:)