ubuntu16.04 安装Nvidia driver 英伟达驱动_unload nouveau kernel moudle-程序员宅基地

技术标签: ML  

安装过程
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 中关掉 安全启动

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/orDream/article/details/100061970

智能推荐

AVFrame&AVPacket_天天av-程序员宅基地

文章浏览阅读1.5w次。AVFrame:( This structure describes decoded (raw) audio or video data. AVFrame must be allocated using av_frame_alloc(). Note that this only allocates the AVFrame itself, the buffers for the data mus_天天av

Java经典例题07:用100元人民币兑换10元、5元、1元的纸币_编程把100元换成1元5元10元-程序员宅基地

文章浏览阅读3.5k次,点赞2次,收藏12次。解题思路分析:1.100元兑换10元纸币,可以兑换10张,但每种纸币都要有,所以最多只能兑换9张,最少兑换1张。则初始值为1;循环条件小于10或者小于等于9。2.100元兑换5元纸币,可以兑换20,但每种纸币都要有,所以最多只能兑换19张,最少兑换1张。初始值为1;循环条件小于20或者小于等于19。3.100元兑换1元纸币,可以兑换100张,但每种纸币都要有,所以最多只能兑换99张,最少兑换1张。则初始值为1;循环条件小于100或者小于等于99。_编程把100元换成1元5元10元

猜三次年龄_找人猜三次年龄-程序员宅基地

文章浏览阅读450次。1、允许用户最多尝试三次2、每尝试三次后,如果还没猜对,就问用户是否继续玩,如果回答Y,y,就继续猜三次,以此往复,如果回答N,n,就直接退出times=0count=3while times<=3:age=int(input(‘请输入年龄:’))if age == 18:print(‘猜对了’)breakelif age > 18:print(‘猜大了’)else:print(‘猜小了’)times+=1if times3:choose = input(‘继续猜Y_找人猜三次年龄

SDOI2017 Round2 详细题解-程序员宅基地

文章浏览阅读152次。这套题实在是太神仙了。。做了我好久。。。好多题都是去搜题解才会的 TAT。剩的那道题先咕着,如果省选没有退役就来填吧。「SDOI2017」龙与地下城题意丢 \(Y\) 次骰子,骰子有 \(X\) 面,每一面的概率均等,取值为 \([0, X)\) ,问最后取值在 \([a, b]\) 之间的概率。一个浮点数,绝对误差不超过 \(0.013579\) 为正确。数据范围每组数据有 \...

嵌入式数据库-Sqlite3-程序员宅基地

文章浏览阅读1.1k次,点赞36次,收藏25次。阅读引言: 本文将会从环境sqlite3的安装、数据库的基础知识、sqlite3命令、以及sqlite的sql语句最后还有一个完整的代码实例, 相信仔细学习完这篇内容之后大家一定能有所收获。

C++ Builder编写WinForm从Web服务器下载文件-程序员宅基地

文章浏览阅读51次。UnicodeString templateSavePath = ChangeFileExt(ExtractFilePath(Application->ExeName),"tmp.doc");IdAntiFreeze1->OnlyWhenIdle = false;//设置使程序有反应.TMemoryStream *templateStream ;templateStre..._c++webserver下载文件

随便推点

JAVA小项目潜艇大战_java潜艇大战-程序员宅基地

文章浏览阅读8.3k次,点赞10次,收藏41次。一、第一天1、创建战舰、侦察潜艇、鱼雷潜艇、水雷潜艇、水雷、深水炸弹类完整代码:package day01;//战舰public class Battleship { int width; int height; int x; int y; int speed; int life; void move(){ System.out.println("战舰移动"); }}package day01;//侦察潜艇_java潜艇大战

02表单校验的基本步骤-程序员宅基地

文章浏览阅读940次。表单校验的基本步骤_表单校验

libOpenBlas.dll缺失依赖解决办法-程序员宅基地

文章浏览阅读4.5k次。libOpenBlas.dll缺失依赖解决办法 intellij idea 1.dll文件缺失依赖,报错:“找不到指定模块”2.下载depends查看dll缺失文件3.下载缺失依赖libopenblas.dll出错起因由于java web项目需要调用openBlas库来进行运算,就下载了预编译的libopenblas文件进行调用,首先遇到路径出错问题、之后又是dll文件缺失依赖问题,以下是解决..._libopenblas.dll

Swoole 实践篇之结合 WebSocket 实现心跳检测机制-程序员宅基地

文章浏览阅读251次,点赞3次,收藏10次。这里实现的心跳检测机制是一个基础版的,心跳包的主要作用是用于检测用户端是否存活,有助于我们及时判断用户端是否存在断线的问题。在我之前开发过的项目中,有一个基于物联网在线直播抓娃娃的项目,其中就有需要实时监控设备在线状态的需求,该需求就是使用心跳包来实现的。实际上心跳检测技术,应用更广泛的是实时通信、或设备管理的场景偏多。

Maven dependency scope_maven dependent scope-程序员宅基地

文章浏览阅读714次。Dependency scope is used to limit the transitivity of a dependency, and also to affect the classpath used for various build tasks.There are 6 scopes available:compileThis is the default scop_maven dependent scope

TCP头部结构信息_tcp头部包含哪些信息-程序员宅基地

文章浏览阅读3.6k次。TCP 头部结构信息_tcp头部包含哪些信息