NVIDIA

NVIDIA Accelerated Linux Driver README & Installation Guide

Last updated: May 14, 2001

The NVIDIA Accelerated Linux Driver Set brings both accelerated 2D functionality and high performance OpenGL support to Linux x86 with the use of NVIDIA GPUs. This file describes how to install, configure, and use the NVIDIA Accelerated Linux Driver Set. Please refer to the following additional README files as appropriate:

  • ALI_USERS_README - for problems with ALI chipsets

  • TNT_USERS_README - for problems with TNT card with SGRAM/SDRAM

  • LAPTOP_README - for instructions on how to set up your laptop system

  • TWINVIEW_README - for instructions on how to set up TwinView

  • TVOUT_README - for instructions on connecting a TV

Please note that most caveats and frequently encountered problems are not detailed in the installation instructions, but rather in the troubleshooting and FAQ sections. It is recommended that you read this entire README before proceeding.

(sec-01) CHOOSING THE NVIDIA PACKAGES APPROPRIATE FOR YOUR SYSTEM

NVIDIA has a unified driver architecture model; one driver set can be used with all supported NVIDIA hardware (see Appendix A). The NVIDIA Accelerated Linux Driver Set consists of two packages you must download and install:

  • NVIDIA_GLX โ€” contains the OpenGL libraries and the XFree86 driver.

  • NVIDIA_kernel โ€” contains the NVdriver kernel module needed by the X driver and OpenGL libraries.

Install both packages with matching version numbers (e.g., NVIDIA_GLX-0.9-6 only with NVIDIA_kernel-0.9-6). Packages are available as RPM, SRPM, or tar file. Binary RPMs are for kernels shipped with specific distributions; if your kernel was upgraded or an RPM isn't available, use the SRPM or tar file. Some distributors ship multiple kernel RPMs (uni-processor vs SMP).

(sec-02) INSTALLING THE NVIDIA_KERNEL AND NVIDIA_GLX PACKAGES

Before beginning installation:

  • Exit the X server.

  • Set default runlevel to boot to console (so X doesn't start automatically). This makes recovery easier if problems occur.

Replace generic filenames in the examples ("NVIDIA_kernel.tar.gz") with the actual names of the files you downloaded.

1

Installing by RPM

Instructions for the impatient:

Details:

  1. Make sure you have downloaded the NVIDIA_kernel RPM appropriate for your kernel.

  2. Install NVIDIA_kernel:

  1. Install NVIDIA_GLX:

2

Upgrading by RPM

Instructions for the impatient:

Details:

  1. Download the NVIDIA_kernel RPM appropriate for your kernel.

  2. Upgrade NVIDIA_kernel:

  1. Do NOT use -U to upgrade NVIDIA_GLX (older NVIDIA RPM uninstall sections may remove files incorrectly). Instead:

3

Installing/Upgrading by SRPM

Instructions for the impatient:

Details:

  1. Build a custom NVIDIA_kernel RPM:

Watch for output such as:

  1. Install or upgrade that RPM:

  1. Install NVIDIA_GLX as described in the RPM section.

4

Installing/Upgrading by Tar file

Instructions for the impatient:

Details:

  1. Unpack each file:

  1. Build/install kernel interface:

This compiles and links NVdriver, copies it into place, and attempts to insert it into the running kernel. 3. Install NVIDIA_GLX:

Note: make install for each package will remove previously installed NVIDIA drivers.

(sec-03) EDITING YOUR XF86CONFIG FILE

XFree86 4.x uses a slightly different config file path; it will prefer /etc/X11/XF86Config-4 if it exists. To determine which config file XFree86 is using, look for a line beginning with "(==) Using config file:" in /var/log/XFree86.0.log. This README refers to your configuration file as "XF86Config", regardless of name.

If you do not have a working XF86Config file:

  • Use the sample config that comes with XFree86.

  • Use the sample config installed with NVIDIA_GLX (in /usr/share/doc).

  • Use tools like 'xf86config' or distribution-provided config utilities.

If you already have an XF86Config file using a different driver (e.g., "nv"), find the Device section and replace:

with:

In the Module section, ensure:

Remove these lines if present:

Many options exist to fine-tune the NVIDIA XFree86 driver โ€” see Appendix D for the full list.

After configuring XF86Config, restart X. OpenGL applications should automatically use the NVIDIA libraries. If problems occur, see TROUBLESHOOTING.

(sec-04) TROUBLESHOOTING

Strategies and common checks:

  • Check the XFree86 log file (/var/log/XFree86.0.log). "(II)" = info, "(WW)" = warning, "(EE)" = error. Confirm the config file being used ("(==) Using config file:") and that the NVIDIA driver is loaded: look for "(II) LoadModule: "nvidia"" and driver lines "(II) NVIDIA(0)".

  • Increase verbosity for debugging: start X with:

The NVIDIA X driver emits more messages at verbosity >= 5.

  • If you see "(EE) NVIDIA(0): Failed to initialize the NVdriver kernel module!", the NVdriver kernel module likely failed. Verify you installed an RPM built for your kernel. Check module loaded with /sbin/lsmod; try loading with insmod or modprobe (exit X first). If you see unresolved symbols, the module was built against different kernel headers โ€” rebuild with:

  • If X starts but OpenGL misbehaves, stale libraries or symlinks may be present. Rerun 'ldconfig' and ensure symlinks are correct (see Appendix C).

  • Verify extensions with 'xdpyinfo' โ€” "GLX", "NV-GLX", and "NVIDIA-GLX" should appear.

  • If rpm --rebuild ... prints rpm options, you likely lack rpm development packages (install rpm-devel) or use the tar install method.

  • If building the kernel module shows:

install the Linux kernel source (kernel-source package) for your distribution.

(sec-05) FREQUENTLY ASKED QUESTIONS

Q: When I start X it fails and my XFree86 log file contains "No symbols found in this module" / "Failed to load module 'nvidia' (loader failed, 256)" โ€ฆ What gives?

A: The nvidia_drv.o X driver has been stripped of needed symbols; some versions of rpm strip object files while installing. Upgrade your rpm or install NVIDIA_GLX from the tarfile.

Q: Why does the NVdriver not work with DevFS?

A: DevFS will be supported in a future NVIDIA release. In the meantime, recreate the NVIDIA device nodes after each reboot. User-submitted patches exist to make NVdriver DevFS-aware (search the web).

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

A: You might be using the wrong AGP module. See Appendix F for AGP configuration 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: Ensure the line alias char-major-195 NVdriver appears in your module configuration file (such as /etc/conf.modules, /etc/modules.conf, or /etc/modutils/alias).

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

A: Usually caused by building against the wrong kernel header files. You can force a specific header location with:

Ensure appropriate kernel headers are installed for your running kernel.

Q: Why do OpenGL applications run so slow?

A: The application is probably using a different libGL on the system. See Appendix C for details on installed components and symlinks.

Q: There are problems getting Quake2 going.

A: Quake2 creates a symlink libGL.so -> libMesaGL.so in its directory. Remove or rename that symlink. Run Quake2 in OpenGL mode:

Quake2 doesn't support true fullscreen; run X at the resolution Quake2 uses to emulate fullscreen.

Q: There are problems getting Heretic II going.

A: Heretic II installs a libGL.so symlink in the app directory โ€” remove or rename it so the system libGL is used (/usr/lib). Set render mode to OpenGL in the game's video menu. A patch is available from lokigames at: //www.lokigames.com/products/heretic2/updates.php3

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

A: Most systems include these headers. NVIDIA provides gl.h and glx.h installed at: /usr/share/doc/NVIDIA_GLX-x.y.z/usr/include/GL Copy them to /usr/include/GL if you wish to use NVIDIA's versions with updated NVIDIA extensions.

(sec-06) CONTACTING US

If problems persist after troubleshooting, contact NVIDIA at: [email protected]. When emailing, attach /var/log/XFree86.0.log and any other relevant information. Send a log generated with verbose messaging enabled (e.g., startx -- -logverbose 5).

(sec-07) FURTHER RESOURCES

  • Linux OpenGL ABI: //oss.sgi.com/projects/ogl-sample/ABI/

  • NVIDIA Linux HowTo: //www.linuxdoc.org/HOWTO/mini/Nvidia-OpenGL-Configuration/index.html

  • OpenGL: www.opengl.org

  • The XFree86 Project: www.xfree86.org

  • IRC: #nvidia (irc.openprojects.net)

(app-a) APPENDIX A: SUPPORTED NVIDIA GRAPHICS CHIPS

  • RIVA TNT 0x0020

  • RIVA TNT2 0x0028

  • RIVA TNT2 (Ultra) 0x0029

  • RIVA TNT2 (Vanta) 0x002C

  • RIVA TNT2 (M64) 0x002D

  • RIVA TNT2 (??) 0x002E

  • RIVA TNT2 (??) 0x002F

  • RIVA TNT2 (Integrated) 0x00A0

  • GeForce 256 0x0100

  • GeForce DDR 0x0101

  • Quadro 0x0103

  • GeForce2 MX 0x0110

  • GeForce2 MX DDR 0x0111

  • GeForce2 Go 0x0112

  • Quadro2 MXR 0x0113

  • GeForce2 GTS 0x0150

  • GeForce2 GTS 0x0151

  • GeForce2 Ultra 0x0152

  • Quadro2 Pro 0x0153

  • GeForce3 0x0200

Note: RIVA 128/128ZX chips are supported by the open-source 'nv' driver for XFree86, but not by the NVIDIA Accelerated Linux Driver Set.

(app-b) APPENDIX B: MINIMUM SOFTWARE REQUIREMENTS

Required minimums (commands show how to verify versions):

  • linux kernel 2.2.12 โ€” # cat /proc/version

  • XFree86 4.0.1 โ€” # cat /var/log/XFree86.0.log|grep "XFree86 Version"

  • Kernel modutils 2.1.121 โ€” # insmod -V

If you need to build NVdriver kernel module:

  • binutils 2.9.5 โ€” # size --version

  • GNU make 3.77 โ€” # make --version

  • gcc 2.7.2.3 โ€” # gcc --version

If building from source RPMs:

  • spec-helper rpm โ€” # rpm -qi spec-helper

Official kernel releases from 2.2.12 and up are supported. Pre-release kernels (e.g., 2.4.3-pre2) may not be supported. binutils and gcc are only needed for SRPM or tarfile installs. XFree86 can be obtained from www.xfree86.org; other packages from www.kernel.org, www.gnu.org, or your distribution.

(app-c) APPENDIX C: INSTALLED COMPONENTS

Installed components (files shown are examples; x.y.z denotes version and symlinks get created):

  • XFree86 driver: /usr/X11R6/lib/modules/drivers/nvidia_drv.o

  • GLX extension module: /usr/X11R6/lib/modules/extensions/libglx.so.x.y.z (and symlink libglx.so -> libglx.so.x.y.z)

  • OpenGL library: /usr/lib/libGL.so.x.y.z (with libGL.so.x -> libGL.so.x.y.z and libGL.so -> libGL.so.x)

  • OpenGL core library: /usr/lib/libGLcore.so.x.y.z (with libGLcore.so.x -> libGLcore.so.x.y.z)

  • Kernel module: /lib/modules/[kernel version]/video/NVdriver or /lib/modules/[kernel version]/kernel/drivers/video/NVdriver

  • OpenGL/GLX header files (installed under /usr/share/doc/NVIDIA_GLX-x.y.z/usr/include/GL)

The NVIDIA_kernel package also creates device nodes such as:

  • nvidia0 .. nvidia3 and nvidiactl (major 195)

If other libraries conflict (soname collisions), ldconfig may create incorrect symlinks. Common conflicting paths: /usr/X11R6/lib/libGL.so* and /usr/X11R6/lib/libGLcore.so*. Rename or remove conflicting libraries (for example, prepend "XXX") and rerun ldconfig. Use ldd on applications to verify which libGL and libGLcore are being used (example shown in original README).

(app-d) APPENDIX D: XF86Config OPTIONS

Supported driver options (examples shown; refer to original README for defaults and details):

  • Option "SWCursor" "boolean" โ€” software cursor (default off)

  • Option "HWCursor" "boolean" โ€” hardware cursor (default on)

  • Option "NoAccel" "boolean" โ€” disable 2D acceleration

  • Option "Rotate" "CW" / "CCW" โ€” rotate display (forces NoAccel and SWCursor)

  • Option "ShadowFB" "boolean" โ€” enable shadow framebuffer

  • Option "NvAGP" "integer" โ€” AGP config: 0 disable, 1 use NVIDIA AGP, 2 use AGPGART, 3 try AGPGART then NVIDIA (default 1)

  • Option "IgnoreEDID" "boolean" (synonym "NoDDC") โ€” disable EDID probing

  • Option "ConnectedMonitor" "string" โ€” override detected display (CRT, DFP, TV) or comma-separated list for TwinView

  • Option "NoRenderAccel" "boolean" โ€” disable experimental RENDER acceleration

  • Option "TwinView" "boolean" โ€” enable TwinView

  • Option "TwinViewOrientation" "string" โ€” RightOf, LeftOf, Above, Below, Clone

  • Option "SecondMonitorHorizSync" "range(s)"

  • Option "SecondMonitorVertRefresh" "range(s)"

  • Option "MetaModes" "string" โ€” combination of modes for TwinView

(app-e) APPENDIX E: OPENGL ENVIRONMENT VARIABLE SETTINGS

Environment variables that affect OpenGL behavior (not guaranteed to remain the same across releases):

  • __GL_SYNC_TO_VBLANK โ€” non-zero forces glXSwapBuffers to sync to vertical refresh.

  • __GL_ENABLE_FSAA โ€” non-zero enables full scene antialiasing.

  • __GL_FSAA_QUALITY โ€” 0, 1, or 2 (defines FSAA sampling/quality; only meaningful when __GL_ENABLE_FSAA is set).

(app-f) APPENDIX F: CONFIGURING AGP

AGP module selection is controlled via the "NvAGP" option in XF86Config:

  • Option "NvAgp" "0" โ€” disable AGP

  • Option "NvAgp" "1" โ€” use NVAGP if possible

  • Option "NvAgp" "2" โ€” use AGPGART if possible

Use the AGP module that works best with your chipset. If stability issues occur, try disabling AGP and experiment. Check AGP status:

Using the kernel AGPGART requires it be compiled with your kernel or available as a module. Changing AGP drivers generally requires a reboot.

(app-g) APPENDIX G: KNOWN BUGS

Known issues in this release include (summary):

  • OpenGL + Pixmap rendering: glClear() incorrect to pixmap

  • OpenGL + Xinerama: not functional

  • OpenGL and dlopen(): some issues due to glibc/libdl behavior; partial workarounds exist

  • OpenGL on SMP machines: improved but intermittent failures remain (esp. with 2.4.x kernels)

  • glReadPixels / glCopyPixels after window move: incorrect reads unless window is redrawn

  • DPMS and TwinView / Flat Panel: suspend/standby may only blank the screen rather than proper DPMS state

  • Multicard/Multimonitor: PCI card init and multi-card setups can be unreliable

  • GeForce2 Go on some Dell laptops: restarting X after exit may hang โ€” reboot as workaround

(app-h) APPENDIX H: BUGS FIXED SINCE LAST RELEASE

Lists fixes across several release boundaries; includes preliminary GeForce2 Go support, GeForce3 extensions, many SMP fixes, TV-Out support, GLXPixmap rendering fixes, OpenGL and X stability fixes, AGP fixes for large-memory systems, and more (see original README for full changelog).


Images

LinkedIn
Twitter
Facebook
Reddit