Windows 8 和 Ubuntu 双启动问题

Windows 8 和 Ubuntu 双启动问题

我知道很多人在双启动 Linux 和 Windows 8 机器时遇到问题,因为 UEFI 太垃圾了。事实上,去年我也遇到过类似的问题。

在 Ubuntu 旁边安装 Windows 8 后,我只能启动 8

该链接说明了我当时如何解决问题。我现在遇到了问题。我弄乱了我的操作系统,决定从头开始重新加载所有内容。我重新安装了 Windows 8,然后获取了一份 Ubuntu 14.04(之前我使用的是 12.04)。我遇到了同样的问题,Windows 8 强制自行启动,但之前解决我问题的方法不再有效。我从 live cd 运行了以下命令:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)

我收到各种错误,说 boot-repair 不是有效命令。我终于能够使用以下命令运行 boot-repair:

sudo add-apt-repository -y ppa:yannubuntu/boot-repair
sudo sed 's/trusty/saucy/g' -i /etc/apt/sources.list.d/yannubuntu-boot-repair-trusty.list
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

我收到一条关于 UEFI 已打开的警告(在我完成所有操作以确保它已禁用之后),然后出现了启动修复错误。以下是它生成的消息:

http://paste.ubuntu.com/7852448/

我注意到,如果我停止正常启动过程并从启动菜单中选择 ubuntu,我就可以启动到 Ubuntu,但这是我能做到的最好的了。

我也尝试从 Windows 运行这个命令:

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

我快要死了。你们能提供的任何帮助都将是极好的。谢谢!

答案1

尝试引导修复你可以从这里获得它 -http://sourceforge.net/projects/boot-repair-cd/files/安装于CD/DVD/USB从它启动,当它要求你进行 32/64 位会话时,如果你的电脑是 32 位的,请选择 32 位;如果是 64 位的,请选择 64 位;然后,如果它要求你进行更新,请单击“否”,然后,当它完成扫描时,请单击建议修复

答案2

根据您的 Boot Repair 输出,特别是efibootmgr它显示的输出,它应该现在就可以正常工作了。(需要注意的是:没有证据表明您的 ESP 上有任何 EFI 引导加载程序;但 Windows 正在启动的事实意味着这一定是引导修复遗漏,所以我不相信这个证据。)它不工作的事实强烈表明您的固件严重损坏。您之前的问题表明您有一台 HP 笔记本电脑,众所周知,许多 HP 都有这种严重损坏的 EFI。因此,我的第一个建议是与 HP 联系,看看是否有固件更新。如果有,请应用它并使用bcdeditWindows 中的命令重试;这最有可能奏效。

另外,请注意,如果您已禁用安全启动,则指定grubx64.efiwith是合适的。如果安全启动处于活动状态,则bcdedit必须指定shimx64.efi,而不是grubx64.efishimx64.efi如果文件已安装,则在安全启动处于非活动状态时指定也会起作用,因为即使在非安全启动系统上通常也是如此。

还有一点:如果你还没有这样做,你必须禁用视窗快速启动功能,如上所述这里(以及其他地方)。如果该功能保持启用状态,则可能导致共享分区(包括引导加载程序所在的 ESP)上的文件损坏。这可能是 Boot Repair 没有在 ESP 上检测到任何引导加载程序的原因,并且可以想象这是导致您出现问题的原因。

如果遵循此建议不起作用,那么您有两个选择:

  • 将您的笔记本电脑卖给只想运行 Windows 的人,然后用这笔钱购买没有损坏的东西。目前,这是我的第一个建议;制造商有足够的时间来修复损坏的 EFI,而许多制造商没有这样做,这是对您(他们的客户)的不尊重。有些制造商(如华硕和联想)的 EFI 更有可能正常工作。较新的型号也比旧型号更有可能正常工作。
  • 重命名你的 Ubuntu 引导加载程序(EFI\ubuntu\grubx64.efiEFI\ubuntu\shimx64.efi在 ESP 上;或者你可以重命名另一个 EFI 引导加载程序您可以使用 GRUB中的引导加载程序 ( ) 替换 Microsoft 的引导加载程序 ( EFI\Microsoft\Boot\bootmgfw.efi) 并调整引导加载程序配置。使用 GRUB 手动执行此操作比较棘手,但 Boot Repair 中有一个选项可以完成此工作。它位于高级选项中,名称类似于“备份和替换 EFI 引导加载程序文件”。 (我不记得确切的措辞。)这是一两年前的默认设置,但在大多数情况下它有点过头了,并且会在 EFI 未损坏的计算机上导致大量新问题,因此它不再是默认设置。您可能需要使用它并承担后果,或者以这种方式安装其他引导加载程序。

答案3

好吧,信不信由你,我修好了它。我重新运行了几次引导修复程序,直到它真正起作用……引导修复程序要求您复制和粘贴几行,其中一行失败了。我将命令分成几行,而不是串在一起,这样出错的几率就小了……然后 Grub 就可以正常加载了……

谢谢大家的帮助!

答案4

以下是让 HP 笔记本电脑在 Windows 8/8.1 和 Ubuntu 14.04.02 之间实现双启动的关键步骤和信息。这台笔记本电脑是相当现代的 Pavilion g7-2215dx。

  1. 这台笔记本电脑(可能还有大多数现代 HP 笔记本电脑)的 BIOS 有一个 UEFI 启动菜单,当该菜单出现时,您可以按 ESC 然后按 F9 来访问它。如果在 EFI 分区中正确设置了节并且磁盘布局正确,这个菜单就能正常工作。(即:如果您允许 Ubuntu 将正确的更改加载到 EFI 分区,或者您运行了启动修复,并且分区位于正确的位置)不幸的是,Ubuntu 安装程序假定如果存在 UEFI,则系统只有一个 Windows 分区而没有启动菜单。事实上,这些 HP 机器有一个隐藏的恢复分区,该分区在 UEFI 启动存储中列出,Windows 启动菜单未出现的原因是 HP 出厂时将启动菜单的超时设置为 0。(卑鄙的伎俩)Ubuntu 安装程序似乎不理解已经存在的多重启动配置,因此它不能正确创建条目。

  2. 此 BIOS 在启动时快捷方式为 {bootmgr} 而不是 {fwbootmgr}。但是,F9 命令确实可以正确转到 {fwbootmgr} 这就是修改 {bootmgr} 的常见技巧有效的原因。

  3. HP 确实将允许安全 grub 引导加载程序运行的密钥放入 BIOS 中,因此可以保持安全启动打开并安装 Ubuntu。遗憾的是,由于 grub 中的错误,您无法保持安全启动打开并进行双重启动,因为在安全启动模式下,当 grub 将控制权转移到 Windows 引导加载程序时,该加载程序的密钥似乎不匹配。您可以保持安全启动打开并仅安装 Ubuntu。或者,您可以保持安全启动打开并使用 F9 键手动选择 grub 或 Windows,而不必考虑让它直接启动到 grub。

  4. 您不得允许 Ubuntu 的默认安装程序将 grub 安装到 /dev/sda。它必须将引导加载程序安装到 /dev/sda2(或任何 EFI 分区)为 Ubuntu 安装创建逻辑分区而不是主分区可能也是一个好主意。

  5. 另一个关键是,如果您更改任何内容的启动优先级,它将干扰启动。这意味着,如果在安装之前您将 BIOS 更改为从 USB 密钥或 CDROM 启动,然后安装,当 Ubuntu 创建 UEFI 条目时,它将根据该启动顺序进行操作。如果您完成安装然后将 BIOS 更改为从硬盘启动,它会弄乱一切。当您更改 BIOS 启动顺序时,BIOS 会在 EFI 分区上的 UEFI 启动存储中进行更改。这些更改通常不正确。

  6. 完成 Ubuntu 安装并且笔记本电脑重新启动进入 Windows 后,进入管理员命令提示符并运行以下命令:

    bcdedit /set {bootmgr} path \EFI\Ubuntu\shimx64.efi  
    bcdedit /set {bootmgr} displaybootmenu no  
    
  7. EasyBCD 2.2 无法与这些机器上的 EFI 分区兼容 - 作者或 EasyBCD 显然没有这些机器来测试,他的软件做出了一些错误的假设,无法正确解释 EFI 分区上的 UEFI 存储。在测试期间,我多次使用此实用程序完全破坏了双启动磁盘。我不建议在任何情况下使用它!!!另外,请注意,如果 EFI 分区被破坏,Windows 恢复 DVD 将无法修复双启动 UEFI 系统 - 您必须重新格式化 - 它们不会触及该分区!!!!我甚至不认为 Windows 备份会这样做。块备份实用程序可能像 Macrium Reflect。

  8. 到目前为止,我发现处理 EFI 分区的最佳工具是 Windows 下的 bcdedit。运行 bcdedit /? 和 bcdedit /enum ALL /v 和 bcdedit /enum /? 等等 - 基本上运行 /? 以关闭 bcdedit 的所有选项,您将学到很多有关启动工作原理的知识。

  9. 如果您稍后加载 Windows 升级(即从 Windows 8 升级到 Windows 8.1),较新的 Windows 安装程序将与 EFI 混在一起并再次禁用双启动。您可能无法恢复双启动。我这样做后收到的一个错误是来自启动修复,它说 grub 距离磁盘开头太远。显然,Windows 8.1 更新移动了 EFI 分区。在我重新格式化它之前,我一直无法让那台机器启动到 grub。

  10. 这些机器有“智能”BIOS - 它们怎么会智能呢?它们之所以智能是因为它们会读取 EFI 存储,尝试执行启动菜单,如果失败,它们会被硬编码以启动 Windows。因此,结果是,如果您在 EFI 存储中犯了错误,您将不会收到有用的错误消息(例如找不到错误命名的文件等),它只会启动 Windows。它们旨在减少搞砸 PC 的用户打来的支持电话。而且,如果他们检测到他们认为是 EFI 存储中的错误条目,他们有时会在 POST 期间将其清除并用他们认为正确的条目替换它。

顺便说一句,工厂恢复 DVD 可能无法让您对磁盘进行完美分区以实现双重启动。它们通常会对分区位置进行硬编码。

总之,EFI 分区是比以前的启动方案一个巨大的进步,它将在未来继续使用,所以你最好习惯它,并了解它。HP 机器都有 HP 恢复分区和 Windows 恢复分区,可以通过各种 F 键组合和 Windows 8 及更高版本的选择来访问,这是微软“零安装媒体”计划的一部分,他们试图让所有 PC 制造商不要为他们的机器提供恢复 CD。(主要作为反盗版措施)这些可启动分区都在 EFI 分区中正确设置,问题是机器的 BIOS 都采用不同的方法来读取 EFI,许多实用程序(如 EasyBCD、Ubuntu 安装程序本身和 HP BIOS)无法正确解释 EFI 中的多重启动设置,当它们进行更改时,它们会把事情搞砸。但是,您通常可以在 Windows 下使用 bcdedit 修复问题,但您必须了解 EFI,因此需要阅读。

相关内容