首先,可以查看下当前系统有哪些可切换的内核版本。
grep menuentry /boot/grub/grub.cfg
输出
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
menuentry 'Ubuntu, with Linux 6.0.0-060000-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.0.0-060000-generic-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
menuentry 'Ubuntu, with Linux 6.0.0-060000-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-6.0.0-060000-generic-recovery-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
menuentry 'Ubuntu, with Linux 4.15.0-193-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-193-generic-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
menuentry 'Ubuntu, with Linux 4.15.0-193-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-193-generic-recovery-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
menuentry 'Ubuntu, with Linux 4.15.0-192-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-192-generic-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
menuentry 'Ubuntu, with Linux 4.15.0-192-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-192-generic-recovery-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
可以看到有三种不同内核可以选择,用uname -r
命令查看当前我的内核为 6.0.0-060000-generic,我想切到 4.15.0-193-generic 上去。
方法一
找到启动入口的选项ID,即$menuentry_id_option
grep submenu /boot/grub/grub.cfg
输出
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
由于我想切到4.15.0-193-generic
,所以我下面匹配项可以这样写
grep gnulinux-4.15.0-193-generic-advanced /boot/grub/grub.cfg
输出
menuentry 'Ubuntu, with Linux 4.15.0-193-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-193-generic-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa' {
上面两个输出,截取我需要的字符,结果为 “gnulinux-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa” 和 “gnulinux-4.15.0-193-generic-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa”。
最后编辑/etc/default/grub
文件,将GRUB_DEFAULT=0
的值修改为
GRUB_DEFAULT="gnulinux-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa>gnulinux-4.15.0-193-generic-advanced-5acffe8e-c48f-4e6c-9b68-9a7770bac9fa"
注意,GRUB_DEFAULT 值中的两串字符需要用
>
符号分隔开来
保存文件后,更新 Grub 配置,并重启。
update-grub && reboot
方法二(简单粗暴)
直接全局替换默认启动项的版本号为我们需要的内核版本。例如,我这边需要从默认的 6.0.0-060000 内核(当前内核)切换到 4.15.0-193 内核(目标内核),命令为
sed -i 's/6.0.0-060000/4.15.0-193/g' /boot/grub/grub.cfg
然后直接重启系统即可。如果想要还原回去的话,直接运行下update-grub
命令,接着重启系统就可以了。
评论区