在UEFI双启动配置中从Windows启动管理器启动到GRUB

TL; DR

在Windows启动管理器中添加Grub启动项是不可能的。
但是使用像Rod Smith的rEFInd这样的第三方启动管理器可以实现类似的function。 在这个要点中很好地解释了安装步骤
但是Acer笔记本电脑(在3个Acers上测试) 显然忘记了启动条目,只有Windows启动管理器加载,尽管ESP中存在refind / grub。
Acer笔记本电脑的UEFI菜单有两个隐藏设置,只有在为UEFI菜单设置密码时才可用。 然后,您可以将任何第三方启动管理器标记为TRUSTED,而无需使用RSA密钥对启动管理器进行签名(如要点和其他许多地方所示)。 如果设置了密码,您也可以禁用安全启动。 如果启用了UEFI,则UEFI仅加载TRUSTED引导管理器,而忽略所有其他引导管理器,因为只有Windows引导,我们错误地认为UEFI会忘记引导条目。
另一种方法是禁用UEFI,但为什么在有解决方案的时候会降低安全性呢?

长话故事

我的旧笔记本电脑使用MBR方案,我能够在Ubuntu的分区上安装grub(而不是在MBR上),然后在Windows启动管理器中为grub添加了启动条目。 这使我能够保持Windows启动管理器以及grub。

我的新笔记本电脑配备了预装了UEFI的Windows 10。 我使用以下分区安装了Ubuntu Gnome 17.04-

/boot ext4 1GB / (root) ext4 25GB /home ext4 400GB 

我以为这会在/ boot上安装grub(可能有,我不知道)

安装成功

我重新启动进入Windows并运行EasyBCD 2.3(最新版),在Windows启动管理器中为grub添加启动项。 但那个选择是灰色的。 EasyBCD说,因为我启用了安全启动function,所以不支持某些function。 我可以看到为另一个Windows操作系统添加启动项的选项,但是相同的选项对于Linux操作系统是灰色的。

我想保留Windows启动管理器和GRUB,但是在不同的分区上,以便我可以像在旧笔记本电脑中那样从Windows启动管理器转到GRUB。

为什么?

  1. 我打算升级到18.04 LTS和/或更新OS发送的内核到主线内核
  2. 对于同样使用笔记本电脑的兄弟姐妹来说,GRUB屏幕非常可怕

更新1 :UEFI启动菜单(来自F12键)仅显示一个用于Windows的条目。 如果/ boot或/ EFI / Ubuntu中存在grub,它应该出现在启动菜单中。 我尝试重新安装没有/ boot分区,但仍然没有运气。

编辑:这是在i5-5200U上运行的Acer V3-574G-54VY。 系统信息显示 –

 BIOS Version : Insyde Corp V1.35, 30-11-2015 BIOS Mode : UEFI 

它带有UEFI固件(系统信息中的“BIOS版本”)V1.1。 两个月前我将它更新为V1.35。

更新2:我关注@RodSmith的博客,使用efibootmgr修复了未在UEFI启动菜单中显示的grub。 我现在使用GRUB(通过Shim with SecureBoot Enabled)作为默认的引导加载程序。 但我的问题仍然没有答案。 如何将Grub / Ubuntu引导加载程序条目添加到Windows启动管理器? Windows启动管理器是否支持此类配置? 我现在有疑问,因为当Windows启动管理器是默认设置时,它会在每次启动时删除EFI中的GRUB启动项。

另一件值得注意的事情是,我没有在Windows中禁用快速启动可能是因为它Ubuntu安装程序无法安装GRUB(或者它安装了grub,但是由于快速启动而首先加载的Windows启动管理器,在启动时将其删除)

更新3:我重新启动到Windows并删除了GRUB引导条目并再次使其自身默认。 现在我回到原来的位置。

更新4:我从Windows bcdedit配置了启动顺序,现在启动顺序在启动过程中持续存在。 我不得不禁用安全启动。 在UEFI中设置超级用户密码后,无法进行安全启动切换。 每次我转到UEFI菜单时都要输入密码。 这可能意味着当禁用安全启动时,任何应用都无法修改UEFI设置。 我不认为我的UEFI是错误的,它比其他供应商更先进,更安全

您应首先了解现代基于EFI的计算机以与旧的基于BIOS的计算机完全不同的方式启动。 我怀疑你是在不正确的BIOS模式心理模型下工作,这会导致你误入歧途。 我建议阅读:

  • Adam Williamson关于EFI如何工作的博客文章 – 本页描述了EFI模式启动背后的理论。
  • 有关Superuser.com上BIOS和EFI启动之间差异的问答 – 这提供了前面的基础知识,但更简洁。
  • 我在EFI系统上安装Linux的页面 – 这个页面是比Adam Williamson的博客更实用的EFI模式启动介绍。
  • UEFI上的Ubuntu社区wiki条目 – 这个页面有点脱节,但是对于EFI及其问题,它是Ubuntu特定的介绍。

这无疑是一个很长的阅读清单。 如果你有时间只有一个,我会选择第一个,或者可能是第二个。 第三个和第四个是更实用的安装教程,但你已经有了一个工作系统,虽然它没有按照你想要的方式工作。

对于此讨论特别重要的是,在EFI下,引导加载程序作为普通文件存储在EFI系统分区(ESP)中。 默认情况下启动的引导加载程序存储在NVRAM中,可以通过Ubuntu中的sudo efibootmgr -v显示,并使用其他选项修改为efibootmgr 。 (以通常的简洁手册页样式输入man efibootmgr以获取详细信息。)您的/boot分区包含Linux内核,GRUB配置和支持文件以及一些其他与引导相关的工具; 但主要的GRUB二进制文件grubx64.efi存储在ESP上,它安装在Ubuntu的/boot/efi中。

除此之外,Windows 需要 Windows启动加载程序,而Ubuntu 需要 Linux启动加载程序。 后者默认为GRUB 2,但可以是Linux的其他几种EFI引导加载程序。 引导加载程序的任务是将OS内核加载到内存中并开始运行。

引导管理器 OTOH显示菜单或以其他方式为用户提供选择要启动的OS的方式。 GRUB和Windows引导加载程序都提供引导管理器function以及引导加载程序function; 但是有些程序仅提供引导加载程序function或仅提供引导管理器function。 事实上,所有EFI都提供某种启动管理器,虽然在某些情况下它是如此原始,以至于它没用。

我听说即使在EFI模式下也可以配置Windows启动管理器来启动GRUB; 但我不知道如何做到这一点的细节。 如果您想调查这种方法,可以在Windows论坛上询问。

如果您不喜欢GRUB UI,另一种方法是查看另一个启动管理器。 对于一旦配置后非恐吓的东西,我自己的rEFInd启动管理器可能是你喜欢的。 它呈现了一个图形视图(虽然它仍然是键盘驱动的),因此它可能不像文本模式GRUB那样令人生畏。 您可能希望在安装后调整rEFInd的配置。 特别参见其配置和安全启动文档。