前言
最近要把工控机从Ubuntu18升级到20,同时要用Nvidia显卡,结果Nvidia驱动死活装不上,后面发现是Ubuntu20内核太高了,不支持显卡驱动,因此用到降低Ubuntu内核版本的操作。
方法
1、查看原Ubuntu内核版本
1 | # 原Ubuntu18内核版本 |
2、查看要安装的内核版本
1 | apt-cache search linux | grep 5.4.0-80 |
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 |
5、修改grub启动项
安装成功后设置启动即可选择对应的项,在此处遇到的问题是按ESC一直无法进入Ubuntu高级选项,没法选择Ubuntu内核版本进行启动。解决方法如下:
- 把
GRUB_TIMEOUT
设置为 -1 ; - 把
GRUB_TIME_STYLE=hidden
注释掉; - 将
GRUB_CMDLINE_LINUX_DEFAULT
改为”text”
1 | sudo gedit /etc/default/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 |
后面deinstall即表示没安装的(只需要看当前内核的module)
此时缺少什么就安装对应安装的版本内容即可:
1 | sudo apt-get install modules-extra-5.4.0-80-generic |
此时再次去安装驱动,执行命令:
1 | sudo modprobe mtd |
发现上述问题已解决。