驱动是指驱动计算机里软件的程序,驱动程序是硬件厂商根据操作系统编写的配置文件。没有驱动程序,计算机中的硬件就无法工作。如果没有NVIDIA驱动,我们无法使用英伟达的GPU进行深度学习计算。

我们从一台刚刚重装好的电脑开始。




linux卸载nfs服务的命令 linux卸载n卡驱动_GNU


刚重装好

首先我们先下载英伟达驱动。我的电脑是小米游戏本,GPU是GTX 1060。驱动选择如下:


linux卸载nfs服务的命令 linux卸载n卡驱动_GNU_02

驱动选择


下载好驱动后,在对应文件夹打开终端,运行如下代码:


sudo chmod +x NVIDIA-Linux-x86_64-440.64.run

sudo ./NVIDIA-Linux-x86_64-440.64.run


linux卸载nfs服务的命令 linux卸载n卡驱动_linux卸载nfs服务的命令_03


我们会看到很多个报错信息(因此上面这段代码会经常使用)。我们将通过解决一个一个错误的方式来讲解安装步骤。

实际上,如果你想越过这些错误丝滑安装,你只要把我下面的所有代码运行一遍再运行上面的安装代码即可。


第一个错误:Nouveau


linux卸载nfs服务的命令 linux卸载n卡驱动_linux卸载nfs服务的命令_04


Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,也没能得到NVIDIA的认可与支持。虽然Nouveau无法和NVIDIA官方私有驱动相提并论,不过确让Linux更容易的应对各种复杂的NVIDIA显卡环境,让用户安装完系统即可进入桌面并且有不错的显示效果,所以,很多Linux发行版默认集成了Nouveau驱动。[1]

我们需要禁用它才可以安装英伟达驱动。


sudo vi /etc/modprobe.d/blacklist.conf


linux卸载nfs服务的命令 linux卸载n卡驱动_GNU_05


在命令模式下拉到最后一行,加入如下语句(先按o进入输入模式,输入之后按ESC退回到命令模式)


blacklist nouveau


保存并退出(在命令模式下按:,进入结束行模式,输入wq,回车)。


linux卸载nfs服务的命令 linux卸载n卡驱动_GNU_06


重启电脑,然后再次安装。

第二个错误:gcc


linux卸载nfs服务的命令 linux卸载n卡驱动_git linux 卸载重装_07


cc来自于Unix的c语言编译器,是 c compiler 的缩写。gcc来自Linux世界,是GNU compiler collection 的缩写。

GNU编译器套装(GNU Compiler Collection,缩写为gcc),指一套编程语言编译器集合,可以编译C,C++,Java等语言。在Linux下调用cc时,其实际上并不指向unix的cc编译器,而是指向了gcc,也就是说cc是gcc的一个链接(快捷方式)。[2]

总之,你需要安装gcc套件。


sudo apt update
sudo apt install gcc g++


如果你安装成功了,可以输入如下命令查看gcc版本


gcc --version
g++ --version


linux卸载nfs服务的命令 linux卸载n卡驱动_英伟达_08


然后再次安装。

第三个错误:make


linux卸载nfs服务的命令 linux卸载n卡驱动_命令模式_09


Make这个词,英语的意思是"制作"。make命令直接用了这个意思,就是要制作出某个文件。makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译。代码指定make命令依据rules.txt文件中的规则,进行构建。

总之,make只是一个根据指定的Shell命令进行构建的工具。[3]我们同样需要安装它。


sudo apt install make
sudo apt install make-guile


如果你安装成功了,可以输入如下命令查看make版本


make -v


linux卸载nfs服务的命令 linux卸载n卡驱动_git linux 卸载重装_10


然后再次安装。

第四个警告:gcc版本不匹配


linux卸载nfs服务的命令 linux卸载n卡驱动_命令模式_11


简而言之,就是英伟达驱动使用的gcc和你机器上的有着不同的版本。一般来说,如果是同一个gcc的分支,如在这里遇到的7.4.0和7.5.0,使用上应该不会有太大区别。

我花了很多时间,最终解决了这个问题。
如果你想手动安装gcc7.4.0,欢迎阅读https://zhuanlan.zhihu.com/p/115755960。进一步,使用不同版本的gcc安装驱动,欢迎阅读https://zhuanlan.zhihu.com/p/130860958。

如果这个问题不引起bug,建议直接忽略。

第五个选择:NVIDIA32位兼容库

可能会报没有32位兼容库的错误。如果你是第二次安装,有经验的,可以在运行NVIDIA驱动前下载如下包:


sudo apt-get install lib32z1 lib32ncurses5


linux卸载nfs服务的命令 linux卸载n卡驱动_命令模式_12


网上复制粘贴的大多数文章都直接选择了no,这样做的假设是你绝对不会遇到32位的程序。我的建议是把它装上,反正不会花你五分钟的时间。

选择yes。

然后你会遇到这个选择。

第六个选择:libglvnd

libglvnd是与供应商无关的调度层,用于仲裁多个供应商之间的OpenGL API调用。它允许来自不同供应商的多个驱动程序共存于同一文件系统上,并确定在运行时将每个API调用分派给哪个供应商。 支持GLX和EGL,并与OpenGL和OpenGL ES任意组合。[4]

这个东西我也不知道有什么用,反正覆盖不全的安装一个全的版本不是什么坏事。

选择Install and overwrite。

然后你会遇到这个选择。

第七个选择:X server


linux卸载nfs服务的命令 linux卸载n卡驱动_GNU_13


关于NVIDIA X server或者NVIDIA X driver,我搜索了半天也没有一个解释它的文章。总的来说,X server是一个能够查看gpu状态的软件。


linux卸载nfs服务的命令 linux卸载n卡驱动_linux卸载nfs服务的命令_14


因此我建议你安装,选择yes。

第八个错误:

you appear to be running an x server; please exit x before installing.


linux卸载nfs服务的命令 linux卸载n卡驱动_英伟达_15


sudo ./NVIDIAxxxx.run --no-x-check


安装完成

如何查看你刚刚安装完成的gpu呢?使用如下命令。


lspci | grep -i vga

lspci | grep -i nvidia

nvidia-smi


状态的具体含义自行百度。


恭喜你完成安装!

如果你需要安装CUDA,可以参考我的另一篇文章李森科在zhihu:NVIDIA CUDA Toolkit 11.0 安装与卸载(Linux/Ubuntu)。

参考

  1. ^
  2. ^
  3. ^http://www.ruanyifeng.com/blog/2015/02/make.html
  4. ^https://github.com/NVIDIA/libglvnd