禁用Nouveau,安装Linux Nvidia 显卡驱动

2023-05-16

https://blog.csdn.net/misiter/article/details/7652731
干掉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 用户的图形体验必将逐步增强。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用Nouveau,安装Linux Nvidia 显卡驱动 的相关文章

  • Awk - 计算两个文件之间的每个唯一值和匹配值

    我有两个文件 首先 我尝试获取第 4 列中每个唯一字段的计数 然后匹配第二个文件的第二列中的唯一字段值 File1 第 4 列的每个唯一值和 File2 第 2 列包含我需要在两个文件之间匹配的值 所以本质上 我试图 gt 如果 file2
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6
  • 使用 inotify 的正确方法是什么?

    我想使用inotifyLinux 上的机制 我希望我的应用程序知道文件何时aaa被改变了 您能给我提供一个如何做到这一点的示例吗 文档 来自监视文件系统活动 inotify https developer ibm com tutorials
  • 如何使用 echo 写入非 ASCII 字符?

    如何写非ASCII http en wikipedia org wiki ASCII使用 echo 的字符 是否有转义序列 例如 012或类似的东西 我想使用以下方法将 ASCII 字符附加到文件中 echo gt gt file 如果您关
  • 找出 Linux 上的默认语言

    有没有办法从C语言中找出Linux系统的默认语言 有 POSIX API 可以实现这个功能吗 例如 我想要一个人类可读格式的字符串 即德语系统上的 German 或 Deutsch 法语系统上的 French 或 Francais 等 有类
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • 如何在gnuplot中将字符串转换为数字

    有没有办法将表示数字 以科学格式 的字符串转换为 gnuplot 中的数字 IE stringnumber 1 0e0 number myconvert stringnumber plot 1 1 number 我可能使用 shell 命令
  • 如何确定代码是否在信号处理程序上下文中运行?

    我刚刚发现有人正在从信号处理程序调用我编写的绝对不是异步信号安全的函数 所以 现在我很好奇 如何避免这种情况再次发生 我希望能够轻松确定我的代码是否在信号处理程序上下文中运行 语言是 C 但该解决方案不适用于任何语言吗 int myfunc
  • 查看 Linux 上的多核或多 CPU 利用率

    我有一个在 Linux 上运行的程序 我需要确定它如何利用所有 CPU 内核 有没有什么程序可以查看这些信息 跑过 top 命令并按下 1 查看各个核心
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • XAMPP Windows 上的 Php Cron 作业

    嗯 我是这个词的新手CRON 据我所知 这是一个Unix安排特定操作在定义的时间间隔后执行的概念 我需要运行一个php文件 每小时更新一次数据库 但我的困惑在于安排执行 我在用XAMPP用于 Windows 7 上的本地开发测试 我发现了什
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t
  • 使用c在linux上分块读写

    我有一个 ASCII 文件 其中每一行都包含一个可变长度的记录 例如 Record 1 15 characters Record 2 200 characters Record 3 500 characters Record n X cha
  • 在非实时操作系统/内核上执行接近实时任务的最佳方法是什么?

    在一台 GNU Linux 机器上 如果想要执行 实时 亚毫秒级时间关键 任务 您几乎总是必须经历漫长 复杂且容易出现问题的内核补丁过程 以提供足够的支持 1 http en wikipedia org wiki RTLinux Backg
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam

随机推荐

  • 用ChatGPT来分析Python装饰器有那些高级使用场景并给出案例

    问题一 xff1a python 装饰器都有那些高级使用场景 Python装饰器是一种高级的语言特性 xff0c 它可以用于修改 扩展或包装函数和类的行为 xff0c 使代码更加优雅和简洁 以下是一些常见的高级使用场景 xff1a 1 权限
  • PHP匿名类的使用场景有哪些?PHP匿名类怎么用?有什么好处?PHP匿名类如何在运行时动态生成?

    以下是一些使用匿名类的场景 xff1a 2 简单的工厂模式 xff1a 当需要在运行时动态创建一些简单的对象时 xff0c 可以使用匿名类替代创建不必要的类定义和文件 span class token keyword function sp
  • ChatGPT API SSE(服务器推送技术)和 Fetch 请求 Accept: text/event-stream 标头案例

    实战代码github代码 xff1a chatgpt google extension 该代码以Chrome 插件的实用案例讲解了 fetch sse 的用法 xff0c 之前这个技术被用得很少 xff0c 大家基本上都直接用 websoc
  • Qt与Python混合编程(一)

    前言 本文主要介绍使用Qt和Python进行混合编程的环境搭建 运行环境 Qt 5 13 0 64位 MinGW 64编译器Python 3 9 6 64bit 注意 Qt编译器的版本号需要和Python的版本号一致 xff0c 不然编译时
  • centos7 防火墙

    CentOS 7 0默认使用firewall作为防火墙 1 切换到 root 用户 xff1a su root 2 命令 xff1a systemctl stop start firewalld service xff08 关闭 开启防火墙
  • CentOS7安装MySQL

    CentOS默认安装有MariaDB xff0c 这是MySQL的分支 但还是要在系统中安装MySQL xff0c 且安装完成后可直接覆盖MariaDB 1 下载并安装MySQL官方 Yum Repository wget i c http
  • 单片机烧录不进去怎么办?通用类!

    我们经常会遇到芯片超时 xff0c 单片机烧录不进去的情况 xff0c 我也经常遇到 xff0c 哎 xff01 解决办法 xff1a 这里是我对遇到的一些情况总结 xff0c 只有几点 xff01 1 串口驱动没有装 xff1b xff0
  • 远程连接到CentOS Mysql出现的问题解决

    1 确保端口开放 以下命令开启3306端口 iptables I INPUT p tcp dport span class token number 3306 span j ACCEPT 2 确保Mysql允许本地ip地址连接 在远程服务器
  • debian忘记root密码怎么找回

    debian忘记root密码怎么找回 作者 admin时间 2021 06 03分类 Linux 写这篇文章是因为vulnhub的靶场上vmware上不能自动获取ip xff0c 要改一下ip配置文件 grub界面按e xff0c 在大约倒
  • .dmp数据备份与还原

    dmp一般用来备份数据库或者导入数据库 xff0c 通常我们得到一个dmp文件 xff0c 那怎么将dmp文件导入数据库呢 xff1f ctrl 43 R 输入cmd进入dos命令 sqlplus system a 登录system用户sh
  • 创建hbase索引表之hbase与hadoop整合

    hbase创建索引表只是为了减少查询表中数据的时间 xff0c 优化查询 但是前提是表中数据很大的情况下 xff0c 表数据很少完全没有必要建立索引表 建立索引表是一种以空间换取时间的做法 下面来看这道题 以下是实现索引表的代码 packa
  • Hbase对数据表的增删改查和对数据的增删改查

    span class hljs keyword package span hadoop42 006 hbase01 span class hljs keyword import span java io IOException span c
  • Zookeeper工具类的封装

    span class hljs keyword package span com yc hadoop zookeeper span class hljs keyword import span java io IOException spa
  • linux下安装redis

    REmote DIctionary Server Redis 是一个由Salvatore Sanfilippo写的key value存储系统 Redis是一个开源的使用ANSI C语言编写 遵守BSD协议 支持网络 可基于内存亦可持久化的日
  • moment 时间国际化问题

    moment 时间国际化问题 moment国际化时间的设置方法支持的语言类型 moment国际化时间的设置方法 支持的语言类型 af js br js en gb js fr ch js it js mi js pa in js ss js
  • VC中TRACE与OutputDebugString

    在debug模式下 xff0c 两者都输出在下面的窗口 34 debug 窗口 xff1b 在Release模式下 xff0c TRACE不起作用 OutputDebugString可以通过dgbview exe查看
  • Ubuntu 安装 Anaconda

    Anaconda 是一个用于科学计算的 Python 发行版 xff0c 软件支持 Linux Mac Windows 整合众多流行的科学计算 数据分析等 Python 包 Anaconda利用工具 命令conda来进行package和en
  • docker开放端口

    参考了文章 lt win10 Docker 创建Centos7 并使用xshell成功连接 gt 实现了xsheel连接docker xff0c 但是docker中的端口在外部不能直接访问 后来搜到简书上的文章 lt Mac下 Docker
  • 双曲三角函数图像及计算

  • 禁用Nouveau,安装Linux Nvidia 显卡驱动

    https blog csdn net misiter article details 7652731 干掉Nouveau安装Linux Nvidia显卡驱动 首先说明下什么是Nouveau xff0c 为什么有些系统安装N卡驱动的时候会提