更改linux默认启动内核版本,修改 GRUB 设置

简介

在本文中,我们将讨论如何在 GRUB 引导加载器中更改默认启动的 Linux 内核版本。这对于在多个内核版本间切换非常有用。已在Ubuntu上验证可用。告别直接修改/boot/grub/grub.cfg的土办法。

查看目前linux上面的内核版本

# 方法一
ls /boot/vmlinuz-*

# 方法二:
cat /boot/grub/grub.cfg | grep menuentry

# 查看目前使用的内核版本
uname -r

以:Linux 5.15.0-86-generic切换到 Linux 5.11.0-40-generic为例子。

步骤概述

1.确认目标内核版本在 GRUB 菜单中的位置
查看 /boot/grub/grub.cfg ,找到想要设置为默认的内核版本对应的 menuentry。记住它在菜单中的位置,计数从 0 开始。具体例子见下面**“grub.cfg实例”**

cat /boot/grub/grub.cfg

2.编辑 GRUB 配置文件
打开 /etc/default/grub,使用管理员权限。使用文本编辑器,如 nanovim

sudo vim /etc/default/grub

3.修改 GRUB_DEFAULT 变量
/etc/default/grub 文件中找到 GRUB_DEFAULT 行。如果目标内核位于子菜单中,使用格式 "主菜单位置>子菜单位置"。例如,如果目标内核是 “Advanced options” 子菜单中的第三个选项(计数为 2),(具体例子见下面**“grub.cfg实例”**,一下子就懂了),则设置为:

#GRUB_DEFAULT=0     #一般默认是 这个,把它注释掉即可。
GRUB_DEFAULT="1>2"

4.更新 GRUB 配置
保存对 /etc/default/grub 的更改后,运行以下命令更新 GRUB:

sudo update-grub

5.重启系统
完成上述步骤后,重启系统。系统现在应该会默认启动到新设置的内核版本。

sudo reboot

注意

  • 直接编辑 /boot/grub/grub.cfg 文件是不推荐的,因为这个文件会在系统更新或执行 update-grub 命令时被自动覆盖。
  • 在做出任何更改之前,请备份相关文件,以防万一出现配置错误。

grub.cfg实例

位置:/boot/grub/grub.cfg,摘录其中内容如下:

### main manu(主菜单),number 0,  starting with 0. => vim /etc/default/grub : GRUB_DEFAULT=0
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
        else
          search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
        fi
        linux   /boot/vmlinuz-5.15.0-86-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro  quiet splash $vt_handoff
        initrd  /boot/initrd.img-5.15.0-86-generic
}
### main manu(主菜单),number 1
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
        ### submain manu(子菜单),number 0,starting with 0.  => vim /etc/default/grub : GRUB_DEFAULT="1>0"
        menuentry 'Ubuntu, with Linux 5.15.0-86-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-86-generic-advanced-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.15.0-86-generic ...'
                linux   /boot/vmlinuz-5.15.0-86-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro  quiet splash $vt_handoff
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.15.0-86-generic
        }
        ### submain manu(子菜单),number 1,  => vim /etc/default/grub : GRUB_DEFAULT="1>1"
        menuentry 'Ubuntu, with Linux 5.15.0-86-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-86-generic-recovery-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.15.0-86-generic ...'
                linux   /boot/vmlinuz-5.15.0-86-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro recovery nomodeset dis_ucode_ldr
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.15.0-86-generic
        }
        ### submain manu(子菜单),number 2,  => vim /etc/default/grub : GRUB_DEFAULT="1>2"
        menuentry 'Ubuntu, with Linux 5.11.0-40-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.11.0-40-generic-advanced-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                gfxmode $linux_gfx_mode
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.11.0-40-generic ...'
                linux   /boot/vmlinuz-5.11.0-40-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro  quiet splash $vt_handoff
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.11.0-40-generic
        }
        ### submain manu(子菜单),number 3,  => vim /etc/default/grub : GRUB_DEFAULT="1>3"
        menuentry 'Ubuntu, with Linux 5.11.0-40-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.11.0-40-generic-recovery-0ca8df87-68c6-4792-ab3a-cf10e70c71c9' {
                recordfail
                load_video
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
                set root='hd0,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                else
                  search --no-floppy --fs-uuid --set=root 0ca8df87-68c6-4792-ab3a-cf10e70c71c9
                fi
                echo    'Loading Linux 5.11.0-40-generic ...'
                linux   /boot/vmlinuz-5.11.0-40-generic root=UUID=0ca8df87-68c6-4792-ab3a-cf10e70c71c9 ro recovery nomodeset dis_ucode_ldr
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img-5.11.0-40-generic
        }
}

觉得有用,就点个赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ha-Ha-Interesting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值