grub 查找 windows 时出现问题。Windows 7 / Ubuntu 14.04

grub 查找 windows 时出现问题。Windows 7 / Ubuntu 14.04

所以我将从这个开始:http://paste.ubuntu.com/10720995/

好的,我在不同的硬盘上安装了 Ubuntu 14.04 和 Windows 7,如下所示:

sda:Ubuntu 14.04
sdb:Windows 7
sdc:额外存储(分区不良)

当我启动时,我想启动到 sda 上的 grub,启动信息脚本显示它在 sdc 上!(主要问题是 grub 找不到 windows)如果我没记错的话,我之前在 sdc 上安装了 Ubuntu,在 sda 上安装了 windows。这可以解释为什么这么乱。我想将 grub 从 sdc 移动到 sda,但 Boot Repair 不允许我这样做(它告诉我我有 GPT 和 SRS)。

我认为这是因为 sda1 和 sda2 分区。我想删除它们,但我仍然不太清楚自己在做什么,而且我不想意外损坏/擦除驱动器。所以,我想在光标闪烁之前寻求建议。

答案1

首先,磁盘设备文件名(/dev/sda等)可能会发生变化。它们可能会因为您物理移动磁盘、插入其他磁盘(甚至是外部设备)、驱动程序加载方式的变化、固件设置的变化甚至随机变化(通常是因为两个驱动程序可能在竞争先加载,而哪个驱动程序成功加载因启动而异)而发生变化。因此,不要太依赖您的设备文件名或依赖它们。

其次,您的启动配置不明确且复杂。使用启动信息脚本输出中的设备标识符:

  • /dev/sda使用 GPT 并且EFI 系统分区 (ESP),理论上,它包含 EFI 引导加载程序。我说“理论上”是因为引导信息脚本没有在您的 ESP 上找到任何引导加载程序文件。另一方面,有时引导信息脚本会遗漏一些东西,所以它们可能在那里。此外,efibootmgr在固件的 NVRAM 中发现了一个 Ubuntu GRUB 条目,所以很明显,您在某个时候以 EFI 模式安装了 Ubuntu。目前尚不清楚该条目是否仍然有效,但它确实存在。
  • /dev/sdb使用 MBR,有两个 NTFS 卷,其中包含 Windows 启动文件。因此,计算机似乎设置为以 BIOS 模式启动 Windows。这与 EFI 模式 Linux 启动不太兼容,尽管有办法让两者共存。
  • /dev/sdc使用 MBR,但使用 Windows逻辑磁盘管理器 (LDM)配置分层于其上。你应该不是尝试直接在 Ubuntu 中访问您的/dev/sdc*分区,更不用说在该磁盘上安装 Ubuntu。如有必要,您可能能够通过/dev/mapper目录中的设备文件访问该磁盘。如果您需要做更多的事情,您必须从 LDM 转换为普通 MBR 分区。您可以使用各种第三方 Windows 分区工具来执行此操作。更奇怪的是,您已经在 的 MBR 中安装了 GRUB /dev/sdc

我想到两种办法可以解决这个问题:

方法 1:

  1. 物理上拔掉插头/dev/sdb/dev/sdc
  2. 启动 Ubuntu 实时 CD 或实时 USB。
  3. 使用GParted partedgdiskBIOS 启动分区/dev/sda(您的 GPT 磁盘)上。
  4. 将 GRUB 安装到/dev/sda。原则上,如果你愿意,你应该能够使用 Boot Repair 来执行此操作。但请注意,如果你在 EFI 模式下运行 Boot Repair,它可能会尝试安装 EFI 版本的 GRUB,但你不会这样做不是想要。检查名为 的目录/sys/firmware/efi以确定您的启动模式;如果存在,则说明您已在 EFI 模式下启动,如果不存在,则说明您已在 BIOS 模式下启动。如果您处于错误的模式,则需要重新启动并在固件的启动管理器中选择正确的启动选项,或者重新配置固件以不支持 EFI 模式启动。(恐怕每台机器的细节差别很大。)
  5. 关闭计算机并重新连接另外两个磁盘。
  6. 使用刚刚安装的 GRUB 启动 Linux。(您可能需要调整固件中的默认启动顺序。)
  7. 运行update-grub。这将导致它检测到您的 Windows 安装并使您能够在下次重新启动时从 GRUB 启动 Windows。

此方法的优点是,所有东西都以单一模式(BIOS/CSM/legacy)启动。与 EFI 模式启动相比,整个社区更了解该启动模式。另一方面,您将弄乱磁盘和引导加载程序配置,而无法保证更改确实有效,因此最终可能会让事情变得更糟。

方法 2:

  1. 下载我的 USB 闪存驱动器版本rEFInd 启动管理器。
  2. 准备一个装有 rEFInd 的 USB 闪存驱动器。
  3. 安装 USB 闪存驱动器并编辑EFI/BOOT/refind.conf其中包含的文件:取消注释该scanfor行并确保它hdbios在选项中。您可能还需要取消注释该uefi_deep_legacy_scan选项,但我建议暂时保留原样,并且仅在您无法通过几个步骤启动 Windows 时才使用它。
  4. 如有必要,请重新配置计算机固件以启用 EFI 模式启动。您可能还需要禁用“快速启动”选项。(它可能已经以这种方式设置。)
  5. 启动 rEFInd USB 闪存驱动器。运气好的话,它会显示启动 Ubuntu 的选项,以及一到三个带有灰色菱形图标的选项,用于在 BIOS 模式下启动。其中一个应该可以启动 Windows。测试以确保您可以同时启动 Ubuntu 和 Windows。
  6. 如果一切正常,请通过 rEFInd 启动 Linux,将 rEFInd 安装到硬盘上(并且不是通过灰色菱形旧选项之一)并安装下载页面上注明的 Debian 软件包或 PPA 版本。您需要/boot/efi/EFI/refind/refind.conf像之前在 USB 闪存驱动器上所做的那样进行编辑。如果 rEFInd 中的选项太多,您可以使用dont_scan_volumesdont_scan_files从菜单中删除多余的选项。

这种方法的优点是,在通过 rEFInd 的 USB 启动完全测试永久配置之前,您不会对其进行任何更改,因此几乎没有使情况恶化的风险。但它假设您的计算机具有 EFI 功能并且提供 CSM。它还假设您的 Windows 引导加载程序完好无损/dev/sdb。(引导信息脚本说它在那里,但它是否有效是另一回事。)

相关内容