我知道很多人在双启动 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 联系,看看是否有固件更新。如果有,请应用它并使用bcdedit
Windows 中的命令重试;这最有可能奏效。
另外,请注意,如果您已禁用安全启动,则指定grubx64.efi
with是合适的。如果安全启动处于活动状态,则bcdedit
必须指定shimx64.efi
,而不是grubx64.efi
。shimx64.efi
如果文件已安装,则在安全启动处于非活动状态时指定也会起作用,因为即使在非安全启动系统上通常也是如此。
还有一点:如果你还没有这样做,你必须禁用视窗快速启动功能,如上所述这里(以及其他地方)。如果该功能保持启用状态,则可能导致共享分区(包括引导加载程序所在的 ESP)上的文件损坏。这可能是 Boot Repair 没有在 ESP 上检测到任何引导加载程序的原因,并且可以想象这是导致您出现问题的原因。
如果遵循此建议不起作用,那么您有两个选择:
- 将您的笔记本电脑卖给只想运行 Windows 的人,然后用这笔钱购买没有损坏的东西。目前,这是我的第一个建议;制造商有足够的时间来修复损坏的 EFI,而许多制造商没有这样做,这是对您(他们的客户)的不尊重。有些制造商(如华硕和联想)的 EFI 更有可能正常工作。较新的型号也比旧型号更有可能正常工作。
- 重命名你的 Ubuntu 引导加载程序(
EFI\ubuntu\grubx64.efi
或EFI\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。
这台笔记本电脑(可能还有大多数现代 HP 笔记本电脑)的 BIOS 有一个 UEFI 启动菜单,当该菜单出现时,您可以按 ESC 然后按 F9 来访问它。如果在 EFI 分区中正确设置了节并且磁盘布局正确,这个菜单就能正常工作。(即:如果您允许 Ubuntu 将正确的更改加载到 EFI 分区,或者您运行了启动修复,并且分区位于正确的位置)不幸的是,Ubuntu 安装程序假定如果存在 UEFI,则系统只有一个 Windows 分区而没有启动菜单。事实上,这些 HP 机器有一个隐藏的恢复分区,该分区在 UEFI 启动存储中列出,Windows 启动菜单未出现的原因是 HP 出厂时将启动菜单的超时设置为 0。(卑鄙的伎俩)Ubuntu 安装程序似乎不理解已经存在的多重启动配置,因此它不能正确创建条目。
此 BIOS 在启动时快捷方式为 {bootmgr} 而不是 {fwbootmgr}。但是,F9 命令确实可以正确转到 {fwbootmgr} 这就是修改 {bootmgr} 的常见技巧有效的原因。
HP 确实将允许安全 grub 引导加载程序运行的密钥放入 BIOS 中,因此可以保持安全启动打开并安装 Ubuntu。遗憾的是,由于 grub 中的错误,您无法保持安全启动打开并进行双重启动,因为在安全启动模式下,当 grub 将控制权转移到 Windows 引导加载程序时,该加载程序的密钥似乎不匹配。您可以保持安全启动打开并仅安装 Ubuntu。或者,您可以保持安全启动打开并使用 F9 键手动选择 grub 或 Windows,而不必考虑让它直接启动到 grub。
您不得允许 Ubuntu 的默认安装程序将 grub 安装到 /dev/sda。它必须将引导加载程序安装到 /dev/sda2(或任何 EFI 分区)为 Ubuntu 安装创建逻辑分区而不是主分区可能也是一个好主意。
另一个关键是,如果您更改任何内容的启动优先级,它将干扰启动。这意味着,如果在安装之前您将 BIOS 更改为从 USB 密钥或 CDROM 启动,然后安装,当 Ubuntu 创建 UEFI 条目时,它将根据该启动顺序进行操作。如果您完成安装然后将 BIOS 更改为从硬盘启动,它会弄乱一切。当您更改 BIOS 启动顺序时,BIOS 会在 EFI 分区上的 UEFI 启动存储中进行更改。这些更改通常不正确。
完成 Ubuntu 安装并且笔记本电脑重新启动进入 Windows 后,进入管理员命令提示符并运行以下命令:
bcdedit /set {bootmgr} path \EFI\Ubuntu\shimx64.efi bcdedit /set {bootmgr} displaybootmenu no
EasyBCD 2.2 无法与这些机器上的 EFI 分区兼容 - 作者或 EasyBCD 显然没有这些机器来测试,他的软件做出了一些错误的假设,无法正确解释 EFI 分区上的 UEFI 存储。在测试期间,我多次使用此实用程序完全破坏了双启动磁盘。我不建议在任何情况下使用它!!!另外,请注意,如果 EFI 分区被破坏,Windows 恢复 DVD 将无法修复双启动 UEFI 系统 - 您必须重新格式化 - 它们不会触及该分区!!!!我甚至不认为 Windows 备份会这样做。块备份实用程序可能像 Macrium Reflect。
到目前为止,我发现处理 EFI 分区的最佳工具是 Windows 下的 bcdedit。运行 bcdedit /? 和 bcdedit /enum ALL /v 和 bcdedit /enum /? 等等 - 基本上运行 /? 以关闭 bcdedit 的所有选项,您将学到很多有关启动工作原理的知识。
如果您稍后加载 Windows 升级(即从 Windows 8 升级到 Windows 8.1),较新的 Windows 安装程序将与 EFI 混在一起并再次禁用双启动。您可能无法恢复双启动。我这样做后收到的一个错误是来自启动修复,它说 grub 距离磁盘开头太远。显然,Windows 8.1 更新移动了 EFI 分区。在我重新格式化它之前,我一直无法让那台机器启动到 grub。
这些机器有“智能”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,因此需要阅读。