我刚刚更改了 GRUB2 的启动顺序。我的电脑上安装了三个操作系统。我有 Windows 8.1、Ubuntu Linux 15.04 和 Mint Linux 17.2。我遵循了 Marve 的回答:如何更改 GRUB 启动顺序?
问题是,它一开始就失败了!我在进行更改时启动了 Ubuntu。我使用了名称引用而GRUB_DEFAULT='Windows 8'
不是索引号,并且只处理/etc/default/grub
文件。然后我发出updated-grub
并重新启动。我的 Windows 位于启动菜单的中间某处,Ubuntu 在底部,Mint 在顶部。当启动菜单屏幕上的延迟时间用完时,Mint 启动了,而不是 Windows。
然后我重新启动并重新引导到 Ubuntu,以确保我的更改仍然存在,/etc/default/grub
并且确实如此。我还注意到我还有第三个grub~
文件,以及我的grub.bak
备份文件。
然后我启动 Mint 并在那里做了同样的更改,然后重新启动。果然,它成功了!所以我现在在启动菜单屏幕上默认选择了 Windows,并且它会在时间用完时启动。这就是我想要的。
但让我困惑的是,为什么我必须在 Mint 中这样做?为什么它在 Ubuntu 中不起作用?这是因为我在安装 Ubuntu 之后安装了 Mint 吗?这是我能想到的唯一解释。GRUB2 是否安装在多个位置?我记得我在两次系统安装期间都选择将引导加载程序安装到 MBR。也许这只与配置文件有关,而不是实际的引导加载程序?如果我将安装/etc
到专用分区会怎样?这会让它们共享配置文件吗?然后呢/boot
?
此设置还有另一件事让我感到困扰,那就是 GRUB2 的启动顺序、背景颜色和启动菜单选项的布局不断变化。当其中一个操作系统升级或某些重大更新需要更新启动菜单选项时,似乎会发生这种情况。我该如何避免这种情况?如果我将启动菜单屏幕背景设置为蓝色,那么当 Ubuntu 获得新的重大更新或升级时,如何防止它在第二天早上变为紫色?
在上面链接的答案中,请查看“故障排除”部分。以下是摘录。
Grub Customizer 设置可能仅在最新的 Linux/Ubuntu 安装(安装了 Grub 的安装)中起作用。
看来我可能发现了一些问题。这可能与我上面提到的有关。不是吗?你只需要在最后安装的 Linux 系统中进行更改,这听起来真的很愚蠢。无论你是使用 GRUB Customizer 之类的 GUI 工具,还是使用命令行工具和手动编辑。有没有人能更了解这个问题?
答案1
如果您使用 grub2 进行了多次安装,则其中只有一个可以位于 MBR 中并控制启动。这通常是最后一次安装。如果您最初将两个都安装到同一驱动器的 MBR 中,则可能会遇到问题。Grub 会记住其安装的位置,并且 grub 的主要更新将重新安装它。或者其中一个或两个安装都可能更新 grub。我喜欢使用摘要报告来记录系统如何启动:
https://help.ubuntu.com/community/Boot-Info
在最少使用的安装中,您可以取消选择所有安装选项。但请确保其他选项在 MBR 中作为默认启动项。
答案2
GRUB 旨在接管启动过程的初始阶段的控制。这在单启动系统(例如,仅限 Ubuntu)或双启动一个基于 GRUB 的操作系统(如 Ubuntu)和 Windows 时工作正常;但是当您安装两个基于 GRUB 的操作系统(如 Ubuntu 和 Mint)时,这两个 GRUB 将争夺对启动过程的控制权。
经验丰富的多引导程序通常采用以下三种方法之一来管理此过程:
- 将控制权交给一个分发版-- 您可以从一次安装中省略 GRUB,以便将控制权交给另一次安装。执行此操作的一种方法是告诉辅助发行版的安装程序不要安装 GRUB。对于 Ubuntu 和 Mint,您可以通过在“安装前尝试”模式下启动安装程序、启动终端并键入 来执行此操作
sudo ubiquity -b
。该-b
选项告诉安装程序省略 GRUB。安装后,这变得更加棘手。就我个人而言,我有一个虚拟grub-pc-3
包,其中只包含几个空目录。它的版本号保证它比任何 GRUB 2 包都“更新”,因此安装它会导致 GRUB 被删除,并且系统不会尝试重新安装 GRUB(否则可能会发生)。这种虚拟包方法不够优雅;我相信有更好的方法可以实现同样的效果,但我从来没有费心研究它来弄清楚它可能是什么。 - 将控制权交给自定义 GRUB 2-- 您可以从两个都您的安装,然后设置一个独立于其中任何一个的 GRUB 2。这可以使整个系统更强大,能够应对将来删除与 GRUB 2 关联的发行版所导致的问题,因此这种方法受到多重启动许多发行版并经常更改这些发行版的人的青睐。不过,设置它需要大量的 GRUB 2 专业知识。
- 放弃 GRUB 2,转而使用其他产品-- 这种方法与前一种方法类似,但不是设置独立于发行版的 GRUB 2,而是设置独立于发行版的非 GRUB 引导加载程序。在 BIOS 下,可能包括 LILO、SYSLINUX 和 GRUB Legacy。在 EFI 下,选项包括 ELILO、SYSLINUX、rEFInd 和 gummiboot/systemd-boot。所有这些工具都比 GRUB 2 更容易手动配置,但大多数都比自动 GRUB 2 配置更难(假设自动配置正常工作 - 正如您所发现的,有时它不起作用!)。
与任何与计算机相关的事情一样,了解工具和流程将有助于您控制它们。为此,您应该首先弄清楚您是在 BIOS/CSM/传统模式下启动,还是在 EFI/UEFI 模式下启动。在 Linux 中,这很容易做到:查找名为 的目录/sys/firmware/efi
。如果存在,则说明您已在 EFI 模式下启动;如果不存在,则说明您可能已在 BIOS 模式下启动。如果您的 Windows 8.1 是预安装的,则几乎肯定会在 EFI 模式下启动。BIOS 模式和 EFI 模式启动是非常不同,因此您务必阅读适当的启动模式。(BIOS 模式启动较旧,因此许多较旧的文档甚至没有提及 BIOS 与 EFI 的问题,只是假设 BIOS 模式启动。EFI 模式文档通常非常明确地说明它是关于在 EFI 模式下启动的。)
对于 EFI 模式启动,我建议您阅读以下参考资料:
- 亚当·威廉姆森的关于 EFI 模式启动的博客文章. 本页提供了 EFI 模式启动工作原理的基本背景。
- 我自己的关于在基于 EFI 的计算机上安装 Linux 的页面提供与分布无关的实用建议。
- 我的Linux 的 EFI 引导加载程序页面更详细地描述了 EFI 模式引导加载程序。
- 这Ubuntu 社区 wiki 上有关 UEFI 的条目介绍如何在基于 EFI 的系统上安装 Ubuntu。
我恰好没有关于 BIOS 模式启动的进一步阅读的具体建议。