红联Linux门户
Linux帮助

如何实现 Linux下的NVIDIA 3D

发布时间:2006-10-29 21:53:00来源:红联作者:novemberfa
  转载,大家可以参考学习下

  现在,PC的功能不再限于编写、数据表与网络浏览。越来越多的人们喜欢在其系统上玩 3D游戏。为了使Linux成为大众的操作系统,它也提供了3D游戏功能。所以我最终决定看一下:NVIDIA最近为其3D卡提供统一Linux驱动程序的努力是否使Linux也成为了3D游戏玩家的操作系统。我对最后的结果非常满意。

  安装NVIDIA的最新Linux驱动程序

  我想向Linux提出一点:目前,在Linux下安装驱动程序比在微软操作系统下安装困难。所以,我想就这一问题花较长的篇幅,希望能够尽可能的详细一点。我在新闻组上看到了许多人在安装NVIDIA驱动程序时遇到了麻烦,但是多数人都能幸运地解决问题。

  NVIDIA的统一驱动结构

  我并不了解你,但是我从市场部的人们以及新闻界那儿频频听说了出色的“统一驱动结构”,对此我几乎听烦了。对多数的Windows用户而言,这算不了什么。我们已经习惯了用于硬件的Windows98与Windows2000驱动程序,所以为什么在乎那些驱动程序是否也能适用于其它硬件呢?

  这对Linux用户就大不一样了。以前,Linux用户必须在一段时间后,才能等到专门硬件的驱动程序。多数情况下,Linux界之外的某些用户会自己编写一套驱动程序,因为零售商懒得去支持Linux。现在,情况正在得到改善,你可以在所购的Linux的经销包装中找到支持多数系统部件的驱动程序。然而,在快速变化的图形卡市场上,情况有点吃紧。你可以方便地为图形卡获得2D功能的驱动程序,但是遇到3D支持时便不灵了。所以,NVIDIA的统一Linux驱动模式好比一个福音。无论你使用的是TNT2、Vanta、TNT2 Ultra、GeForce SDR、GeForce DDR、GeForce 2 GTS、GeForce 2 MX、Quadro、Quadro2还是NVIDIA即将推出的新型3D解决方案,它们都能够与在一个驱动程序下运作。事实上,在安装后,你可以将图形卡与另一个图形卡交换,然后重新启动Linux的对话框,系统仍能动作。 对Linux用户来说,这是一个大大的进步!
文章评论

共有 2 条评论

  1. ylc2014 于 2014-08-14 13:13:53发表:

    谢谢分享。

  2. novemberfa 于 2006-10-29 21:54:19发表:

      第二步 - 安装基本的NVIDIA驱动程序“NVdriver”

      用于NVIDIA卡的驱动程序实际上分为两种。一个是基本部分,通过模块加入内核心,另一个是真正的XFree/GLX驱动程序。让我们先注意一下较难的内核部分。

      你可以在这里找到所有你需要的NVIDIA驱动程序。请你拿走你需要的任何一个内核驱动程序版本。对RedHat用户来说最简单,因为NVIDIA以RPM形式提供驱动程序。像我这样的非RedHat用户(我是SuSE的追随者)可以在另一种RPM或者源代码中选择。我建议源代码文件,因为这比安装RPM文件更简单。我将为非RedHat 用户讲述安装过程,因为RedHat 用户不会有什么问题的。

      对于这一步骤,你显然需要登记为“root”(根)。你可以登记为“root”,或者键入“su”,并输入你的根密码。在你下载了源代码文件“NVIDIA_kernel-0.9-4.tar.gz”后,将其解压在一个目录中。在你“make(创建)”代码之前,我建议你先确保在/usr/include/linux中含有“autoconf.h”文件,因为该文件反映了你的真实内核心。不过也未必尽然!两种安装版本,源文件与RPM会进入“/usr/include/linux/autoconfig,h”或者“/usr/src/linux/include/autoconfig.h”去查找内核设置。 两件事情十分重要。

      * 你在运行SMP内核吗?如果是的话,你应该在“autoconf.h”文件中找到“define CONFIG_SMP 1”一行。如果没有的话,你会看到“#undef CONFIG_SMP。请确保这一行是正确的,否则你的驱动程序无法运行!

      * 你的内核配有可装载的AGP模式“agpgart.o”吗?如果没有的话,你应当考虑创建一个并予以安装。如果你没有的话,而且不想要的话,或者不会创建的话,请你保证在“autoconf.h”中没有这样的两行字:“define CONFIG_AGP 1”或者可能是“define CONFIG_AGP_MODULE 1”。第二行表明你在Linux对话框中安装了可装载模式“agpgart.o”,而第一行指你的系统拥有编入内核的AGP驱动程序,据我所说现在并不建议如此。键入“/sbin/lsmod”检查一下是否含有些模式。可能模式已经被装载了(其实不太可能),这样你可以看到一张已装载的模式清单。如果清单中没有“agpgart.o”,你可以输入“/sbin/insmod agpgart”。如果模式在那儿,这就说明装载成功了。你有可能看到错误的信息“设备或资源正忙”。这是一条愚蠢的错误信息,实际上是想告诉你 “agpgart.o”无法识别你的AGP芯片组。不要担心,你可以键入“/sbin/insmod agpgart agp_try_unsupported=1”。多数情况下这样便能将其装载完毕了,除非你的AGP芯片组特别奇怪。如果你不能装载“agpgart.o”,那么在你安装驱动程序前,你应当从“autoconf.h”中删除上述几行,因为否则的话驱动程序会无法运作,因为它依靠的是AGP驱动程序提供的资源。

      在你确定“/usr/include/linux/autoconfig.h”的确显示了直接的内核设置之后,你便可以在目录中输入“make”,该目录是你将NVIDIA驱动源代码文件解压的地方。如果一切顺利的话,“NVdriver”文件会被装载在“/lib/modules//video”目录中,而且已经启动。请确定用“/sbin/lsmod”进行了装载。该文件应该在列表中显示。

      如果你没有按照我的建议进行,你可能会遇到以下两条错误信息中的一个,而且NVdriver无法装载(如果在“/sbin/lsmod”列表中没有找到的话,用“/sbin/insmod NVdriver”再试一遍):

      • 你会看到含8个“unresolved symbol agp_...”(未解决的符号agp...)的列表

      这表明驱动程序依靠AGP驱动程序“agpgart.o”,然而该程序尚未装载。如果你可以的话,请用“/sbin/insmod agpgart”或者“/sbin/insmod agpgart agp_try_unsupported=1”进行装载。如果这还不凑效,你就得重新创建驱动程序了。从“/src/include/linux/autoconf.h”中删除所有的AGP内容,清理驱动程序的目录,然后重新“make”(创建)。这一次驱动程序应当装载了,但是不含AGP GART支持,所以性能会差一点。

      • 你会看到错误信息“未解决的符号tqueue_lock”

      虽然驱动程序作为SMP驱动程序编辑,但是你的系统不是一个多处理器系统。如上更改autoconf.h,清理创建目录,再次创建驱动程序。这次应该装载了。

      如上所述,许多AGP芯片组需要用于“agpgart.o ”的设定“agp_try_unsupported=1”。该驱动程序实际上只支持英特尔的440BX、440GX、、i810、i810e、威盛 Apollo Pro与AMD Irongate芯片组。如果你使用的是不同的芯片组,那么你会很高兴地听到设定“agp_try_unsupported=1”在许多情况下都能适用。我已经成功地试用了英特尔的i815与i820芯片组,以及威盛的Apollo Pro133A、Apollo KX133与Apollo KT133。为了确保在驱动程序需要装载时该设定一直有效,你需要修改“/etc/modules.conf”。其中应该包括“alias char-major-10-175 agpgart”一行。下面包括“options agpgart agp_try_unsupported=1”一行,如果你有如果所述的“不支持”芯片组,那么你的AGP驱动程序应该可以无误地进行装载。

      将NVIDIA驱动程序装入“modules.conf”有两种方法。我发现如果你想恰当地启动AGP,i815芯片组就需要设定“NVreg_UseKernelAGP=1”了。拥有威盛 Apollo Pro133A芯片组主机板的用户可以试一下“NVreg_EnableVia4x=1”来启动AGP4x模式。为了能够永久地启动这个特性,请找到“alias char-major-195 NVdriver”,并输入“options NVdriver NVreg_UseKernelAGP=1 NVreg_EnableVia4x”一行。另外还有两个选项“NVreg_ReqAGPSBA=0/1”(预设为1)来切换AGP侧频寻址;“NVreg_ReqAGPFW=0/1”来切换至快速写入。目前为止一切顺利。