NVIDIA驱动安装之禁用nouveau

最近实验室的服务器英伟达驱动重启之后就不能用了,查明原因原来是因为Ubuntu自动升级了内核,导致原本的驱动失效了,所以一定不要没事干去升级内核,下面介绍一下重装驱动的曲折之旅。

0x00更改blacklist(没成功)

0.备份boot文件

1.更改conf文件

1
2
3
4
sudo nano /etc/modprobe.d/blacklist.conf
#尾部追加blacklist
blacklist nouveau
options nouveau modeset=0

2.重新生成 kernel initramfs:

1
sudo update-initramfs -u

3.禁用图形化界面

1
2
3
4
5
6
$ sudo systemctl get-default
graphical.target
$ sudo systemctl set-default multi-user.target
Created symlink /etc/systemd/system/default.target → /lib/systemd/system/multi-user.target.
$ sudo systemctl get-default
multi-user.target

4.重启,然后 lsmod | grep nouveau ,还是有该模块。

0x01移除nouveau.ko(没成功)

1.打开/lib/modules/目录

1
sudo find -name ‘nouveau*’

2.然后将查找到的ko文件重命名

1
2
3
4
sudo mv ./4.15.0-117-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko ./4.15.0-117-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko.bkp

sudo mv ./4.15.0-128-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko ./4.15.0-128-generic/kernel/drivers/gpu/drm/nouveau/nouveau.ko.bkp

3.重新生成 kernel initramfs:

1
sudo update-initramfs -u

4.重启,然后 lsmod | grep nouveau ,还是有该模块。失败

0x02配置grub禁用启动项

最后迫于尝试了查到的方法都不是很靠谱,咨询了一下开源社区的学长们,给出了解决方案成功了,此时还是处于level3文字界面的。

1.增加内核参数禁用

1
2
3
sudo nano /etc/default/grub
#增加modprobe.blacklist=nouveau
GRUB_CMDLINE_LINUX_DEFAULT="modprobe.blacklist=nouveau"

modprobe用于向Linux Kernel添加 或 移除 kernel modules。 kernel modules以.ko作为扩展名。

这里是增加了一个黑名单,在grub时禁用掉该模块。

2.重新新生成配置

1
sudo grub-install

注:2022.11.14更新说明,根据“阿离”同学反馈,更新grub配置应当使用以下命令:

1
sudo update-grub

3.重启后 lsmod | grep nouveau便发现没有了这个模块,然后成功安装了英伟达的驱动。

总结

据学长所说,好像新内核是builtin的了,所以需要在grub里边禁用,对Linux的学习之路任重道远啊!


NVIDIA驱动安装之禁用nouveau
https://chujian521.github.io/blog/2021/01/05/NVIDIA驱动安装之禁用nouveau/
作者
Encounter
发布于
2021年1月5日
许可协议