安装过程
sudo service lightdm stop # 这个是关闭图形界面,不执行会出错。
# 或者执行 sudo init 3 # 这个也是关闭图形界面的相关驱动,更彻底。意思是进入 文本模式 3
sudo chmod a+x NVIDIA-Linux-x86_64-418.56.run # 给驱动run文件赋予执行权限:
sudo ./NVIDIA-Linux-x86_64-396.18.run -no-x-check -no-nouveau-check -no-opengl-files # 只有禁用opengl这样安装才不会出现循环登陆的问题
# -no-x-check:安装驱动时关闭X服务
# -no-nouveau-check:安装驱动时禁用nouveau
# -no-opengl-files:只安装驱动文件,不安装OpenGL文件
安装过程中的选项:
- The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 Continue installation 继续。
- Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。
- Install NVIDIA’s 32-bit compatibility libraries? 选择 No 继续。
- Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续
什么是Nouveau,为什么我需要禁用它?
Nouveau是NVIDIA gpu的一个显示驱动程序,是通过NVIDIA驱动程序的逆向工程作为一个开源项目开发的。它附带了许多当前的Linux发行版,作为NVIDIA硬件的默认显示驱动程序。它不是由英伟达开发或支持的,并且与英伟达驱动程序无关,除了一种情况,即 Nouveau和英伟达驱动程序都能够驱动英伟达gpu,这就是有时候我们疑似驱动安装成功了,但是并不能完美兼容所有的机器学习/深度学习框架及代码的运行。
一次只有一个驱动程序可以控制一个GPU。所以如果一个GPU是由 Nouveau驱动程序 驱动的,在安装NVIDIA驱动程序之前必须禁用 Nouveau驱动程序。
怎么禁用 Nouveau 呢?
Nouveau 采用的是在内核中执行的模式(kernel modeset)。 这可能会使禁用Nouveau变得困难,因为内核模式集用于显示帧缓冲控制台,这意味着即使X未运行,Nouveau也将被使用。 只要Nouveau正在使用,其内核模块就无法卸载,这将阻止NVIDIA内核模块加载。 因此,在安装NVIDIA驱动程序之前,确保禁用Nouveau的内核模式设置非常重要。
防止Nouveau 在内核模式集中加载和执行的一种简单方法是将模块加载器的配置指令添加到系统的一个模块加载器配置目录中的文件中:例如,/etc/modprobe.d/
或者 /usr/local/modprobe.d
。 从技术上讲,这些配置指令可以添加到这些目录中的任何文件中,但这些目录中的许多现有文件都是由您的开发商提供和维护的,这些文件可能会不时提供可能与您的更改冲突的更新配置文件。 因此,建议创建一个新文件,例如 /etc/modprobe.d/disable-nouveau.conf
,而不是编辑其中一个现有文件,例如流行的 /etc/modprobe.d/blacklist.conf
。 请注意,某些模块加载器只会在名称以.conf结尾的文件中查找配置指令,因此如果要创建新文件,请确保其名称以.conf结尾。
无论您选择创建新文件还是编辑现有文件,都需要添加以下两行:
blacklist nouveau
options nouveau modeset=0
第一行将防止Nouveau的内核模块在引导时自动加载。它不会阻止手动加载模块,也不会阻止X服务器加载内核模块;
如何防止 X server 加载Nouveau?
第二行将阻止Nouveau执行内核modeset。
没有内核modeset,就可以卸载Nouveau的内核模块,以防意外或故意加载它。
添加这些配置指令后,您需要重新启动系统才能使它们生效。
如果nvidia-installer检测到系统正在使用Nouveau,它将提供创建这样的modprobe配置文件以禁用Nouveau。(这么说来,是不是我们可以不通过手动方式去创建这个禁用文件呢?不过也好,阅读了这个教程我们就可以知道怎么禁止一个软件随意启动了 -。- )
如何防止 X server 加载Nouveau?
将Nouveau列入黑名单只会阻止它在启动时自动加载。如果X服务器作为正常引导过程的一部分启动,并且该X服务 使用Nouveau X驱动程序,那么仍然会加载Nouveau内核模块。如果发生这种情况,您应该在停止 X server 后 执行modprobe -r nouveau
脱机(unload Nouveau),只要您已经注意防止它做一个内核modeset;不过,最好确保X一开始就不加载Nouveau。
如果您的系统没有配置为在启动时启动X服务器,那么您可以在重启后运行NVIDIA驱动程序安装程序。否则,最简单的方法就是编辑 X server 的配置文件,使 X server 使用与您的卡兼容的非modeset驱动程序,例如 vesa
驱动程序。然后您可以停止X并像往常一样安装驱动程序。
关于这个请参考 X server 的文档以确定X服务器配置文件的位置。
注意:
有时候安装 Ubuntu 或者安装其驱动的时候,会出现错误,所以需要在 BIOS 中关掉 安全启动。