干掉Nouveau安装Linux Nvidia显卡驱动

article/2025/10/4 5:18:33

干掉Nouveau安装Linux Nvidia显卡驱动

  首先说明下什么是Nouveau,为什么有些系统安装N卡驱动的时候会提示“ERROR: The Nouveau kernel driver is currently in use by your system. This
  driver is incompatible with the NVIDIA driver……”之类的错误。

  Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,也没能得到NVIDIA的认可与支持。虽然Nouveau Gallium3D在游戏速度上还远远无法和NVIDIA官方私有驱动相提并论,不过确让Linux更容易的应对各种复杂的NVIDIA显卡环境,让用户安装完系统即可进入桌面并且有不错的显示效果,所以,很多Linux发行版默认集成了Nouveau驱动,在遇到NVIDIA显卡时默认安装。企业版的Linux更是如此,几乎所有支持图形界面的企业Linux发行版都将Nouveau收入其中。

  不过对于个人桌面用户来说,处于成长阶段的Nouveau并不完美,与企业版不一样,个人用户除了想让正常显示图形界面外很多时候还需要一些3D特效,Nouveau多数时候并不能完成,而用户在安装NVIDIA官方私有驱动的时候Nouveau又成为了阻碍,不干掉Nouveau安装时总是报错。报错提示见文第一段。

  一般安装Linux显卡驱动的步骤是:

(1)下载合适的驱动,无论是NVIDA还是ATI都推荐去官方下载
(2)如果下载的是源码文件则需要编译安装,不过现在官方提供的Linux显卡驱动多是以.run为后缀的,这种直接在命令行中 ./softname.run 运行即可安装。
(3)一般在操作第二步的时候会提示让你关闭X window,如下图:

进入命令行模式Kill掉gdm或kde再安装一般就无问题,而安装Nouveau的NVDIA显卡机器还多了一个步骤就是需要关闭Nouveau,这也就是本文要解决的问题。

  以下是关闭Nouveau并且安装Nvidia显卡驱动的步骤

  (1)把驱动加入黑名单

  编辑 /etc/modprobe.d/blacklist.conf ,在文件后面加入blacklist nouveau 

  (2)root用户下运行如下两条命令:

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

以上两条命令分别是备份与重建initramfs,如果你的Linux是debian或ubuntu系统运行命令时需要sudo。   这段无用
(3)重启系统至init 3(文本模式),也可先进入图形桌面再运行init 3进入文本模式,再安装下载的驱动就无问题,安装命令示例:
./NVIDIA-Linux-x86-285.05.09.run
安装过程根据提示完成即可。当然在安装之前你也可以先确认下Nouveau是已经被你干掉,使用命令: lsmod | grep nouveau
安装完成后重启系统即可设置你的桌面效果了。并且在系统–首选项还有了NVIDIA X Server Settings的选择项。
当 Linux 内核启动系统时,必须找到一个根文件系统,方能成功开机,而这个文件就是init,init的PID进程恒为1。启运过程中init紧随内核,用于引导其它主程序完成开机。建议查看下有关initramfs的资料,这样便于理解为什么安装个显卡驱动还是生成(编译)initramfs。

如果驱动更新了, 有两个办法可以安装,一个是自行下载好NVIDIA-Linux-x86-*.run安装。 另外一个办法就是直接让驱动自己去更新,假设已经有了11版,但是没有19版,可以在安装的时候加上更新参数 --update,安装程序会自动连接到官方服务器去下载新版本然后安装。执行:

sh NVIDIA-Linux-x86-100.14.11-pkg1.run --update


13.OK!

14.如果要卸载nvidia官方驱动,执行:

sudo sh ***.run --uninstall

15.如果要安装受限驱动,首先要编辑blacklist.conf,执行:

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

删除以下部分并保存:

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

然后执行:


sudo apt-get install nvidia-*
sudo apt-get install xserver-xorg-video-nouveau

重新启动后在“附加驱动”里选择相应的受限驱动,并激活。

OK!


Nouveau的DRM 组件将可能进入Kernel 2.6.33

  关注我们:     

Nouveau 是一个开源的 Nvidia 显卡驱动。相比之下 Nvidia 的官方驱动不是开源的,而开源的 xf86-video-nv 功能又很弱。对比官方驱动,Nouveau 的优势在于支持新内核的 Kernel Mode Setting 特性。在 Fedora 12 中,使用 Nouveau 驱动启动内核后会第一时间直接进入显示器的最佳分辨率,启动界面(不论文本还是图形)与 X、GDM 之间的切换、用 Ctrl+Alt+Fn 在 X 和终端间切换完全的"flicker free",使用体验大大增强。

但是其 DRM 模块部分一直没有进入内核的代码树。昨天在 Phoronix 网上看到一则消息,大意是说 Linus 看 Fedora 提供 Nouveau 已经很长时间了,希望 Nouveau 的 DRM 也进入内核。Nouveau 的维护者和 Fedora 的维护者则解释说主要是由于 Nouveau 是依靠反向工程来了解 NV GPU 的某些内部机制的,使用了一些 Microcode,而这些 Microcode 相关的代码进入内核可能有版权问题。Linus 回复说这些理由都是 BS(从几次 Linus 的发言来看这位还真是"牛气"啊),Fedora 是不是完全没有版权问题的发行版?是那么上述理由就是 BS,否则以后发布就别分发 Nouveau 驱动。

今天又看到上面一则消息,这件事的下文是这样:红帽公司的 David Airlie 和 Ben Skeggs 对 Nouveau 的内核部分代码进行了修改,Microcode 将使用内核的 Firmware 接口来加载。这样就避免了版权问题。

接下来引用一句原文:

In this pull request, there is the Nouveau driver that is set to go in the Linux 2.6.33 kernel under the staging area

也许 2.6.33 中,我们就能用上正式进入内核的 Nouveau 驱动,获得各种新特性了。

PS: NV 官方驱动虽然不支持 KMS,但是支持 OpenCL(G80+),视频加速方面支持 XvMC(G80-)和 Vdpau(G80+)。对于这些功能,Nouveau 并没有支持。实际上连 3D 功能 Nouveau 也不直接支持。现在的发展趋势是由 Mesa 和其中的 Gallium3D 来提供 OpenGL(也许甚至是 D3D)、OpenVG、、OpenCL 的支持。显卡驱动仅仅完成与显卡的基本交互。最近 Kernel 的图像部分发展成为了亮点,page flipping ioctl 进入 2.6.33("据说"不论对于 X 还是 Wayland 都很有用),现在 Intel/ATI/NV 的 KMS 驱动又都不断完善,Linux 用户的图形体验必将逐步增强。



http://chatgpt.dhexx.cn/article/RmRRsXyG.shtml

相关文章

centos7篇---禁用默认的驱动nouveau,安装cuda和cudnn

禁用默认的驱动nouveau,安装cuda和cudnn 硬件设施:1. 禁用默认的驱动nouveau2. 系统要求3. 软件更新4. 安装驱动5. 安装cuda6. 安装cudnn参考 硬件设施: centos7 NVidia显卡驱动:470.57 CUDA: 11.4.2 cuDNN: 8.2.4 1. 禁用默认…

ubuntu系统禁用自带Nouveau驱动

Nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,让Linux更容易的应对各种复杂的NVIDIA显卡环境,安装完Linux系统即可进入桌面并且有不错的显示效果,所以,很多Linux发行版默认集成了Nouveau驱动,在使用NVIDIA显卡时…

Ubuntu20.04 系统禁用自带的Nouveau驱动

注:该博文所述的方法同样适用于Ubuntu16.04、Ubuntu18.04版本系统。 nouveau(英语:/nuːˈvoʊ/) 是一个自由开放源代码GPU驱动程序,是为Nvidia的GPU所编写,也可用于属于系统芯片的高通系列,此驱动程序是由一群独立的…

400错误

400 请求出错 由于语法格式有误,服务器无法理解此请求。不作修改,客户程序就无法重复此请求。 原因: 1、前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装; 2、前端提交的到后台的数据应该是…

springboot访问400错误,记录一下

1.界面显示 spring boot启动,ip加端口会默认访问index.html页面。浏览器中输入,显示如上。开始以为是没有新建index.html页面的原因。所以我就在templates下面新建了index.html页面,重启,再访问。发现还是显示如上。后来查找资料…

接口报400错误解析

原文地址: https://blog.csdn.net/lw1242189467/article/details/80048407 首先,遇到400问题,最大几率是出现了数据类型不一致的问题,简单来说是Controller层不用正确读取你发送请求附带的参数。该例是我前端传送JSON格式&#x…

tomcat自定义400错误页面

原文链接&#xff1a;https://aspiresoftware.in/blog/catalinatomcat-custom-error-report-valve-to-handle-errors-exceptions/ <Valve className"org.apache.catalina.valves.ErrorReportValve" showReport"false" showServerInfo"false" …

java 400_Java项目报400错误的原因与解决方法

java项目中400错误介绍&#xff1a;(推荐&#xff1a;java视频教程) 400 Bad Request&#xff1a; 请求中的语法错误。Reason-Phrase应当标志这个详细的语法错误&#xff0c;比如”Missing Call-ID header field”。 HTTP 400 错误 - 请求无效 (Bad request) 在ajax请求后台数据…

uniapp:request 请求出现400错误

uniapp&#xff1a;request 请求出现400错误 开发需求&#xff1a;我们团队在使用 uniapp springboot 开发微信小程序项目&#xff0c;前端向后端发送request 请求时&#xff0c;前端爆出400错误。 400错误&#xff1a; 请求无效 (Bad request);出现这个请求无效报错说明请求没…

服务器返回400错误

运维的项目&#xff0c;莫名其妙的有些接口报了400错误&#xff0c;和前端一起检查了传参格式、传参实体类是否一一对应等&#xff0c;因为入参有中文&#xff0c;顺带把编码格式也查了&#xff0c;但都没问题&#xff0c;而且最神奇的是&#xff0c;正式服该接口就报400错误&a…

JAVA400错误_程序访问一个地址时候报400错误,浏览器访问正常怎么解决

最近凯哥在调程序的时候&#xff0c;发现以前好好的程序&#xff0c;突然不能用了。于是就本地断点&#xff0c;发现了如下错误&#xff1a; 程序通过httpClient访问一个地址的时候&#xff0c;提示&#xff1a;server returned HTTP Response code &#xff1a;400 fro URL:XX…

tomcat 400错误

本片文章是对tomcat 400 错误造成信息泄露&#xff0c;如何进行修复进行描述&#xff0c;希望可以对非安全专业的互联网工作人员提供一点帮助&#xff0c;本片文章内容确实也是笔者最近遇到的一些问题。 漏洞描述 tomcat 发生400 错误&#xff0c;暴露出中间件版本、以及程序…

html400错误,http400错误如何解决

还有不少小伙伴们都碰到了http400错误如何解决这个疑惑吧&#xff0c;那么究竟该怎样解决呢&#xff1f;不妨就让iefans网小编告诉大家处理http400错误方法讲解&#xff0c;希望能够帮助到各位解决这个问题。 方法/步骤分享&#xff1a; 一、前端ajax请求&#xff0c;修改需要使…

接口400错误解析

今天我遇上一个让我很痛心的错误400。对程序员来说&#xff0c;这可能是一个最简单的错误码。因为这个相应并没有进拦截器&#xff0c;更没有进到Controller层。可我在解决这个问题时&#xff0c;质询了很多朋友不解&#xff0c;百度各种方案无效。苦苦耗费我大半天时间。 首先…

400错误请求怎么解决_什么是400错误请求错误(以及如何解决)?

400错误请求怎么解决 A 400 Bad Request Error occurs when a request sent to the website server is incorrect or corrupt, and the server receiving the request can’t understand it. Occasionally, the problem is on the website itself, and there’s not much you c…

HTTP 400错误

HTTP 400错误&#xff1a; 400 是 HTTP 的状态码&#xff0c;主要有两种形式&#xff1a; 1、bad request 意思是 “错误的请求”&#xff1b;2、invalid hostname 意思是 “不存在的域名”。 400 Bad Request 是由于明显的客户端错误&#xff08;例如&#xff0c;格式错误的…

rapidjson安装学习

这里主要记录几个要点&#xff0c;后面来补充吧&#xff0c;很晚了 源码是鹅厂大佬写的&#xff0c;佩服佩服~ 一、RapidJSON介绍及资料 RapidJSON是腾讯开源的C JSON解析及生成器&#xff0c;只有头文件的C库&#xff0c;跨平台。 RapidJSON 是一个 C 的 JSON 解析器及生成器…

rapidjson安装使用

前言&#xff1a;仅个人小记。 正文 由于 rapidjson是 “header-only”的C库&#xff0c;故而直接将头文件目录拷贝到系统目录或者指定目录即可完成安装。 参考材料&#xff1a; rapidjson代码仓库 https://github.com/Tencent/rapidjson rapidjson 文档 https://rapidjson.…

rapidjson创建json字符串

参考链接&#xff1a;http://rapidjson.org/zh-cn/ #include "json/stringbuffer.h" #include "json/prettywriter.h"void getJson() {rapidjson::StringBuffer buf;rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(buf);writer.StartObj…

RapidJson踩坑记录

用于记录RapidJson使用中的坑位&#xff0c;持续更新。关于rapidjson的详细说明&#xff0c;可以参加参考文档&#xff1a;http://rapidjson.org/zh-cn/md_doc_tutorial_8zh-cn.html#CreateString 1、添加字符串元素 现象&#xff1a; #include "rapidjson/document.h&…