前言

最近要把工控机从Ubuntu18升级到20,同时要用Nvidia显卡,结果Nvidia驱动死活装不上,后面发现是Ubuntu20内核太高了,不支持显卡驱动,因此用到降低Ubuntu内核版本的操作。

方法

1、查看原Ubuntu内核版本

1
2
3
4
5
6
# 原Ubuntu18内核版本
$ uname -r
$ 5.4.0-80-generic
# 现Ubuntu20内核版本
$ uname -r
$ 5.15.0-60-generic

2、查看要安装的内核版本

1
apt-cache search linux | grep 5.4.0-80

kernel

3、输入命令进行安装

1
sudo apt-get install linux-headers-5.4.0-80-generic linux-image-5.4.0-80-generic

4、查看此时内核版本

1
dpkg --get-selections | grep linux-image

linux_image

5、修改grub启动项
安装成功后设置启动即可选择对应的项,在此处遇到的问题是按ESC一直无法进入Ubuntu高级选项,没法选择Ubuntu内核版本进行启动。解决方法如下:

  • GRUB_TIMEOUT 设置为 -1 ;
  • GRUB_TIME_STYLE=hidden 注释掉;
  • GRUB_CMDLINE_LINUX_DEFAULT 改为”text”
1
sudo gedit /etc/default/grub

grub

输入命令,更新grub

1
sudo update-grub

6、重启进入Ubuntu高级选项
此时选择刚才设置的低版本的内核,不要选择recovery mode。
到此ubunt内核版本降低完成。
注:如果想设置固定内核,可以参考Ubuntu 修改启动时默认内核版本

问题

按照上述过程重启后进行加载驱动,可能会因为内核没安装完全,少了某些模块。
比如执行命令sudo modprobe mtd可能出现错误提示如下所示:

1
modprobe: FATAL: Module mtd not found in directory /lib/modules/5.4.0-80-generic

此时可以通过命令查看对比与过去高版本的缺少的内容:查看命令:

1
dpkg --get-selections  | grep linux

module_miss
后面deinstall即表示没安装的(只需要看当前内核的module)

此时缺少什么就安装对应安装的版本内容即可:

1
sudo apt-get install modules-extra-5.4.0-80-generic

 此时再次去安装驱动,执行命令:

1
sudo modprobe mtd

发现上述问题已解决。


©2018 - Felicx 使用 Stellar 创建
总访问 113701 次 | 本页访问 326
共发表 83 篇Blog · 总计 127.5k 字