ubuntu更改使用期望的内核版本
摘要:本文记录了在Ubuntu KVM虚拟机中降级内核版本的详细流程。首先通过apt search查找目标内核5.15.0-72-generic并安装相关组件,然后创建脚本确定该内核在GRUB菜单中的位置,将获取的配置信息写入/etc/default/grub文件,执行update-grub更新配置,最后重启验证内核版本变更成功。整个过程在虚拟机环境中完成,但同样适用于物理机环境。(149字)
·
背景
因为要安装驱动固件,但是这个ubuntu的内核版本太新需要降低版本,所以写个流程记录下更改内核的简单配置。
环境在kvm的虚拟机环境下进行,实际和物理机没有区别。
执行流程
首先虚机的ubuntu都会默认使用ubuntu的软件源,这里直接查看。
原版本是5.15.0-160-generic,我们的期望是改成5.15.0-72-generic版本。
首先查看ubuntu的内核源,
apt search linux-image-5.15.0.72-generic

发现有接着我们下载
sudo apt install -y \
linux-image-5.15.0-72-generic \
linux-headers-5.15.0-72-generic \
linux-modules-5.15.0-72-generic
接着创建并执行脚本,作用是生成将当前内核改为5.15.0-72-generic 需要在grub中做什么配置
TARGET_KERNEL="5.15.0-72-generic"
echo "正在查找内核 $TARGET_KERNEL 在 GRUB 菜单中的位置..."
echo "================================================"
# 获取 GRUB 配置
GRUB_CFG="/boot/grub/grub.cfg"
if [ ! -f "$GRUB_CFG" ]; then
echo "错误: 找不到 $GRUB_CFG"
exit 1
fi
# 查找目标内核
echo "搜索目标内核: $TARGET_KERNEL"
echo
FOUND=0
MENU_INDEX=0
SUBMENU_INDEX=0
IN_SUBMENU=0
while IFS= read -r line; do
# 检测子菜单开始
if [[ $line =~ "submenu" ]] && [[ $line =~ "Advanced options" ]]; then
IN_SUBMENU=1
SUBMENU_TITLE=$(echo "$line" | sed -n "s/.*'\(.*\)'.*/\1/p")
echo "找到子菜单: $SUBMENU_TITLE"
continue
fi
# 检测菜单项
if [[ $line =~ "menuentry" ]]; then
MENU_TITLE=$(echo "$line" | sed -n "s/.*'\(.*\)'.*/\1/p")
if [[ $IN_SUBMENU -eq 1 ]]; then
SUBMENU_INDEX=$((SUBMENU_INDEX + 1))
CURRENT_INDEX="1>$((SUBMENU_INDEX - 1))"
else
MENU_INDEX=$((MENU_INDEX + 1))
CURRENT_INDEX="$((MENU_INDEX - 1))"
fi
# 检查是否包含目标内核
if [[ $MENU_TITLE =~ $TARGET_KERNEL ]]; then
FOUND=1
echo "✅ 找到目标内核!"
echo " 菜单标题: $MENU_TITLE"
if [[ $IN_SUBMENU -eq 1 ]]; then
echo " GRUB_DEFAULT 设置: \"$SUBMENU_TITLE>$MENU_TITLE\""
echo " 或者使用数字索引: \"1>$((SUBMENU_INDEX - 1))\""
else
echo " GRUB_DEFAULT 设置: \"$MENU_TITLE\""
echo " 或者使用数字索引: \"$((MENU_INDEX - 1))\""
fi
break
fi
fi
done < "$GRUB_CFG"
if [[ $FOUND -eq 0 ]]; then
echo "❌ 未找到内核 $TARGET_KERNEL"
echo "当前 GRUB 菜单中的内核:"
grep "menuentry" "$GRUB_CFG" | grep "Linux" | head -10
fi

接着把那个提示的GRUB_DEFAULT配置复制,贴到/etc/default/grub文件的GRUB_DEFAULT配置项
执行更新配置
update-grub

接着重启后验证内核是否为我们期望的版本
reboot

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)