起因
最近因为系统内核自动升级,导致显卡驱动检测不到,炼丹环境被破坏。无奈只能重装驱动,于是跟着手册操作发现驱动要求的是内核版本是5.15.0-25-generic,而我通过uname -r发现这时候的内核版本是6.8.0-40-generic,看来只能回退了。
我搜索了网上很多的文章,没有一篇文章能够完全解决这个问题,所以在我多次尝试之下,我将我的折腾经验分享给未来有需要的人。
回退操作
- 查看自己的 grub 版本:
- 记住这个版本是 2.00 以后还是 2.00 以前,但如果是 Ubuntu22.04,肯定是大于 2.00 版本的
- 比如我就是
grub-install (GRUB) 2.06-2ubuntu7.2 - 查询这个版本的原因是,后续我们要通过修改
/etc/default/grub文件,而不同版本的语法是不同的
- 接下来查看自己现有的内核版本
grep 'menuentry' /boot/grub/grub.cfg
- 如果没有自己想要的版本,那么就要安装,如果有的话,直接掉下一步。
sudo apt install linux-image-5.15.0-25-generic,你可以修改你的需要的版本
sudo vim /etc/default/grub
- 将第一个
GRUB_DEFAULT=0改成GRUB_DEFAULT="..."
- 省略号的内容看第 2 步的查询结果,对于 grub 是 2 版本之前的版本,复制上面
menuentry之后的单引号内的字符串,写Advanced options for Ubuntu>Ubuntu,Linux 6.5.0-18-generic,不要填 (recovery mode),对于 2 之后的版本,写$menuentry_id_option之后的内容,例如gnulinux-advanced-9732298b-8d7e-4ef9-9b9f-a0335b12c0d0>gnulinux-5.15.0-25-generic-advanced-9732298b-8d7e-4ef9-9b9f-a0335b12c0d0,注意看,有些地方重复了 2 次 - ubuntu22.04 系统中 grub 默认关闭对其他操作系统的识别,系统会出现以下警告:
- 因此还需要在
/etc/default/grub,添加GRUB_DISABLE_OS_PROBER=false - 最后执行
sudo update-grub
得到上述信息之后重启电脑
sudo reboot重启之后,再使用
uname -r看看是不是自己想要的版本,然后打开/etc/default/grub,将第一个改回GRUB_DEFAULT=0,最后执行sudo update-grub
卸载内核
使用dpkg --get-selections | grep linux-image查看现有内核,对于不需要的,我们通过以下步骤进行卸载:
sudo apt purge linux-image-6.5.0-18-genericsudo apt autoremovecd /lib/modules和ls删除一些配置文件
卸载之后也不要忘了sudo update-grub与重启
禁止内核升级
造成上面最烦的原因是因为内核升级了,而有时候我们就算设置系统不更新,内核还是会悄悄升级,所以我们可以使用下面的方向固化内核:
sudo apt-mark hold linux-image-5.15.0-25-generic
sudo apt-mark hold linux-image-generic-hwe-22.04
sudo apt-mark hold linux-image-generic linux-headers-generic linux-generic


















