总结
无法在 Windows 启动管理器中添加 Grub 启动项。
但可以使用第三方启动管理器(如 Rod Smith 的 rEFInd)实现类似功能。安装步骤在此有详细说明要旨
但 Acer 笔记本电脑(已在 3 台 Acers 上测试)显然忘记启动项,并且尽管 ESP 中存在 refind/grub,但仅加载 Windows 启动管理器。
Acer 笔记本电脑的 UEFI 菜单有两个隐藏设置,只有为 UEFI 菜单设置密码后才可用。然后,您可以将任何第三方启动管理器标记为 TRUSTED,而无需使用 RSA 密钥对启动管理器进行签名(如要点和许多其他地方所示)。如果设置了密码,您也可以禁用安全启动。如果启用了 UEFI,则 UEFI 只会加载 TRUSTED 启动管理器,而所有其他启动管理器都会被忽略,因此只有 Windows 可以启动,我们错误地认为 UEFI 会忘记启动条目。
另一种方法是禁用 UEFI,但是如果有解决方案,为什么要降低安全性呢?
长话短说
我的旧笔记本电脑使用 MBR 方案,我能够在 Ubuntu 的分区上(而不是在 MBR 上)安装 grub,然后在 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 说因为我启用了安全启动,所以某些功能不受支持。我可以看到为另一个 Windows 操作系统添加启动项的选项,但对于 Linux 操作系统,相同的选项呈灰色。
我想保留 Windows 启动管理器和 GRUB,但将它们放在不同的分区上,这样我就可以像在旧笔记本电脑上一样从 Windows 启动管理器转到 GRUB。
为什么?
- 我计划升级到 18.04 LTS 和/或将操作系统附带的内核更新为主线内核
- 对于和我使用相同笔记本电脑的兄弟姐妹来说,GRUB 屏幕相当吓人
更新 1:UEFI 启动菜单(从 F12 键开始)仅显示一个适用于 Windows 的条目。如果 grub 存在于 /boot 或 /EFI/Ubuntu 中,它应该会显示在启动菜单中。我尝试过在没有 /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 的博客,并使用以下方法修复了 grub 未显示在 UEFI 启动菜单中的问题启动管理器。我现在使用 GRUB(通过启用 SecureBoot 的 shim)作为默认引导加载程序。但我的问题仍然没有得到解答。如何将 Grub/Ubuntu 引导加载程序条目添加到 Windows 启动管理器?Windows 启动管理器是否支持这样的配置?我现在很怀疑,因为当 Windows 启动管理器为默认设置时,它会在每次启动时删除 EFI 中的 GRUB 启动项。
另一件值得注意的事情是,我没有在 Windows 中禁用快速启动,可能是因为 Ubuntu 安装程序无法安装 GRUB(或者它安装了 grub,但由于快速启动而首先加载的 Windows 启动管理器在启动时将其删除)
更新 3:我重新启动 Windows,它删除了 GRUB 启动项并再次将其设置为默认启动项。现在我回到了原来的位置。
更新 4:我从 Windows 配置了启动顺序bcd 编辑现在启动顺序在启动过程中保持不变。我不得不禁用安全启动。在 UEFI 中设置管理员密码后,安全启动切换按钮不再变灰。每次进入 UEFI 菜单时,我都必须输入该密码。这可能意味着在禁用安全启动时,任何应用程序都无法修改 UEFI 设置。我不认为我的 UEFI 有缺陷,它非常先进,比其他供应商更安全
答案1
首先,您应该意识到,现代基于 EFI 的计算机的启动方式与旧式基于 BIOS 的计算机完全不同。我怀疑您是在错误的 BIOS 模式思维模型下工作,这会让您误入歧途。我建议阅读:
- Adam Williamson 的博客文章介绍了 EFI 的工作原理—— 本页描述了 EFI 模式启动背后的理论。
- Superuser.com 上关于 BIOS 和 EFI 启动之间的区别的问答—— 这提供了前面内容的基础,但更加简洁。
- 我的关于在 EFI 系统上安装 Linux 的页面—— 与 Adam Williamson 的博客相比,此页面对 EFI 模式启动进行了更实用的介绍。
- Ubuntu 社区 wiki 中有关 UEFI 的条目-- 这个页面有点脱节,但却是针对 Ubuntu 的 EFI 及其问题最具体的介绍。
不可否认,这是一份很长的阅读清单。如果你只有时间阅读其中一篇,我会选择第一篇,或者第二篇。第三篇和第四篇是更实用的安装教程,但你已经有了一个可以运行的系统,尽管它的工作方式并不像你想要的那样。
对于本次讨论特别重要的是,在 EFI 下,引导加载程序作为普通文件存储在EFI 系统分区 (ESP)。默认启动的引导加载程序存储在 NVRAM 中,可以通过sudo efibootmgr -v
Ubuntu 显示,也可以通过 其他选项 进行修改efibootmgr
。(输入man efibootmgr
详细信息,使用通常简洁的手册页样式。)您的/boot
分区包含 Linux 内核、GRUB 配置和支持文件,以及其他一些与引导相关的工具;但主要的 GRUB 二进制文件存储在 ESP 上,它在 Ubuntu 中grubx64.efi
安装在。/boot/efi
好了,Windows需要Windows 启动加载程序和 Ubuntu需要Linux 引导加载程序。后者默认为 GRUB 2,但可以是其他几种Linux 的 EFI 引导加载程序。靴子的任务加载器是将操作系统内核加载到内存中并开始运行。
一只靴子经理,另一方面,显示菜单或以其他方式为用户提供选择要启动的操作系统的方法。 GRUB 和 Windows 引导加载程序都提供引导管理器功能以及引导加载程序功能;但有些程序只提供引导加载程序功能或只提供引导管理器功能。事实上,所有 EFI 都提供某种引导管理器,尽管在某些情况下它太原始以至于毫无用处。
我听说可以配置 Windows 启动管理器来启动 GRUB,即使在 EFI 模式下也是如此;但我不知道具体如何操作。如果您想研究这种方法,您可以在 Windows 论坛上询问。
如果您不喜欢 GRUB UI,另一种选择是研究另一个启动管理器。对于配置后并不令人生畏的东西,我自己的rEFInd 启动管理器可能符合您的喜好。它呈现图形视图(尽管它仍然是键盘驱动的),因此它可能比文本模式的 GRUB 更不吓人。安装后,您可能需要调整 rEFInd 的配置。请参阅其配置和安全启动特别是文档。