Ubuntu 20.04下如何将指定内核系列设为默认启动项?
Ubuntu 20.04下如何将指定内核系列设为默认启动项?
嗨,完全理解你的困扰——每次内核更新后还要手动选启动项确实麻烦,咱们可以通过修改GRUB的配置,让linux-generic(5.4.x系列)始终作为默认启动项,而且后续内核更新后自动保持这个设置,不用手动调整。下面给你两种靠谱的方法,按需选择:
方法一:让默认Ubuntu菜单项直接启动5.4系列最新内核(推荐)
这个方法会修改GRUB生成菜单的逻辑,把所有5.4.x内核排在5.15.x前面,这样默认的“Ubuntu”菜单项就会自动启动最新的5.4内核,不用进高级选项:
- 先备份一下GRUB的内核菜单生成脚本,防止改坏了:
sudo cp /etc/grub.d/10_linux /etc/grub.d/10_linux.bak
- 打开脚本编辑:
sudo nano /etc/grub.d/10_linux
- 找到内核排序的那一行(搜索
sort -V就能快速定位),原内容是:
linux_list=$(echo "${linux_list[@]}" | tr ' ' '\n' | sort -V | tr '\n' ' ')
把它替换成下面的代码,让5.4系列内核优先排在前面:
# 优先将5.4系列内核排序到最前面 linux_list=$(echo "${linux_list[@]}" | tr ' ' '\n' | awk '/5\.4/ {print "0" $0} !/5\.4/ {print "1" $0}' | sort | sed 's/^.//' | tr '\n' ' ')
- 保存退出(按
Ctrl+O确认,Ctrl+X退出),然后更新GRUB配置:
sudo update-grub
这样下次启动时,默认选“Ubuntu”就会直接进入最新的5.4.x内核,5.15系列的内核会放在“Advanced options for Ubuntu”里,需要的时候再选就行。
方法二:通过脚本自动更新GRUB默认项(适合不想修改GRUB脚本的情况)
如果不想动GRUB的核心脚本,可以写一个自动脚本,每次安装新内核时自动把GRUB默认项设为最新的5.4内核:
- 创建一个脚本文件:
sudo nano /etc/kernel/postinst.d/90-set-default-54-kernel
- 把下面的内容粘贴进去:
#!/bin/bash # 找到最新的5.4.x内核版本 latest_54_kernel=$(ls -v /boot/vmlinuz-5.4.*-generic | tail -n 1 | sed 's/\/boot\/vmlinuz-//') # 拼接对应的GRUB菜单项名称 menu_entry="Ubuntu, with Linux $latest_54_kernel" # 高级选项菜单的名称(默认就是这个) advanced_menu="Advanced options for Ubuntu" # 修改GRUB默认配置 sed -i "s/^GRUB_DEFAULT=.*/GRUB_DEFAULT=\"$advanced_menu>$menu_entry\"/" /etc/default/grub # 更新GRUB配置 update-grub
- 给脚本加上执行权限:
sudo chmod +x /etc/kernel/postinst.d/90-set-default-54-kernel
以后每次安装新的5.4内核时,脚本会自动更新GRUB的默认启动项为最新的5.4内核,你不用手动操作。
两种方法都能解决你的问题,方法一更直观,默认菜单项直接就是你要的内核;方法二更保守,不修改GRUB的核心脚本,靠触发脚本自动更新。
备注:内容来源于stack exchange,提问作者Henrique Bucher




