LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2823|回复: 4

轻松校对NVIDIA说明文件,编号005!!![9月16日更新]

[复制链接]
发表于 2002-9-16 19:00:24 | 显示全部楼层 |阅读模式
 楼主| 发表于 2002-9-16 19:01:28 | 显示全部楼层
今天开始校对编号005,希望大家热情参与:

******************************



005

常见问题释疑
Q :当诊断显示问题时,我在哪儿应该开始?
A:最有用的工具之是在 /var/log 的 XFree86 记录文件(文件被命名:“/var/log/XFree86.<#> .log ”,“<#>”在此是服务器数字--通常是 0 )。
开始行“( II )”是信息,“( WW )”是警告,“( EE )是错误行。
你应该保证正确设置文件(即设置你正在编辑的文件)被使用;
寻找开始的行:
“(==)使用设置文件:”。
另外检查 NVIDIA 驱动程序正在被使用,而非“ nv ”或“ vesa ”驱动程序;
请找到:“( II ) LoadModule :” nvidia “”,并且从driver的行应该是:
“( II ) NVIDIA ( 0 )”。
Q :我怎么能增加在 XFree86 记录文件输出的数据数量?
A:在缺省情况下, NVIDIA X 驱动程序相对输出很少消息到 stderr(标准错误) 和 XFree86 记录文件。
如果你需要诊断问题,要让 XFree86 启用更verbose(详细)的输出,可以选择“-verbose”并且“- logverbose ”它是被用来设置为stderr和log发送消息详细程度。
当详细程度在5以上时, NVIDIA X driver将输出更多的消息(XFree86 缺省值 stderr是1,log是3 )。
因此,启用verbose从 NVIDIA X 驱动程序发送详细消息到记录文件和stderr ,你只要由在 :“ startx ---verbose 5 - logverbose 5'后启动X。
Q :我的 X 服务器没能开始,并且我的 XFree86 记录文件包含错误:
“( EE ) NVIDIA ( 0 ):没能了初始化 NVdriver 核心模块!”
A:如果 NVdriver 核心模块不适当工作,没有东西能工作。
如果你在 X 记录文件看见任何东西,象“( EE ) NVIDIA ( 0 ):没能初始化 NVdriver 核心模块!”
那么很可能 NVdriver 核心模块有问题。
第一,如果你从 rpm 安装,你应该验证rpm包。
你也应该检查模块.被装载在(“/sbin/lsmod');如果没被装载请尝试用” insmod “或” modprobe “装载.(请务必在安装一个新核模块前退出 X 服务器)。
如果你收到未解决标志的错误,然后核模块很可能被装载了与你正在运行的不同的核心模块。
你能控制核心文件的使用,从NVIDIA_kernel tar文件装载NVdriver :
“make install SYSINCLUDE=/path/to/kernel/headers'.
请注意为核心文件的位置通常处于变化的状态,它是核模心块的路径。
如果核心模块没能适当的装载, modprobe/insmod 可能正在试着装载一个更旧的核模块(假定你升级了)。
进有新核心模块的目录的 cd'ing 并且“ insmod ./NVdriver ”可以有所裨益。
最后, NVdriver 可以打印问题的错误消息--要到看这些消息请检查 /var/log/messages ,或者syslog被指向的核心信息.
Q : X已启动,但是 OpenGL 应用很快地终止。
A:如果 X 开始,但是 OpenGL 引起问题,可能其它的库程序有问题,或者有陈旧 symlinks 。
细节请看见附录 C 。
有时,它拿的所有是使再开动“ ldconfig ”。
你应该也检查正确的扩展名;
“ xdpyinfo ”应该显示“ GLX ”,“ NV-GLX ”“ NVIDIA-GLX ”的扩展名。
如果这些 3 种扩展不在,,很可能是装载的 glx 模块或它的问题不能装载 GLcore 。
检查你的 XF86Config 文件并且保证你正在装载 glx (见“编辑你的 XF86Config 文件,在上面”)。
如果你的 XF86Config 文件是正确的,那么为从属到 GLX 的警告/错误检查 XFree86 记录文件。
也检查必要的 symlinks 的所在地方(参考附录 C )。
Q :当由 srpm 开始安装/升级时,命令:
“ rpm --rebuild NVIDIA_kernel-1.0-2960.src.rpm'仅仅打印出 rpm 命令行选择的一张表。
A:你很可能没安装 rpm 开发组件。
大多数情况你能安装你的 rpm-devel 包裹解决这个问题。
另外地,你能由tar 文件的安装/升级不需要 rpm 。
Q :当由 srpm 的安装/升级时,命令:
“ rpm --rebuilt NVIDIA_kernel-1.0-2960.src.rpm'报告错误:
NVIDIA_kernel-.src.rpm:no such file or directory
A:你需要为你的发行版安装rpm安装包。
另外地,你能由作为 tar 文件的 tar 文件的安装/升级不要求 rpm 。
Q :安装 NVIDIA_kernel 模块,返回一条错误信息:
#error Modules should never use kernel-headers system headers
#error but headers from an appropriate kernel-source
A:你需要先为 Linux 核心安装驱动。
Q: OpenGL 显示下列错误消息并退出:
Error: Could not open /dev/nvidiactl because the permissions
are too restrictive. Please see the FREQUENTLY ASKED QUESTIONS
section of /usr/share/doc/NVIDIA_GLX-1.0/README for steps
to correct.
A:为 PAM 系统的安全模块可能正在改动 允许的NVIDIA 设备文件。
在大多数情况中这个安全系统正常工作,但它也有糊涂的时候。
为了修正这个问题,你停用这个安全特征,
不同的 Linux 发行版有不同的文件控制;
如果你的系统有文件 /etc/security/console.perms 你可以编辑文件并且删除以“<dri>”开始的行.
如果相反你的系统有文件 /etc/logindevperms 你编辑文件并且删除列在/dev/nvidiact
以上步骤将阻止 PAM 安全系统在 NVIDIA 设备文件上修改.
然后,你将需要在设备文件上重新设定回到他们的原来的许可和所有者。
用下列命令:
chmod 0666 /dev/nvidia * chown root/dev/nvidia *
Q : OpenGL 崩溃并且打印出下列警告:
WARNING :你的系统有多臭虫的动态的装载器。
这可以在某个应用引起冲突。
如果你系统崩溃,你能试着给环境变量的 __GL_SINGLE_THREADED 。
请在文件/usr/share/doc/NVIDIA_GLX-1.0/README为更多的信息请教常见问题.
A:在你的系统上的动态装载器有将引起与 pthreads 的链接,并且dlopen ()多重 libGL 崩溃。
这个臭虫(BUG)在动态的装载器的更旧的版本存在。
但是 RedHat Linux 6.2 和曼德拉草 Linux 7.1不存在此臭虫。
版本 2.2 并且以后动态的装载器会正常工作。
如果崩溃的是单线程可改变环境变量.,variable__GL_SINGLE_THREADED 将阻止崩溃。
在bash shell中你敲入export__GL_SINGLE_THREADED 并且在 csh 和derivatives使用setenv __GL_SINGLE_THREADED.
NVIDIA 驱动的先前的版本试图围绕这一问题工作,然而解决办法与另外的应用程序引起了问题所以在版本 1.0-1541 以后被被取消。
Q :当我运用 Quake3 时,当改变影象模式时,崩溃!是什么原因?
A:你可能正在经历上面已经描叙过的问题。
请检查“警告”输出信息中的提示。
如上所述在跑前 Quake3设置Setting __GL_SINGLE_THREADED将解决这个问题。
Q :当我开始 X 时失败,我的 XFree86 记录文件包含:
II) LoadModule: "nvidia"
(II) Loading /usr/X11R6/lib/modules/drivers/nvidia_drv.o
No symbols found in this module
(EE) Failed to load /usr/X11R6/lib/modules/drivers/nvidia_drv.o
(II) UnloadModule: "nvidia"
(EE) Failed to load module "nvidia" (loader failed, 256)
...
(EE) No drivers available.

A: nvidia_drv.o X driver需要符号的丢失了;
rpm 的一些版本(错误地)当安装时,替代对象文件。
你应该可能升级 rpm 的版本。
或,你能从 tar 文件安装 NVIDIA_GLX 包。
Q :我的系统能跑,但是似乎不稳定。
是哪里出问题了?
A:你的稳定性问题可能同AGP-related有关。
为细节看见附录 F 。
Q :当 X 开始时,核模块不能到动态地装载了;
我必须首先“ modprobe NVdriver ”。
问题出在哪里?
A:保证“alias char-major-195 NVdriver ”在你的模块配置文件出现的行,通常是“ /etc/conf.modules ”,“ /etc/modules.conf ”
或“ /etc/modutils/alias ”之一
;有关细节请看文档。
Q :我不能建立NVdriver核心模块,或我能建立NVdriver 核模块,但是 modprobe/insmod 没能装载模块进我的核心。
问题出在哪里?
A:这些问题通常被引起由造使用错误的核心文件(如你正在运行的一个不同版本的核心文件)。
习惯过去常是核心文件应该在“/usr/include/linux/”被存储,但是被赞成“ /lib/modules/'uname - r'/build/include ”的反对.
NVIDIA_kernel Makefile 应该能被指定路径;
然而,如果你遇见一个问题,你能强迫安装headrt文件:“make SYSINCLUDE=/path/to/kernel/headers'.
显然,不管你是怎么作的,你都需要头系统上安装了的适当的核心文件。
请查看与你的文档;
一些发行版缺省不安装某些核心文件,或他们安装的与你正在工作的核心不一致。
Q : OpenGL 应用程序为什么跑得这样慢?
A:程序可能仍然在你的系统上正在使用一个不同的库,而非 NVIDIA 供应的OpenGL 库。
细节请看附录 C 。
Q :用 Quake2有问题 。
A: Quake2 要求一些次要东西的安装。
首先,在 Quake2 目录,建立指向 libMesaGL.so 的 libGL.sosymlink 。
将symlink 移开或重命名。
然后,到在 OpenGL 模式的跑 Quake2 ,你输入:“ quake2 +set vid_ref glx +set gl_driver libGL.so ”。
Quake2似乎不支持任何种全屏模式,但是你能运行在的 X 服务器的Quake2无论什么分辨率下仿效全屏模式。
Q :运行 Heretic II有问题 。
A: Heretic II缺省时 也安装一个symlink 在应用目录叫了 libGL.so 。
你能删除或重命名这 symlink ,系统将发现缺省 libGL.so (我们的driver在 /usr/lib ).从在 Heretic II 以内你能然后设定你的在影象菜单使模式变为到 OpenGL 。
也有在到从 lokigames 的 Heretic II 可得到的一个补丁:
http://www.lokigames.com/products/heretic2/updates.php3
Q :我在哪儿能得到 gl.h 或 glx.h 因而我能编 OpenGL 程序?
A:大多数系统与预装的这些。
然而, NVIDIA 提供了我们的自己的 gl.h 和 glx.h 文件以防你的系统阻止你使用我们开发的新的 NVIDIA OpenGL 扩展的 OpenGL 应用软件。
这些文件在 /usr/share/doc/NVIDIA_GLX-1.0/include/GL 被安装以避免与安装的系统冲突版本。
为了使用,可将这些文件拷贝进/usr/include/GL.
Q :我能收到新版本的NVIDIA Accelerated LinuxDriver Set电子邮件通知吗?
A:是的。
在:http://www.nvidia.com/view.asp ? FO=driver_update 填写表格
Q :如果我把 rivafb 启用,切换vt时,我的系统就挂起。
A:同时使用 rivafb 和模块当前的 NVdriver 核心模块是造成挂起的原因。
总的来说,使用 2 个独立的软件驱动程序驱动硬件的是一个坏想法。
Q :编译NVdriver 核模块给出这个错误:
你好象要用与编译的核心不同的编译器编译 NVdriver 核模块。
这可以是完美地好的,但也有可能造成不法预料的系统崩溃。
如果你知道你正在做什么,并想撤销这个检查,你可以设置 IGNORE_CC_MISMATCH 做。
或者,给被用来编核的编译器的名字设定 CC 环境变量。
A:你应该与被用来编你的核的一样的编译器版本编 NVdriver 核模块。
一些 Linux 核心数据结构依赖于过去编译它 gcc 的版本;
例如,在include/linux/spinlock.h:……
*大多数 gcc 版本与空的 initializers 有一个不干净的臭虫。
*/ #if (__GNUC__> 2 ) typedef struct {} rwlock_t ;
#define RW_LOCK_UNLOCKED ( rwlock_t ){} #else typedef struct { int gcc_is_buggy ;
} rwlock_t ;
#define RW_LOCK_UNLOCKED ( rwlock_t ){ 0 } #endif 如果核心是用gcc 2.x 编译,但安装NVdriver时, gcc 3.x 被使用(或反过来也如此),
rwlock_t 的大小将变化,并且像 ioremap等将失败。
检查编译你的核用什么 gcc 的版本cat /proc/version 当前在你的 $PATH检验gcc用:gcc - v
Q : X因错误失败“没能分配 LUT 设备场景 DMA ”
A:这是由不同的 gcc 版本编 NVdriver 造成的(看上面)。
Q :为什么不可以从<insert your favorite distro here>的版本N得到的 NVIDIA_kernel RPMs .我试着用版本 N-1 安装 RPM ,但是没有用。
我应该怎么办?
A:像它说在( sec-01 )选择适合你系统的 NVIDIA ,如果“一特定的 NVIDIA_kernel rpm 不为你的发行版自带的,那么请使用 NVIDIA_kernel srpm 或 tar 文件”。
Q :当我安装 NVIDIA_GLX 包裹时,它说:
---
上面的文件可能属于一冲突MSESA rpm 。
---
他们被重命名了到 xxx <originalFile> .RPMSAVE
---为避免与这里的文件冲突
---请看见常见问题节
---更多的细节问题请看 /usr/share/doc/NVIDIA_GLX-1.0/README 。
到底是怎么了?
A:如消息所说,冲突文件一旁被移动了保证你的应用发现最新被安装了的 OpenGL 库。
警报没有必要,消息纯粹只供参考。
如果你卸掉 NVIDIA_GLX 包裹,原来的文件将自动地恢复。
Q : Nvidia 的发展政策是向系列 Linux 核心靠拢?
A: NVIDIA 不正式确定支持开发系列核心。
然而,所有的核心模块源代码有 Linux 核心的接口在包裹,并且 NVIDIA 鼓励 Linux 社区的成员开发补丁到 t 的 NVIDIA_kernel 是可得到的支持开发系列核的这些源文件。
搜索将很可能产出若干社区的一 google 支持了补丁。
Q :我最近在我的Linux系统上更新了各种各样的库文件,但是 NVIDIA 图形驱动程序不再工作。
哪里出问题了?
A:冲突库文件可能被你的发行版升级安装了;
请看见附录 C :安装部件的诊断细节。








-----------------------
英文原文:

__________________________________________________________________________

(sec-04) FREQUENTLY ASKED QUESTIONS
__________________________________________________________________________


Q: Where should I start when diagnosing display problems?

A: One of the most useful tools for diagnosing problems is the XFree86
   log file in /var/log (the file is named: "/var/log/XFree86.<#>.log",
   where "<#>" is the server number -- usually 0).  Lines that begin with
   "(II)" are information, "(WW)" are warnings, and "(EE)" are errors.
   You should make sure that the correct config file (ie the config file
   you are editing) is being used; look for the line that begins with:
   "(==) Using config file:".  Also check that the NVIDIA driver is being
   used, rather than the 'nv' or 'vesa' driver; you can look for: "(II)
   LoadModule: "nvidia"", and lines from the driver should begin with:
   "(II) NVIDIA(0)".


Q: How can I increase the amount of data printed in the XFree86 log file?

A: By default, the NVIDIA X driver prints relatively few messages to
   stderr and the XFree86 log file.  If you need to troubleshoot, then
   it may be helpful to enable more verbose output by using the XFree86
   command line options "-verbose" and "-logverbose" which can be used
   to set the verbosity level for the stderr and log file messages,
   respectively.  The NVIDIA X driver will output more messages when the
   verbosity level is at or above 5 (XFree86 defaults to verbosity level
   1 for stderr and level 3 for the log file).  So, to enable verbose
   messaging from the NVIDIA X driver to both the log file and stderr,
   you could start X by doing the following: 'startx -- -verbose 5
   -logverbose 5'.


Q: My X server fails to start, and my XFree86 log file contains the error:

   "(EE) NVIDIA(0): Failed to initialize the NVdriver kernel module!"

A: Nothing will work if the NVdriver kernel module doesn't function
   properly.  If you see anything in the X log file like "(EE) NVIDIA(0):
   Failed to initialize the NVdriver kernel module!" then there is
   most likely a problem with the NVdriver kernel module.  First, you
   should verify that if you installed from rpm that the rpm was built
   specifically for the kernel you are using.  You should also check
   that the module is loaded ('/sbin/lsmod'); if it is not loaded try
   loading it explicitly with 'insmod' or 'modprobe' (be sure to exit the
   X server before installing a new kernel module).  If you receive errors
   about unresolved symbols, then the kernel module has most likely been
   built using header files for a different kernel revision than what
   you are running.  You can explicitly control what kernel header files
   are used by building NVdriver from the NVIDIA_kernel tar file with:
   'make install SYSINCLUDE=/path/to/kernel/headers'.

   Please note that the convention for the location of kernel
   header files is in a state of transition, as is the location
   of kernel modules.  If the kernel module fails to load properly,
   modprobe/insmod may be trying to load an older kernel module (assuming
   you've upgraded).  cd'ing into the directory with the new kernel
   module and doing 'insmod ./NVdriver' may help.

   Finally, the NVdriver may print error messages indicating a problem --
   to view these messages please check /var/log/messages, or wherever
   syslog is directed to place kernel messages.


Q: X starts for me, but OpenGL applications terminate immediately.

A: If X starts, but OpenGL causes problems, you most likely have a
   problem with other libraries in the way, or there are stale symlinks.
   See Appendix C for details.  Sometimes, all it takes is to rerun
   'ldconfig'.

   You should also check that the correct extensions are present;
   'xdpyinfo' should show the "GLX", "NV-GLX" and "NVIDIA-GLX" extensions
   present.  If these three extensions are not present, then there is
   most likely a problem with the glx module getting loaded or it is
   unable to implicitly load GLcore.  Check your XF86Config file and make
   sure that you are loading glx (see "Editing Your XF86Config File"
   above). If your XF86Config file is correct, then check the XFree86
   log file for warnings/errors pertaining to GLX.  Also check that all
   of the necessary symlinks are in place (refer to Appendix C).


Q: When installing/upgrading by srpm, the command:
        `rpm --rebuild NVIDIA_kernel-1.0-2960.src.rpm`
   only prints out a list of rpm command line options.

A: You most likely don't have the rpm development packages installed.
   In most situations you can fix this problem by installing the rpm-devel
   package for your distribution.  Alternatively, you can install/upgrade
   by tar file as the tar files don't require rpm.


Q: When installing/upgrading by srpm, the command:
        `rpm --rebuild NVIDIA_kernel-1.0-2960.src.rpm`
   reports the error:
        NVIDIA_kernel-.src.rpm:no such file or directory

A: You need to install the rpm-build package for your distribution.
   Alternatively, you can install/upgrade by tar file as the tar files
   don't require rpm.


Q: Installing the NVIDIA_kernel module gives an error message like:
        #error Modules should never use kernel-headers system headers
        #error but headers from an appropriate kernel-source

A: You need to install the source for the Linux kernel.  In most
   situations you can fix this problem by installing the kernel-source
   package for your distribution


Q: OpenGL applications exit with the following error message:

        Error: Could not open /dev/nvidiactl because the permissions
        are too restrictive.  Please see the FREQUENTLY ASKED QUESTIONS
        section of /usr/share/doc/NVIDIA_GLX-1.0/README for steps
        to correct.

A: It is likely that a security module for the PAM system may be
   changing the permissions on the NVIDIA device files.  In most cases
   this security system works, but it can get confused.  To correct this
   problem it is recommended that you disable this security feature.
   Different Linux distributions have different files to control this;
   if your system has the file
        /etc/security/console.perms
   then you want to edit the file and remove the line that starts with
   "<dri>".  If instead your system has the file
        /etc/logindevperms
   then you want to edit the file and remove the line that lists
   /dev/nvidiactl.  The above steps will prevent the PAM security
   system from modifying the permissions on the NVIDIA device files.
   Next, you will need to reset the permissions on the device files
   back to their original permissions and owner.  You can do that with
   the following commands:
        chmod 0666 /dev/nvidia* chown root /dev/nvidia*


Q: OpenGL applications crash and print out the following warning:
   
        WARNING: Your system is running with a buggy dynamic loader.
        This may cause crashes in certain applications.  If you
        experience crashes you can try setting the environment
        variable __GL_SINGLE_THREADED.  For more information please
        consult the FREQUENTLY ASKED QUESTIONS section in the file
        /usr/share/doc/NVIDIA_GLX-1.0/README.

A: The dynamic loader on your system has a bug which will cause
   applications linked with pthreads, and that dlopen() libGL multiple
   times, to crash.  This bug is present in older versions of the dynamic
   loader.  Distributions that shipped with this loader include but
   are not limited to RedHat Linux 6.2 and Mandrake Linux 7.1.  Version
   2.2 and later of the dynamic loader are known to work properly.  If
   the crashing application is single threaded then setting the environment
   variable __GL_SINGLE_THREADED to any value will prevent the crash.
   In the bash shell you would enter
        export __GL_SINGLE_THREADED
   and in csh and derivatives use
        setenv __GL_SINGLE_THREADED
   Previous releases of the NVIDIA Accelerated Linux Driver Set attempted
   to work around this problem, however the workaround caused problems with
   other applications and was removed after version 1.0-1541.


Q: When I run Quake3, it crashes when changing video modes; what's wrong?

A: You are probably experiencing the problem described above.  Please
   check the text output for the "WARNING" message describe in the
   previous hint.  Setting __GL_SINGLE_THREADED as described above,
   before running Quake3  will fix the problem.


Q: When I start X it fails and my XFree86 log file contains:

        (II) LoadModule: "nvidia"
        (II) Loading /usr/X11R6/lib/modules/drivers/nvidia_drv.o
        No symbols found in this module
        (EE) Failed to load /usr/X11R6/lib/modules/drivers/nvidia_drv.o
        (II) UnloadModule: "nvidia"
        (EE) Failed to load module "nvidia" (loader failed, 256)
        ...
        (EE) No drivers available.

A: The nvidia_drv.o X driver has been stripped of needed symbols;
   some versions of rpm (wrongly) strip object files while installing.
   You should probably upgrade your version of rpm.  Or, you can install
   the NVIDIA_GLX package from tar file.


Q: My system runs, but seems unstable.  What's wrong?

A: Your stability problems may be AGP-related.  See Appendix F for
   details.


Q: The kernel module doesn't get loaded dynamically when X starts;
   I always have to do 'modprobe NVdriver' first.  What's wrong?

A: Make sure the line "alias char-major-195 NVdriver" appears in
   your module configuration file, generally one of "/etc/conf.modules",
   "/etc/modules.conf" or "/etc/modutils/alias"; consult the documentation
   that came with your distribution for details.


Q: I can't build the NVdriver kernel module, or I can build the NVdriver
   kernel module, but modprobe/insmod fails to load the module into my
   kernel.  What's wrong?

A: These problems are generally caused by the build using the wrong kernel
   header files (ie header files for a different kernel version than the
   one you are running).  The convention used to be that kernel header files
   should be stored in "/usr/include/linux/", but that is being deprecated
   in favor of "/lib/modules/`uname -r`/build/include".  The NVIDIA_kernel
   Makefile should be able to determine the location on your system; however,
   if you encounter a problem you can force the build to use certain header
   files by doing: 'make SYSINCLUDE=/path/to/kernel/headers'.  Obviously,
   for any of this to work, you need the appropriate kernel header files
   installed on your system.  Consult the documentation that came with your
   distribution; some distributions don't install the kernel header files
   by default, or they install headers that don't coincide properly with
   the kernel you are running.


Q: Why do OpenGL applications run so slow?

A: The application is probably using a different library still on your
   system, rather than the NVIDIA supplied OpenGL library.  Please see
   APPENDIX C for details.


Q: There are problems running Quake2.

A: Quake2 requires some minor setup to get it going.  First, in the Quake2
   directory, the install creates a symlink called libGL.so that points
   at libMesaGL.so.  This symlink should be removed or renamed.  Then,
   to run Quake2 in OpenGL mode, you would type: 'quake2 +set vid_ref glx
   +set gl_driver libGL.so'.  Quake2 does not seem to support any kind of
   full-screen mode, but you can run your X server at whatever resolution
   Quake2 runs at to emulate full-screen mode.


Q: There are problems running Heretic II.

A: Heretic II also installs, by default, a symlink called libGL.so in
   the application directory.  You can remove or rename this symlink, since
   the system will then find the default libGL.so (which our
   drivers install in /usr/lib).  From within Heretic II you
   can then set your render mode to OpenGL in the video menu.
   There is also a patch available to Heretic II from lokigames at:
   http://www.lokigames.com/products/heretic2/updates.php3


Q: Where can I get gl.h or glx.h so I can compile OpenGL programs?

A: Most systems come with these headers preinstalled.  However, NVIDIA
   has provided our own gl.h and glx.h file in case your system did not
   come with them or in case you want to develop OpenGL apps that use
   the new NVIDIA OpenGL extensions.  These files have been installed in
   /usr/share/doc/NVIDIA_GLX-1.0/include/GL to avoid conflicting with
   the system installed versions.  To use these headers copy them
   into /usr/include/GL.


Q: Can I receive email notification of new NVIDIA Accelerated Linux
   Driver Set releases?

A: Yes.  Fill out the form at:
   http://www.nvidia.com/view.asp?FO=driver_update


Q: My system hangs when vt-switching if I have rivafb enabled.

A: Using both rivafb and the NVdriver kernel module at the same time is
   currently broken.  In general, using two independent software drivers
   to drive the same piece of hardware is a bad idea.


Q: Compiling the NVdriver kernel module gives this error:

        You appear to be compiling the NVdriver kernel module with
        a compiler different from the one that was used to compile
        the running kernel. This may be perfectly fine, but there
        are cases where this can lead to unexpected behaviour and
        system crashes.

        If you know what you are doing and want to override this
        check, you can do so by setting IGNORE_CC_MISMATCH.

        In any other case, set the CC environment variable to the
        name of the compiler that was used to compile the kernel.

A: You should compile the NVdriver kernel module with the same compiler
   version that was used to compile your kernel.  Some Linux kernel data
   structures are dependent on the version of gcc used to compile it;
   for example, in include/linux/spinlock.h:

        ...
        * Most gcc versions have a nasty bug with empty initializers.
        */
        #if (__GNUC__ > 2)
          typedef struct { } rwlock_t;
          #define RW_LOCK_UNLOCKED (rwlock_t) { }
        #else
          typedef struct { int gcc_is_buggy; } rwlock_t;
          #define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
        #endif

   If the kernel is compiled with gcc 2.x, but gcc 3.x is used when the
   open files in NVdriver are built (or vice versa), the size of rwlock_t
   will vary, and things like ioremap will fail.

   To check what version of gcc was used to compile your kernel, you
   can examine the output of:

        cat /proc/version

   To check what version of gcc is currently in your $PATH, you can
   examine the output of:

        gcc -v


Q: X fails with error "Failed to allocate LUT context DMA"

A: This is one of the possible consequences of compiling NVdriver with
   a different gcc version than used to compile the Linux kernel
   (see above).


Q: There aren't NVIDIA_kernel RPMs available for release N from
   <insert your favorite distro here>.  I tried installing the RPM for
   version N-1, but that didn't work.  What should I do?

A: Like it says in (sec-01) CHOOSING THE NVIDIA PACKAGES APPROPRIATE
   FOR YOUR SYSTEM, if "a specific NVIDIA_kernel rpm is not available for
   your distribution, then use either the NVIDIA_kernel srpm or tar file."


Q: When I install the NVIDIA_GLX package it says:
     --- The above file(s) possibly belong to a conflicting MESA rpm.
     --- They have been renamed to xxx.<originalFile>.RPMSAVE to
     --- avoid conflicting with the files contained within this
     --- package.
     --- Please see the FREQUENTLY ASKED QUESTIONS section of
     --- /usr/share/doc/NVIDIA_GLX-1.0/README for more details.
   What's wrong?

A: Like the message says conflicting files have been moved aside to
   insure that your applications find the newly installed OpenGL
   libraries.  There is no need for alarm, the message is purely
   informational.  If you uninstall the NVIDIA_GLX package then the
   original files will be restored automatically.


Q: What is NVIDIA's policy towards development series Linux kernels?

A: NVIDIA does not officially support development series kernels.
   However, all the kernel module source code that interfaces with the
   Linux kernel is available in the NVIDIA_kernel package, and NVIDIA
   encourages members of the Linux community to develop patches to these
   source files to support development series kernels.  A google search
   will most likely yield several community supported patches.


Q: I recently updated various libraries on my system using my Linux
   distributor's update utility, and the NVIDIA graphics driver no
   longer works.  What's wrong?

A: Conflicting libraries may have been installed by your
   distribution's update utility; please see APPENDIX C: INSTALLED
   COMPONENTS for details on how to diagnose this.
发表于 2002-9-19 00:49:37 | 显示全部楼层
005

常见问题释疑
Q :当诊断有关显示问题时,我应该从哪开始?
A:最有用的诊断工具是位于/var/log 的 XFree86 记录文件(文件被命名:“/var/log/XFree86.<#> .log ”, “<#>”在此是服务器数字--通常是 0 )。
开始行“( II )”是信息,“( WW )”是警告,“( EE )是错误行。
你应该保证正确的配制文件(即你正在编辑的配制文件)被使用;
寻找以下开始的行:
"(==) Using config file:" (“(==)使用设置文件:”)。
另外检查 NVIDIA 驱动程序正在被使用,而非“ nv ”或“ vesa ”驱动程序;
请找到:“( II ) LoadModule :” nvidia “”,并且相关driver的行应该是:
“( II ) NVIDIA ( 0 )”。

Q :我怎样才能增加 XFree86 记录文件中输出的数据量?

A:在缺省情况下, NVIDIA X 驱动程序输出相对较少消息到 stderr(标准错误流) 和 XFree86 记录文件。
如果你需要诊断问题,那么启用更verbose(详细)的输出会对你有帮助,通过增加 XFree86 命令行选项 “-verbose” 和 “-logverbose ” ,它们是分别被用来设置stderr(标准输出流)和log文件信息的详尽级别。
当详尽级别在5以上时, NVIDIA X driver将输出更多的消息(XFree86 缺省值 stderr是1,log是3 )。
因此,为了从 NVIDIA X 驱动程序发送详细消息到记录文件和 stderr ,你只需通过以下命令:' startx ---verbose 5 - logverbose 5'来启动X。

Q :我的 X 服务器启动失败,并且我的 XFree86 记录文件包含错误:

"(EE) NVIDIA(0): Failed to initialize the NVdriver kernel module!"
(“( EE ) NVIDIA ( 0 ):没能初始化 NVdriver 核心模块!”)

A:如果 NVdriver 核心模块不能正常工作,其它将无济于事。
如果你在 X 记录文件看见任何信息,如"(EE) NVIDIA(0): Failed to initialize the NVdriver kernel module!"
那么很可能 NVdriver 核心模块有问题。
首先,如果你从 rpm 安装,你应该验证rpm包是否为你所使用的内核量身定制。
你也应该检查模块已被装载(“/sbin/lsmod');如果没被装载请尝试用” insmod “或” modprobe “装载.(请务必在安装新核模块前退出 X 服务器)。
如果你收到未决标志的错误,那么很可能核心模块(译者注:安装有两个文件,分别为核心模块和GLX驱动)被建造时使用的头文件与你当前运行内核(指linux内核)版本不一致。
你能明确地控制使用哪一个内核头文件,通过使用NVIDIA_kernel tar文件来建造NVdriver时使用:
“make install SYSINCLUDE=/path/to/kernel/headers'.

请注意对内核头文件定位的约定处于一种过渡状态,就象是对核心模块的定位。
如果核心模块没能正确的装载, modprobe/insmod 会试着装载一个更旧的核心模块(假定你升级了)。
进有新核心模块所在目录,并且“ insmod ./NVdriver ”可能有所裨益。

最后, NVdriver 可能会打印错误信息来显示一个问题--想要看到这些消息请检查 /var/log/messages ,或者放置内核消息的syslog所在之处.

Q : X已启动,但是 OpenGL 应用程序很快被终止。

A:如果 X 启动,但是 OpenGL 引起问题,很可能其它的库文件有问题,或者有陈旧 symlinks 。
细节请看见附录 C 。
有时,所需要的是重新启动“ ldconfig ”。

你应该也检查正确的扩展名;
“ xdpyinfo ”应该显示“ GLX ”,“ NV-GLX ”“ NVIDIA-GLX ”扩展项等。
如果这3 种扩展项不存在,,很可能是装载 glx 模块出现问题或它不能正确装载 GLcore 。
检查你的 XF86Config 文件并且保证你正在装载 glx (参阅上面的“编辑你的 XF86Config 文件”)。
如果你的 XF86Config 文件是正确的,那么请在XFree86 记录文件中检查从属于 GLX 的警告/错误。
也要检查所必需的 symlinks 是否就位(参考附录 C )。

Q :当由 srpm 的安装/升级时,命令:
`rpm --rebuild NVIDIA_kernel-1.0-2960.src.rpm`
只打印出一份rpm命令行选项列表。

A:很可能你没有安装rpm开发包裹。
大多数情况你可以通过安装rpm-devel包裹来解决这个问题。或者,你可以通过tar文件来进行安装/升级,
tar文件是不需要rpm的。

Q :当由 srpm 的安装/升级时,命令:
“ rpm --rebuilt NVIDIA_kernel-1.0-2960.src.rpm'报告错误:
NVIDIA_kernel-.src.rpm:no such file or directory

A:你需要为你的发行版安装rpm-build包裹。
或者,你可以通过tar文件来进行安装/升级,tar文件是不需要rpm的。

Q :安装 NVIDIA_kernel 模块,返回一条错误信息:
#error Modules should never use kernel-headers system headers
#error but headers from an appropriate kernel-source

A:你需要安装 Linux 内核源代码。大多数情况你可以为你的发行版安装kernel-source包裹
来修复这个问题。

Q: OpenGL 显示下列错误消息并退出:

Error: Could not open /dev/nvidiactl because the permissions
are too restrictive. Please see the FREQUENTLY ASKED QUESTIONS
section of /usr/share/doc/NVIDIA_GLX-1.0/README for steps
to correct.
(错误:不能打开 /dev/nvidiactl ,由于权限限制。请参阅 FREQUENTLY ASKED QUESTIONS 这部分
中的 /usr/share/doc/NVIDIA_GLX-1.0/README 来一步步纠正。)

A:很可能是PAM 系统的安全模块改变了NVIDIA 设备文件的权限。
在大多数情况中这个安全系统工作正常,但它也有混淆的时候。
为了修正这个问题,建议你停用这个安全功能。
不同的 Linux 发行版通过不同的文件控制这个功能;
如果你的系统有文件 /etc/security/console.perms,那么你可以编辑该文件并且删除以“<dri>”开始的行.
如果你的系统有文件 /etc/logindevperms 你试着编辑文件并且删除列出/dev/nvidiact的行。
以上步骤通过修改 NVIDIA 设备文件的权限来阻止 PAM 安全系统.
下一步,你需要重新设定设备文件到他们的原始权限和使用者。
用下列命令:
chmod 0666 /dev/nvidia * chown root/dev/nvidia *

Q : OpenGL 崩溃并且打印出下列警告:
WARNING: Your system is running with a buggy dynamic loader.
This may cause crashes in certain applications. If you
experience crashes you can try setting the environment
variable __GL_SINGLE_THREADED. For more information please
consult the FREQUENTLY ASKED QUESTIONS section in the file
/usr/share/doc/NVIDIA_GLX-1.0/README.
WARNING :你的系统有多臭虫的动态装载器。
这能会导致某些应用程序的崩溃。
如果你经历过系统崩溃,你可试着设置环境变量__GL_SINGLE_THREADED 。
更多信息请查阅 FREQUENTLY ASKED QUESTIONS 部分中的文件/usr/share/doc/NVIDIA_GLX-1.0/README.

A:你系统上的动态装载器有bug,将导致应用程序与 pthreads 的链接,并且多次 dlopen () libGL,导致崩溃。
这个BUG存在于动态装载器的较老的版本。
但是 RedHat Linux 6.2 和曼德拉草 Linux 7.1不存在此臭虫。
版本 2.2 及以后版本中的动态装载器正常工作。
如果崩溃的是单线程程序,可设置环境变量 __GL_SINGLE_THREADED 为任何值将阻止崩溃。
在bash shell中你敲入
export __GL_SINGLE_THREADED
如在 csh 或衍生版本中使用
setenv __GL_SINGLE_THREADED.
在以前发布的NVIDIA 加速 linux 驱动集试图解决这一问题,然而解决由其它应用程序引起了问题,在版本 1.0-1541 以后被取消。

Q :当我运用 Quake3 时,当改变视频模式时崩溃!怎么回事?

A:你可能正在经历上面已经描叙过的问题。
请检查以前描述过的提示中“警告”信息的文字输出。
如在跑前 Quake3设置Setting __GL_SINGLE_THREADED将解决这个问题。

Q :我开始 X 时失败,我的 XFree86 记录文件包含:
II) LoadModule: "nvidia"
(II) Loading /usr/X11R6/lib/modules/drivers/nvidia_drv.o
No symbols found in this module
(EE) Failed to load /usr/X11R6/lib/modules/drivers/nvidia_drv.o
(II) UnloadModule: "nvidia"
(EE) Failed to load module "nvidia" (loader failed, 256)
...
(EE) No drivers available.

A: nvidia_drv.o X driver必需的符号丢失了;
rpm 的一些版本(错误地)安装时丢失了目标文件。
你可能应该升级 rpm 的版本。
或,你能从 tar 文件安装 NVIDIA_GLX 包。

Q :我的系统能跑,但是似乎不稳定。是哪里出问题了?

A:你的稳定性问题可能同 AGP 有关。细节请看附录 F 。

Q :当 X 开始时,内核模块不能动态地装载;
我不得不首先“ modprobe NVdriver ”。问题出在哪里?

A:保证“alias char-major-195 NVdriver ”这一行出现在你的模块配置文件中,通常是“ /etc/conf.modules ”,“ /etc/modules.conf ”
或“ /etc/modutils/alias ”其中之一;有关细节请看你的发行版附带的文档。

Q :我不能建立 NVdriver 核心模块,或我能建立 NVdriver 核心模块,但是不能用 modprobe/insmod 装载模块到我的核心。问题出在哪里?

A:这些问题通常是由于使用了错误的内核头文件造成的(如头文件的版本和你正在运行的内核版本不同)。
习惯上内核头文件应该存放在“/usr/include/linux/”,但是不赞成这样,考虑“ /lib/modules/'name - r'/build/include ”的话.
NVIDIA_kernel Makefile 应该能够决定头文件在你系统中的位置;
然而,如果你遇见问题,你能强迫安装使用某个头文件版本通过:“make SYSINCLUDE=/path/to/kernel/headers'.
显然,不管你是怎么作的,你都需要在系统上安装相应的内核头文件。
请查看你的发行版附带的文档;
一些发行版缺省不安装内核头文件,或他们安装的与你正在工作的内核版本不一致。

Q : OpenGL 应用程序为什么跑得这样慢?

A:应用程序可能仍使用了你系统上一个不同的库,而非 NVIDIA 提供的OpenGL 库。
细节请看附录 C 。

Q :运行 Quake2 碰到问题 。
A: Quake2 需要一些小的设置来让它运行。
首先,到 Quake2 目录,在安装时建立了指向 libMesaGL.so 的名为 libGL.so 系统链接。
这个链接应该被移除或重命名。
然后,在 OpenGL 模式的跑 Quake2 ,你应该输入:“ quake2 +set vid_ref glx +set gl_driver libGL.so ”。
Quake2似乎不支持任何种全屏模式,但是你让你的 X 服务器运行在任何的Quake2分辨率下来模拟全屏模式。

Q:运行 Heretic II有问题 。
A: Heretic II缺省安装时 也加了一个名叫 libGL.so 的链接在应用程序目录。
你能删除或重命名这链接,然后系统将会发现一个缺省的 libGL.so (我们的驱动安装在 /usr/lib ).从而在 Heretic II ,你能够在视频菜单中设置渲染模式为 OpenGL 。
lokigames 提供了一个可用的 Heretic II 补丁:
http://www.lokigames.com/products/heretic2/updates.php3

Q :我在哪儿能得到 gl.h 或 glx.h 来编译 OpenGL 程序?
A:大多数系统预装了这些头文件。
然而, NVIDIA 提供了我们自己的 gl.h 和 glx.h 文件,考虑到你的系统没有它们或你想使用新的 NVIDIA OpenGL 扩展来开发的 OpenGL 应用软件。
这些文件安装在 /usr/share/doc/NVIDIA_GLX-1.0/include/GL ,以避免与安装的系统已安装的版本冲突。
为了使用这些头文件,拷贝它们到/usr/include/GL.

Q :我能收到新版本的NVIDIA加速linux驱动集的电子邮件通知吗?

A:是的。
在:http://www.nvidia.com/view.asp ? FO=driver_update 填写表格

Q :如果我启用了 rivafb ,当 vt-switching(切换vt)时,我的系统就挂起。

A:同时使用 rivafb 和 NVdriver 核心模块是造成挂起的原因。
通常,使用两个独立的软件驱动程序来驱动同一片硬件是一个坏主意。

Q :编译NVdriver 核模块给出这个错误:

You appear to be compiling the NVdriver kernel module with
a compiler different from the one that was used to compile
the running kernel. This may be perfectly fine, but there
are cases where this can lead to unexpected behaviour and
system crashes.

If you know what you are doing and want to override this
check, you can do so by setting IGNORE_CC_MISMATCH.

In any other case, set the CC environment variable to the
name of the compiler that was used to compile the kernel.

(你好像使用了与你用来编译你现在运行的内核不同的编译器来编译 NVdirver 内核模块,这样的话可能工作的相当好,但也有可能造成无法预料行为和系统崩溃。

如果你知道你正在做什么,并想撤销这个检查,你可以设置 IGNORE_CC_MISMATCH。

如碰到其它任何情况,设定 CC 环境变量来使编译器的名字同编译内核的一致。)

A:你应该使用与编译你的内核一样的编译器版本来编译 NVdriver 核心模块。
一些 Linux 内核数据结构依赖于过去编译它 gcc 的版本;
例如,在include/linux/spinlock.h:

...
* Most gcc versions have a nasty bug with empty initializers.
*/
#if (__GNUC__ > 2)
typedef struct { } rwlock_t;
#define RW_LOCK_UNLOCKED (rwlock_t) { }
#else
typedef struct { int gcc_is_buggy; } rwlock_t;
#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
#endif

如果核心是用gcc 2.x 编译,但NVdirver中的开放文件被建造是使用了gcc 3.x(or vice versa),
rwlock_t 的大小将变化,并且像 ioremap等将失败。

检查编译你内核使用了什么 gcc 版本,可以检查以下输出:

cat /proc/version

检查当前在你的 $PATH使用的是什么版本的 gcc ,检查输出 :

gcc - v

Q: X fails with error "Failed to allocate LUT context DMA"
(X因错误失败“没能分配 LUT 前后文 DMA ”)

A:这是由于使用不同的 gcc 版本编译 NVdriver 造成的可能后果之一(看上面)。

Q :不能从<insert your favorite distro here>中得到可用的 NVIDIA_kernel RPMs release N .我试着用版本 N-1 版本的 RPM安装 ,但是没有用。我应该怎么办?

A:像它说在( sec-01 ) CHOOSING THE NVIDIA PACKAGES APPROPRIATE FOR YOUR SYSTEM(选择适合你系统的 NVIDIA 包裹) ,
如果“没为你的发行版提供特定的 NVIDIA_kernel rpm,那么请使用 NVIDIA_kernel srpm 或 tar 文件”。

Q :当我安装 NVIDIA_GLX 包裹时,它说:

--- The above file(s) possibly belong to a conflicting MESA rpm.
--- They have been renamed to xxx.<originalFile>.RPMSAVE to
--- avoid conflicting with the files contained within this
--- package.
--- Please see the FREQUENTLY ASKED QUESTIONS section of
--- /usr/share/doc/NVIDIA_GLX-1.0/README for more details.
(---上面的文件可能属于一个发生冲突的MSESA rpm 。
---他们被重命名了到 xxx <originalFile> .RPMSAVE
---为避免与这个包裹包含的文件冲突。
---请看FREQUENTLY ASKED QUESTIONS(常见问题)部分中的
---/usr/share/doc/NVIDIA_GLX-1.0/README 。)

到底是怎么了?

A:如消息所说,冲突文件被移动一旁来保证你的应用程序发现最新安装的 OpenGL 库。
警报不是必要的,纯属提示消息。
如果你卸掉 NVIDIA_GLX 包裹,原来的文件将自动地恢复。

Q : 对于 Linux 内核系列的开发,Nvidia 的策略是什么?

A: 对于 Linux 内核系列的开发,Nvidia 不提供官方支持。
然而,所有用来和 Linux 内核模块交互的核心模块源代码都包含在NVIDIA_kernel包裹,并且 NVIDIA 鼓励 Linux 团队成员为这些源文件开发补丁来支持内核系列开发项目。
用google来搜索很可能得到几个团体支持的补丁。

Q :最近,我使用 Linux 发行版升级工具更新了各种的库文件,但是 NVIDIA 图形驱动程序不再工作。
哪里出问题了?

A:冲突库文件可能被你的发行版升级工具安装了;
请看见附录 C :INSTALLED COMPONENTS for details on how to diagnose this.(安装部件的诊断细节)。
发表于 2002-9-21 18:55:19 | 显示全部楼层
已经没有什么值得说的了,原文中evileye兄本来就翻译很好, quanliking兄再修改润色了一下,这篇翻译就已经可以称得上完美了
 楼主| 发表于 2002-9-21 19:06:15 | 显示全部楼层
好,辛苦了各位,祝你们中秋愉快!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表