在 GRUB 中更改 GRUB 引导加载程序顺序

在 GRUB 中更改 GRUB 引导加载程序顺序

我们的系统中安装了两个 Ubuntu 操作系统。

在启动时,GRUB 会询问从哪个 Ubuntu 启动,但现在我必须在 GRUB 中添加一个新菜单项,该菜单项将允许用户更改默认的 Linux 启动。

在此处输入图片描述

在上图中,我必须添加第三个菜单项,此菜单允许用户选择新的默认启动操作系统。如果用户选择“将 Linux 2 设置为默认”,下次重启时启动顺序将如下图所示。

在此处输入图片描述

我找到了有关更改启动顺序的文档,但这些文档描述了 Ubuntu 中的过程,我想在 GRUB 本身中实现此操作。我该怎么做?

答案1

我们可以使用 Grub 的环境块。环境块存储在 中/boot/grub/grubenv,这个文件有点特殊,它有一个预分配的大小 1024 字节。即使你可以用文本编辑器打开这个文件来显示它的内容,我们也不应该用文本编辑器编辑这个文件。

我们可以/boot/grub/grubenv使用不同的工具进行编辑:

终端命令sudo grub-editenv [OPTION...] FILENAME COMMAND,另请参阅man grub-editenv

菜单输入命令save_env [-f file] var详细信息请参阅 GNU Grub 手册

如果文件/boot/grub/grubenv不存在,你可以使用以下命令创建它

sudo grub-editenv /boot/grub/grubenv 创建

我们必须创建一些自定义菜单项,https://help.ubuntu.com/community/Grub2/CustomMenus 提供了有关如何执行此操作的有用信息。编辑/etc/grub.d/40_custom它,使其看起来像这样:

/bin/sh #!/bin/sh 复制代码
执行 tail -n +3 $0
# 此文件提供了一种添加自定义菜单项的简单方法。只需输入
# 个要在此注释后添加的菜单项。请注意不要更改
# 上面的‘exec tail’行。
#
子菜单‘设置启动默认值’{
    menuentry'将第一个条目设置为默认条目'{
            设置 saved_entry=0
                保存环境已保存条目
                重启  
    }
    menuentry'将第二个条目设置为默认条目'{
        设置 saved_entry=1
                保存环境已保存条目
                重启
    }
}

如果文件中已经有自定义菜单项,我们只需将注释行后的行附加到文件中。菜单项中的命令作用如下:

set saved_entry 将环境变量saved_entry设置为指定值。
Save_env saved_entry 将变量saved_entry存储在/boot/grub/grubenv中。
重启机器

此外,我们还需要编辑/etc/default/grub包含基本 Grub 配置的文件。同样,在 GNU Grub 手册中,我们会找到详细资料

我们/etc/default/grub必须将 的值更改为GRUB_DEFAULTGRUB_DEFAULT=saved这将强制 Grub 在我们启动时加载默认菜单项/boot/grub/grubenv 。如果您发现一行带有GRUB_SAVEDEFAULT=true,请删除此行。

要将我们所做的更改应用到 Grub 的主配置文件,/boot/grub/grub.cfg我们必须运行sudo update-grub

下一步我们sudo grub-editenv - set saved_entry=0在终端中运行。这样做是为了避免冲突,当 Grub 下次启动时,Grub 会查找saved-entry/boot/grub/grubenv找到它。

现在我们可以重新启动,当 Grub 菜单出现时,我们将在列表中看到添加的子菜单,我们打开它并选择其中一个条目。Grub 将设置 saved_entry 为指定值,保存它然后/boot/grub/grubenv重新启动。Grub 菜单再次出现,我们将看到,新的默认值被自动选中。

还有一件事需要考虑

在哪个操作系统中我们必须进行这些更改?我们安装了两个 Linux 发行版,并且都附带 Grub。根据启动信息摘要和终端命令,findmnt我们应该能够识别保存和控制配置文件的发行版。在这个发行版中,我们必须执行上述步骤。在其他发行版中,Grub 是不需要的,应该被删除甚至清除,只是为了避免任何类型的冲突。

附加信息:

使用 Grub 版本在我的系统上对此进行了测试2.02~beta2-36ubuntu3.8

答案2

cd /etc/默认/

vim grub

改变GRUB_DEFAULT=0到您想要的那个。

或者

cd /启动/grub

vim grub配置文件

编辑时请小心

重新排列菜单项的功能,您将能够在引导加载程序上看到它。

相关内容