我如何选择默认情况下应该加载哪个内核 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 的情况一样。
我不想改变我的顶级菜单结构来选择以前的内核作为默认值。我找到了答案这里。
总结一下:
找到
$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' {
找到
$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' {
注释掉当前的默认 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"
更新
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,依此类推。