Fork me on GitHub

Ubuntu下Nvidia驱动安装

@author:zhanjzh

安装过程同大多数人一样十分折腾,所以在这里一些常见的错误就不记录了下面记录一下具体的安装过程,以及一些问题的十分有意义的解决方案。

在Nvidia官网上下载相应的驱动,注意版本选择,不需要选择最新的版本,也不需要刻意挑一个老的版本,beta字眼的尤其要避免。

安装过程:

下载安装驱动的runfile,名字大致是:
NVIDIA-Linux-x86_64-390.42.run

赋予执行权限:

chmod +x NVIDIA-Linux-x86_64-390.42.run

开始安装:

sudo ./NVIDIA-Linux-x86_64-390.42.run -no-x-check -no-nouveau-check -no-opengl-files

本来安装 Nvidia驱动需要关闭 nouveau 驱动和图形界面,加上后面的参数后就不需要那么繁琐,最后一个opengl的参数十分关键,不加上去有可能安装过后重启时会出现循环登录。

安装过程中出现的问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1. There appears to already be a driver installed on your system (version:      
390.42). As part of installing this driver (version: 390.42), the existing
driver will be uninstalled. Are you sure you want to continue?

Continue installation Abort installation

(选择 Coninue,如果是重装的话)
2. The distribution-provided pre-install script failed! Are you sure you want
to continue?

Continue installation Abort installation
(选择 Cotinue)
3. Would you like to register the kernel module sources with DKMS? This will
allow DKMS to automatically build a new module, if you install a different
kernel later.

Yes No
(这里选 No)
4. Install NVIDIA's 32-bit compatibility libraries?

Yes No
(这里选 No)
5. Installation of the kernel module for the NVIDIA Accelerated Graphics Driver
for Linux-x86_64 (version 390.42) is now complete.

OK

因为自己也重装了好几次,不断探索过哪些解决方案是可行的,大大小小的问题都遇见过,其中可能会出现的一些问题较严重的,我会简要介绍一下:

1
2
3
1. 安装最后出现 nvidia-drm 模块问题
Unable to load the “nvidia-drm” kernel module
ERROR: Installation has failed. Please see the file '/var/log/nvidia-installer.log' for details. You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

这个问题一开始困扰了我许久,总是提示安装失败,后来发现,即使他提示是这个,但实际上是安装成功了,出现这个问题主要是后面的配置文件中将nvidia-drm 模块给禁用掉。在安装过程中,出现这个问题不用理,后面我会再次提及。

1
2
3
4
5
6
2. 运行 `nvidia-smi` 命令提示出错
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
这个问题比较坑,网上说法要不就是重启一下就能解决,要不就是切换内核。
(实际上,我都尝试过,重启在我电脑上不靠谱,切换内核由于我安装的Ubuntu 18.04
中的内核就是当前时间的最新内核,曾经考虑过是不是内核太新了,于是降级内核,然后
把系统内核搞崩了。不建议尝试切换内核。)

网上查找到的博客没能解决我的问题,后来去 Nvidia 官网论坛上寻找客服人员的解决方案在一个帖子上发现了重要的线索:
[https://devtalk.nvidia.com/default/topic/1037021/linux/ubuntu-18-04-on-asus-zenbook-ux550ve-crashes-soon-after-boot-to-desktop/]

这里面客服人员提到:

1
2
3
4
5
6
7
8
"No, ubuntu just seems have an alias set to turn off the nvidia driver.
run
grep nvidia /etc/modprobe.d
and look for something like
alias nvidia-drm off
and
alias nvidia-modprobe off
and remove that file. "

然后在 /etc/modprobe.d/blacklist-nvidia.conf 里面发现了这个:

1
2
3
4
5
6
7
8
# Do not modify
# This file was generated by nvidia-prime
blacklist nvidia
blacklist nvidia-drm
blacklist nvidia-modeset
alias nvidia off
alias nvidia-drm off
alias nvidia-modeset off

注意后面三句话,可以说十分尴尬了这里将 nvidia 的三个模块全部禁用掉,安装过程和执行 nvidia-smi 过程在这里翻车了。

解决方案就是更改此文件,将后面三句话加上注释或者直接:

sudo mv blacklist-nvidia.conf blacklist-nvidia.conf.bak

之后运行 nvidia-smi 就很顺利,如果你对上面的drm模块安装不放心的话也可以选择再次安装 nvidia 驱动,之后你会发现安装过程十分流畅。