前言:
客户有时在不小心安装新内核之后,会出现之前的驱动无法使用的现象,如PCM-26D2CA,此种模块为CAN卡模块,使用时需要
安装对应的驱动,否则无法使用,但是此驱动在低版本的内核上可以编译安装,但是一旦被客户不经意间更新了新的内核后,驱动
便无法使用了。解决办法如下
方法一:
1.首先,查看自己的grub版本:
grub-install --version
记住(GRUB)之后的大版本是2.00以后还是2.00以前
2.查看自己现有的内核版本(完全版)
grep 'menuentry' /boot/grub/grub.cfg
3.找到自己想换回的内核
例如,这里我想要更换为5.8.0-43,就找到对应的选项
这一选项,注意不是(recovery mode).
4.复制上面信息中menuentry之后的单引号内的字符串
比如我是 Ubuntu,Linux 5.8.0-43-generic
5.修改grub
在终端中输入
sudo nano /etc/default/grub
将第一个
GRUB_DEFAULT=0
修改为
GRUB_DEFAULT = "Ubuntu,Linux 5.8.0-50-generic"
(注意要加双引号)
6.更新grub设置
在终端中输入
sudo update-grub
如果看到下面有
警告: Please don't useold title 'Ubuntu,Linux 5.8.0-43-generic'for GRUB_DEFAULT, use'Advanced options for Ubuntu>Ubuntu,Linux 5.8.0-43-generic' (forversionsbefore2.00) or'gnulinux-advanced-31de705c-552f-46c6-8bcc-b01f889231e6>gnulinux-5.8.0-43-generic -advanced-31de705c-552f-46c6-8bcc-b01f889231e6' (for2.00or later)
则根据之前看到的grub版本,如果大于等于2.00,则将第三个单引号内的字符串复制粘贴.否则把第二个单引号内的字符串复制粘贴
也就是说一定要重新修改一次grub
例如我的grub版本大于2.00,则再次将之前的
GRUB_DEFAULT="Ubuntu,Linux 5.8.0-50-generic"
修改为
GRUB_DEFAULT='gnulinux-advanced-31de705c-552f-46c6-8bcc-b01f889231e6>gnulinux-5.8.0-43-generic -advanced-31de705c-552f-46c6-8bcc-b01f889231e6'
一定要再次修改一次GRUB_DEFAULT!!!注意看清楚是第二个单引号和第三个单引号内的内容!!!
7.再次更新grub设置
sudo update-grub
此时不应再看到任何警告提示
8.重新启动
sudo reboot
注意,此时grub引导时光标默认指向的应该是Ubuntu高级选项之类的选项,不要移动光标,让它自动选择启动
9.查看是否成功
uname -r
方法二:
1.查看自己现有的内核版本
uname -r
2.查看已安装的内核
sudo dpkg --get-selections | grep linux
如果正是自己想要的内核,希望以后不再更新内核,则使用命令将此内核锁住,保证以后不再自动升级内核
sudo apt-mark hold linux-image-5.8.0-43-generic linux-headers-5.8.0-43-generic
sudo apt update
sudo apt upgrade