除非其他硬盘在 UEFI shell 中“断开连接”,否则 Windows 7 不会加载

除非其他硬盘在 UEFI shell 中“断开连接”,否则 Windows 7 不会加载

我有三个磁盘,一个 GPT 分区包含 Windows 7 和 Debian,另一个 MBR 分区包含 CentOS,还有一个 MBR 分区为空。

它以前可以工作(使用 rEFIt 加载 Windows 启动管理器),但现在在第二个驱动器上安装 CentOS 和 OpenIndiana 后,Windows 无法启动。徽标会短暂显示,然后是文本模式滚动条“正在加载文件”,然后返回 rEFIt 菜单。

唯一能使它工作的方法就是进入 UEFI shell 并运行,disconnect XX其中 XX 是其他硬盘的设备句柄(通过运行获得devices)。这让我认为引导加载程序对 Windows 分区的位置感到困惑。

是否有关于 Windows UEFI 引导加载程序如何查找 Windows 分区的信息,或者是否有我可以打开的日志记录来帮助解决此问题?

答案1

我也有 G75VW。我添加了一个固态硬盘sda并移除了原来的硬盘。我使用备份 DVD(共 4 张)安装并运行了原始 Windows 7。然后我在驱动器托架 2(左侧)中重新安装了原始硬盘。

我通过覆盖 BIOS(UEFI)中的启动设备启动到 Linux Mint 13 Mate DVD,并为分区选择了“其他内容”。

您将需要一个 1 MB 的“biosgrub”类型分区,也称为“为 BIOS 启动区域保留”。接下来创建一个 202 MB 的 EXT4 类型分区,挂载在/boot。添加您的交换分区(我将其设置为与我的 RAM 相同的大小,但我对这个问题不太了解。

然后是您常用的分区(一个/分区,或者您可能喜欢拆分//home无论您的偏好如何都可以)。

然后进行常规安装,然后事情就变得不对劲了。

这一页展示如何安装并使用引导修复来完成 UEFI 系统(如 G75VW)上 Ubuntu 的正常双启动安装。请注意:我在实时模式下使用了 Linux Mint DVD,而不是 Ubuntu 12.10 CD(无论如何都无法启动,出现黑屏问题)。

尖端:

  • 启动修复中的“推荐”解决方案确实在我的 G75VW 上检测到了 UEFI。
  • 确保在单击“前进”之前让终端命令完成
  • 对于是否删除 Grub2 的问题,我选择了“否”,但看起来它可能已经被删除了。

重启后,我能够看到通常的启动菜单。Mint 加载正常。

答案2

我也在 ASUS G75VW 上卸载了 Ubuntu,我想对上一篇文章做一些澄清:

如果删除任何 NTFS 分区,Windows 7 将无法启动,因为它将删除至少一个卷(在我的情况下是 C:,D:,E:和 F:),并且 Windows 7 似乎在启动时会跟踪它们。

恢复系统也无法启动。

解决方案是缩小 NTFS 分区而不是删除它们。如果您已经删除了一个分区,则可以使用 gparted 重新创建它,然后 Windows 将再次启动。另一个解决方案可能是从 Windows 中删除 NTFS 分区,但这需要检查。

其他说明:

ASUS G75VW 使用 EFI 启动系统。这意味着您必须安装 64 位版本的 Ubuntu(32 位版本不支持 EFI)并确保以 UEFI 模式启动 liveCD/USB。这可以从 bios 中完成,也可以Esc在启动时按下 来完成。

安装后,我必须手动向 GRUB 添加一个条目,以便使用 EFI 系统从 grub 菜单启动 Windows。此处解释了该过程。

无论如何,始终可以通过Esc在启动时按下来启动 Windows。

答案3

我遇到了类似的问题,使用的是华硕 G75VW,第一个 SATA 磁盘上装有 Windows 7,带有 GPT 和 UEFI,第二个 SATA 磁盘上装有 Linux Mint(没有 GPT)。经过几个小时的搜索和试验,我找到了一个巧妙的修复方法,这样我就不必重新安装 Windows。

我使用 gparted 缩小了第二个磁盘上的 Linux 分区,并添加了一个 20MB 的小 NTFS 分区(因为当此磁盘上有 NTFS 分区时,Windows 可以工作)。

之后,我在第一个磁盘上启动了 Windows 7,运行了启动修复(这次成功了),然后正常启动了 Windows。现在,在启用第二个磁盘的情况下,它就可以正常工作了。

现在,我终于可以通过 UEFI 启动菜单启动 Windows 7 或 grub->Linux。经过这么多麻烦,我现在不想尝试通过 Grub 2 在 GPT 上启动 Windows 7!这么多麻烦,只是为了能玩一些 Windows 游戏!

这真是令人烦恼,我花了很长时间才找到解决办法。

我认为问题是由于:

  1. Windows 有故障(而且他们懒得修理),参见第 3 点。
  2. Windows 安装时已连接多个 SATA 驱动器
  3. Windows 并不总是按顺序注册 SATA 驱动器。我用 diskpart 看到了这个。
  4. 在启动过程中,Windows 希望在它视为“第一个”的磁盘(这是我的第二个 SATA 磁盘)上找到一些 Windows 分区,即使它是空的。
  5. 或许微软故意忽视修复这个错误,因为大多数用户都会责怪 Linux。

问题不是由以下原因引起的:

  1. 第二张磁盘上的任何东西 - 当该磁盘被移除时它都可以工作。
  2. Linux/grub 2 安装 - 我告诉 Linux 不要在第一张磁盘上安装任何东西。
  3. 第二个磁盘上有 Windows MBR 或 EFI 启动文件或任何内容。除了我创建的空 NTFS 分区外,第二个磁盘上没有任何 Windows 的迹象。

为了更彻底地解决这个问题,我可能会花更多的精力重新格式化磁盘,在 BIOS/UEFI 中禁用第二个 SATA 磁盘(或物理拔下它),然后从头开始重新安装 Windows 7。我想它不会以错误的方式注册磁盘。我太懒了,不想尝试这个,但我想它会起作用。

我想知道如何完美地修复这个问题。我猜必须以某种方式修改 Windows 注册表,以便 Windows 磁盘顺序与 SATA 磁盘顺序匹配,这是理所当然的。

相关内容