Ubuntu 13.04在UEFI系统上以Windows Boot Manager作为主要加载器

在我的旧笔记本电脑(传统BIOS,MBR磁盘)上,完全可以开始工作:

  • 我打开电脑,看到Windows启动管理器

  • 我使用EasyBCD(或BootPart,或其他东西)为BCD菜单添加一个选项,允许我启动到GRUB,然后进入Ubuntu

无论是在UEFI还是传统模式下,我无法想象如何在我的新笔记本电脑(UEFI,GPT磁盘)上执行此操作。

目前我已经在我的笔记本电脑上安装(甚至启动!)Ubuntu,但只能借助外部GRUB(在USB闪存盘上)。

如何在UEFI笔记本电脑上的Windows启动管理器中添加GRUB作为选项?

(不,我不想更改我的主引导加载程序。所以不,我不想用GRUB覆盖Windows引导加载程序。)

AFAIK,你不能。 据我所知,Windows引导加载程序不提供任何方法来启动非Windows EFI引导加载程序。 不过,我可能错了。 我承认我对Windows启动加载程序的了解有限。

相反,您可以为Linux配置任意数量的EFI引导加载程序和引导管理器,以处理引导选择作业。 当一切正常时,GRUB可以完成这项工作; 但是从版本13.04开始,Ubuntu在安装时没有正确设置GRUB以进行双启动。 EFI错误还可能导致其他问题。 要解决Ubuntu GRUB配置问题,最简单的两个解决方案:

  • 在系统上运行Boot Repair 。 如果这样做,它将重新安装并重新配置GRUB,以便它可以启动Windows。
  • 安装我的rEFInd启动管理器。 通过在Ubuntu下安装Debian软件包可以轻松完成。 (确保您的ESP安装在/boot/efi 。)安装后,rEFInd应该可以直接启动到Windows或直接启动到Linux,绕过GRUB。

请注意,这些解决方案都不能完全取代Windows引导加载程序; 它们只是在Windows引导加载程序之前运行另一个引导程序(GRUB或rEFInd)。 如果你愿意,你可以在这里停止阅读,但有些背景可能有助于理解这一点:

引导多引导计算机时, 引导管理器为您提供了一种在两个或更多操作系统之间进行选择的方法,通常是通过菜单。 大多数EFI包括一个笨拙但内置的启动管理器。 rEFInd也是一个启动管理器,GRUB包含一个启动管理器。 相反, 引导加载程序加载操作系统内核和任何相关文件,并启动内核运行。 EFI不包括引导加载程序,因此每个操作系统都必须提供一个。 GRUB是Linux的引导加载程序(但不适用于Windows),除了作为引导管理器之外,Linux内核(自3.3.0版本起)可以作为自己的引导加载程序,Windows提供自己的引导加载程序。 rEFInd 不是引导加载程序; 要启动Linux,它依赖于EFI存根加载程序或其他一些启动加载程序来加载内核。

因此,不可能用GRUB替换Windows引导加载程序,因为GRUB不是Windows引导加载程序。 但是,GRUB可以使用其启动管理器function链式加载到Windows启动加载程序。

毕竟可以将.efi启动加载器添加到Windows启动管理器中,但至少在我的主板上是一个非常糟糕的主意,因为这种改变是永久性的 – 例如。 从Windows启动管理器启动到Ubuntu后,您将始终启动到Ubuntu,因为它直接编辑UEFI启动配置。

也可以通过手动编辑BCD文件来实现此目的。 您可以检查此问题的已接受答案: Windows 8.1 UEFI x64无法启动UEFI映像以获取更多详细信息。

场景是Windows启动管理器是UEFI上的第一个启动选择。

您始终可以使用固件中的引导设备选择键(DELL上的F12),该键为您提供所有已安装操作系统的列表作为引导选项。

如果启动过程太快,您可以始终将Windows启动菜单设置为文本样式,超时为10秒,然后使用(DELL上的ESC键,应该是常见的)转出到固件启动选择。

如果您使用的是Windows 7/8 / 8.1并希望直接启动到Linux(Ubuntu),则可以使用名为BootNext的工具,该工具允许直接启动到UEFI上的任何已安装的操作系统(Windows,Linux)。