驱动是指驱动计算机硬件的程序,驱动程序是硬件厂商根据操作系统编写的配置文件。没有驱动程序,计算机中的硬件就无法工作。如果没有NVIDIA驱动,我们无法使用英伟达的GPU进行深度学习计算。
我们从一台刚刚重装好的电脑开始。
刚重装好
首先我们先下载英伟达驱动。我的电脑是小米游戏本,GPU是GTX 1060。驱动选择如下:
驱动选择
下载好驱动后,在对应文件夹打开终端,运行如下代码:
sudo chmod +x NVIDIA-Linux-x86_64-440.64.run
sudo ./NVIDIA-Linux-x86_64-440.64.run
我们会看到很多个报错信息(因此上面这段代码会经常使用)。我们将通过解决一个一个错误的方式来讲解安装步骤。
实际上,如果你想越过这些错误丝滑安装,你只要把我下面的所有代码运行一遍再运行上面的安装代码即可。
Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,也没能得到NVIDIA的认可与支持。虽然Nouveau无法和NVIDIA官方私有驱动相提并论,不过确让Linux更容易的应对各种复杂的NVIDIA显卡环境,让用户安装完系统即可进入桌面并且有不错的显示效果,所以,很多Linux发行版默认集成了Nouveau驱动。
我们需要禁用它才可以安装英伟达驱动。
sudo vi /etc/modprobe.d/blacklist.conf
在命令模式下拉到最后一行,加入如下语句(先按o进入输入模式,输入之后按ESC退回到命令模式)
blacklist nouveau
保存并退出(在命令模式下按:,进入结束行模式,输入wq,回车)。
重启电脑,然后再次安装。(实际上你可以运行完后面所有的代码再重启)
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的一个链接(快捷方式)。
总之,你需要安装gcc套件。
sudo apt update
sudo apt install gcc g++
如果你安装成功了,可以输入如下命令查看gcc版本
gcc --version
g++ --version
然后再次安装。
(2021.1.19更新)如果你安装的版本是比较旧的gcc版本(如gcc-4.8),可能在安装之后还Nvidia驱动还是显示没有cc文件,那么你只需要创建一个gcc-4.8到cc的软连接即可。
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/cc
Make这个词,英语的意思是"制作"。make命令直接用了这个意思,就是要制作出某个文件。makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译。代码指定make命令依据rules.txt文件中的规则,进行构建。
总之,make只是一个根据指定的Shell命令进行构建的工具。我们同样需要安装它。
sudo apt install make
sudo apt install make-guile
如果你安装成功了,可以输入如下命令查看make版本
make -v
然后再次安装。
简而言之,就是英伟达驱动使用的gcc和你机器上的有着不同的版本。一般来说,如果是同一个gcc的分支,如在这里遇到的7.4.0和7.5.0,使用上应该不会有太大区别。
我花了很多时间,最终解决了这个问题。
如果你想手动安装gcc7.4.0,欢迎阅读https://www.cdsy.xyz/computer/system/linux/240817/cd62827.html。进一步,使用不同版本的gcc安装驱动,欢迎阅读https://www.cdsy.xyz/computer/system/linux/240817/cd62828.html。
如果这个问题不引起bug,建议直接忽略。
可能会报没有32位兼容库的错误。如果你是第二次安装,有经验的,可以在运行NVIDIA驱动前下载如下包:
sudo apt-get install lib32z1 lib32ncurses5
网上复制粘贴的大多数文章都直接选择了no,这样做的假设是你绝对不会遇到32位的程序。我的建议是把它装上,反正不会花你五分钟的时间。
选择yes。
然后你会遇到这个选择。
libglvnd是与供应商无关的调度层,用于仲裁多个供应商之间的OpenGL API调用。它允许来自不同供应商的多个驱动程序共存于同一文件系统上,并确定在运行时将每个API调用分派给哪个供应商。 支持GLX和EGL,并与OpenGL和OpenGL ES任意组合。
这个东西我也不知道有什么用,反正覆盖不全的安装一个全的版本不是什么坏事。
选择Install and overwrite。
然后你会遇到这个选择。
关于NVIDIA X server或者NVIDIA X driver,我搜索了半天也没有一个解释它的文章。总的来说,X server是一个能够查看gpu状态的软件。
因此我建议你安装,选择yes。
you appear to be running an x server; please exit x before installing.
sudo ./NVIDIAxxxx.run --no-x-check
如何查看你刚刚安装完成的gpu呢?使用如下命令。
lspci | grep -i vga
lspci | grep -i nvidia
nvidia-smi
状态的具体含义自行百度。
恭喜你完成安装!
如果你需要安装CUDA,可以参考另一篇文章NVIDIA CUDA Toolkit 11.0 安装与卸载(Linux/Ubuntu)。