Linux Nvidia 驱动安装与优化

来源:互联网 发布:linux vi 行号 编辑:程序博客网 时间:2024/05/22 12:11

Linux的Nvidia显卡驱动是一个让人很头疼的问题。Nvidia为了保护其显卡架构没有开源其驱动,Nvidia本身对Linux 的支持也极为糟糕,所以Linux安装Nvidia驱动经常碰到各种问题,并且性能也落后于Windows系统。这里总结些信息便于以后查看,也希望对大家有用。

1. 删除旧Nvidia驱动

Ubuntu等Linux发行版中都会预装Nvidia的驱动,不过这都是老旧驱动,性能不好,需要删掉。

sudo apt-get remove --purge nvidia-currentXXX

如果要删除你自己以前安装的Nvidia的闭源驱动可以采用以下命令:

首先找到你下载的驱动,进入目录,然后使用以下命令:

 ./NVIDIA-Linux-x86-285.05.09.run --uninstall

2. 卸载nouveau驱动

有可能在卸掉本身的nvidia驱动后可能会加载将开源驱动nouveau驱动,因此需要屏蔽掉该驱动。

/etc/modprobe.d/blacklist.conf里加上blacklist nouveau


3.关闭图形环境

注销系统,然后点Ctrl + Alt +F1到第一控制台.输入用户密码(如果num lock亮着,再按两次), 然后输入命令关闭X.

sudo /etc/init.d/kdm stop  #适用于Kubuntu
sudo /etc/init.d/gdm stop  #适用于Ubuntu
sudo stop lightdm  #适用于Ubuntu(11.10)

如果不成功的话可以


4. 安装驱动

找到驱动位置,然后输入:

sudo sh NVIDIA-Linux-*.run

安装过程中

如果提示有旧驱动,询问是否删除旧驱动,选Yes;
如果提示缺少某某模块(modules),询问是否上网下载,选no;
如果提示编译模块,询问是否进行编译,选ok;
如果提示将要修改Xorg.conf,询问是否允许,选Yes;

5. Linux下Nvidia闭源驱动优化设置

5.1. 禁用 VBlank Sync (重要!)

HOW:打开 nvidia-settings ,找到“OpenGL Settings”,取消选择“Sync to VBlank”,并且将nvidia-settings -l 加入 autostart 中( GNOME 在gnome-session-properties 中设置)。

WHY: VBlank Sync 即所谓的“垂直同步”,即将 OpenGL 的渲染帧率限制到显示器的垂直刷新率,防止某些情况下画面出现撕裂,具体可以自己搜索一下。这个技术听上去很美,可事实上高帧率导致画面撕裂一般只会出现 在老旧的显卡驱动、游戏引擎和 CRT 显示器( LCD 的刷新原理与 CRT 略有不同)之下,在当今这一现象已经极少发生,打开这个功能将导致显卡的渲染性能受到极大限制(运行 glxgears ,你会明显观察到你的独立显卡渲染这样简单的几个齿轮居然都只有不到 100FPS UPDATE:glxgears不能代表性能),最典型的表现就是 GNOME Shell 的特效出现明显的卡顿。所以推荐平常不要使用该功能,仅当你在玩 Quake 之类的游戏、遇到画面撕裂现象时再把它开起来。

5.2. 关闭 NVIDIA Logo

HOW:编辑 /etc/X11/xorg.conf (如果没有该文件,请以 root 权限运行nvidia-xconfig 生成),在 Section “Device” 下加入一行 Option "NoLogo" "1"

WHY:我相信没有人会喜欢这玩意儿的吧……

5.3. 使用按需 VBlank 中断(笔记本推荐)

HOW:仍旧编辑 xorg.conf ,在 Device 节中加入 Option "OnDemandVBlankInterrupts" "1"UPDATE 最新的 nvidia-settings 中已经引入了这项设置。

WHY: NVIDIA 驱动默认会对每一次垂直刷新产生一个中断,这将会导致较大的电源消耗(使用 powertop 工具可以清楚地观察到),使用按需中断将会把中断减少到每秒几个的水平。

5.4. 强制 pixmap 缓存到显存中

HOW:在开机时运行 nvidia-settings -a InitialPixmapPlacement=2 (方法同1)。

WHY: NVIDIA 驱动默认将 pixmap 缓存到系统内存中,而现今独显的显存越来越大,且 Linux 下也很少大量使用显存的情况,所以将 pixmap 放到速度快上许多的显存中将会 2D 绘图的提高性能——这对于 Firefox 之类大量使用 pixmap 的程序将会带来巨大的影响(参看这里)。

5.5. 可恶的 nvidia-settings

UDPATE:最新版驱动(310.19)所附带的 nvidia-settings 已经解决了下文所说的 bug ,而且对显示器 Gamma 值配置项的写法有了一些小修改。推荐删掉旧的配置文件,重新配置。

===========For version < 310=============

在我自己使用第4项优化时,我想为何不干脆把这个配置写入 .nvidia-settings-rc 中,与第1项优化一并读取呢?于是我就尝试了一下(文件格式还是比较容易懂的,注意要在配置项之前加上“0/”前缀,表示是 X Screen 0 的配置)。结果过了几天当我再打开文件时发现这一行被神奇地删除了。

后来,在用 nvidia-settings 调整 Gamma 值的时候,我意外地发现了原因所在。每次我调完 Gamma 值,关掉设置程序再重新打开时,屏幕就会突然变亮(我的屏幕的 Gamma 偏差很大、明显发白),进去一看发现 Gamma 又被恢复为 1 了。原来nvidia-settings 在启动时会把某些配置项重置……

上网搜了一下没有发现什么有价值的资料,不过既然是 Linux ,那么最简单直接的方法就是把 .nvidia-settings-rc 的写权限去掉。果然,问题顺利解决……如此一来,只要配置好之后把文件设置为只读,以后就只需在开机时执行nvidia-settings-l读取设置即可。

=========================================

P.S. 经过实验,推荐使用 DM 的 autostart 读取配置(即使用 gnome-session-properties 等进行配置),不要放在 xinitrc 、 xprofile 或是其他的 X 初始化文件中——我观察到这样的做法会导致在用户登陆后配置被重置。

6. 参考文献

[1] NVIDIA Ubuntu中文 , http://wiki.ubuntu.org.cn/NVIDIA

[2] ubuntu 12.04 安装官方nvidia显卡驱动, http://forum.ubuntu.org.cn/viewtopic.php?f=42&t=372630

[3] Linux 下 NVIDIA 显卡闭源驱动的一些优化,http://blog.robotshell.org/2012/linux-nvidia-driver-tweak/

0 0
原创粉丝点击