在 GRUB 中设置默认内核

在 GRUB 中设置默认内核

我如何选择默认情况下应该加载哪个内核 GRUB 2?我最近安装了一个 Linux 实时内核,现在它默认加载。我想默认加载常规的。

到目前为止,我只设法选择默认操作系统...并且出于某种原因,/boot/grub.cfg已经假设我想要加载实时内核并将其放入通用 Linux 菜单条目中(在我的例子中架构Linux)。

答案1

经过两个小时的努力,我找到了一种更简单的方法来实现这一目标。我只是RTFM。 ;)

添加两行到 /etc/default/grub

GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved

执行以下操作sudo update-grub,重新启动,进入 grub 菜单并选择您需要的菜单或子菜单项。每次都会保存该选择,然后您的计算机将自动启动到该选项。当您手动选择不同的条目时,该条目将成为新的默认值。

答案2

我认为大多数发行版此时都已将额外的内核移至高级选项子菜单中,正如 TomTom 发现的 Arch 的情况一样。

我不想改变我的顶级菜单结构来选择以前的内核作为默认值。我找到了答案这里

总结一下:

  1. 找到$menuentry_id_option子菜单:

    $ grep submenu /boot/grub/grub.cfg
    submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    
  2. 找到$menuentry_id_option您要使用的内核的菜单条目:

    $ grep gnulinux /boot/grub/grub.cfg
    menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
        menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-amd64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
    
  3. 注释掉当前的默认 grub,/etc/default/grub并将其替换为第一步中的子菜单和第二步中$menuentry_id_option选定的内核(以 分隔) 。$menuentry_id_option>

    就我而言,修改后的内容GRUB_DEFAULT是:

    #GRUB_DEFAULT=0
    
    GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"
    
  4. 更新grub以进行更改。对于 Debian,这样做是这样的:

    $ sudo update-grub
    

完毕。

现在,当您启动时,高级菜单应该有一个星号,并且您应该启动到所选的内核。您可以通过 确认这一点uname

$ uname -a
Linux NAME 4.18.0-0.bpo.1-amd64 #1 SMP Debian 4.18.0-0 (2018-09-13) x86_64 GNU/Linux

将其更改回最新的内核就像注释掉新行并取消注释一样简单#GRUB_DEFAULT=0

GRUB_DEFAULT=0

#GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-amd64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"

然后重新运行update-grub

必须为顶级菜单中的所有条目指定 ID。设置默认启动项的格式可以参见在文档中

答案3

正如评论中提到的,您可以使用该grub-set-default X命令设置要启动的默认内核,其中 X 是您要启动的内核的编号。在某些发行版中,您还可以通过编辑/etc/default/grub文件和设置GRUB_DEFAULT=X,然后运行来设置此数字update-grub

该数字是引导期间 GRUB 菜单中显示的内核/内核设置数组的索引,其中 0 是第一个(最顶层)条目。您通常可以通过在 中查找menuentry行来找到正确的数字/boot/grub/grub.cfg,如下所示:

grep menuentry /boot/grub/grub.cfg

您将看到列出的每个内核以及 GRUB 引导菜单中显示的名称。第一个为 0,第二个为 1,依此类推。

答案4

为了使用 GUI 来完成此操作,我使用Grub 定制器(我在 Mint 并已经安装了它像这样.)。

我们的想法是保持高级选项在 grub 列表中,以防默认列表在 Grub 定制器中发生更改。

在此输入图像描述

然后,在常规设置选择默认条目:上一个启动条目

在此输入图像描述

然后,重新启动,并在启动过程中选择 grub 列表中的“高级选项”条目:

在此输入图像描述

并选择所需的内核

在此输入图像描述

下次重新启动时,“高级选项”项目将是 grub 列表中默认选择的项目,并且将启动其中最后选择的内核(无需打开完整的内核列表)。

如果使用 Windows 或 grub 列表中的其他选项,请记住重新执行前面的过程。

相关内容