Differences between revisions 1 and 75 (spanning 74 versions)
Revision 1 as of 2005-11-14 06:49:41
Size: 5161
Comment: just starting
Revision 75 as of 2008-06-10 03:26:48
Size: 41148
Editor: GeoffSimmons
Comment: Updated version number and README link for driver in unstable.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
This document explains how to make use of NVIDIA video hardware for ["Debian"] GNU/Linux users, who are the primary target. However, most (if not all) of Debian derivatives, including Libranet, Mepis, Ubuntu, and Xandros, should work in the same way. The following section shortly describes the ["free"] drivers while the rest of the document covers the non-free but 3D-accelerated drivers. #language en
This document explains how to make use of NVIDIA video hardware on a ["Debian"] GNU/Linux system. The [#free free] drivers only provides 2D acceleration, whereas the [#non-free non-free] drivers supports 3D-acceleration.

[[TableOfContents]]
Line 4: Line 7:
Two free drivers in Debian support NVIDIA cards. You are probably reading this page using one of these drivers. The '''vesa''' driver is a generic video driver. You should get better results with the '''nv''' driver. You can see which one is in use .........................
You can simply [wiki:Self:ConfigureX configure X] to change the free driver to use.

However, both of these drivers do not support 3D acceleration. Only the ["non-free"] '''nvidia''' driver supports this. If you are willing to use this driver despite the fact that it is non-free, read the following section. If you do, keep in mind that using the non-free drivers is considerably more complex and things are much more likely to break. If this happens and you give up trying to get X working again due to the '''nvidia''' driver, remember that simply switching back to one of the free drivers should let you run X again until you find a way to get 3D acceleration working again.
[[Anchor(free)]]
Debian has two free drivers that support NVIDIA cards. The '''vesa''' driver is a generic driver for most VGA cards. The '''nv''' driver usually gives better results. To see which is installed read the output of
{{{
$ grep Driver /etc/X11/XF86Config-4 /etc/X11/xorg.conf 2>&1|grep 'nv\|vesa'
}}}
To switch between drivers, see "[wiki:Self:ConfigureX configure X]".

For 3D acceleration use the non-free '''nvidia''' driver; neither '''nv''' or '''vesa''' supports 3D. Remember the non-free driver is more complex so things are more likely to break. If things break, switch back to one of the free X drivers while you find a way to get 3D acceleration working again.

The project hosted at [http://nouveau.freedesktop.org/wiki/] is trying to develop a free 3D accelerated nVidia driver, which is currently at early development stages.
Line 10: Line 19:
== Why a Debian-specific method? ==

To install the NVIDIA drivers, you can use either NVIDIA's official installer or the Debian driver packages. Each method has its advantages, as described below. NVIDIA's installer used to be easier to use; but with the advent of module-assistant, the Debian way is probably easier. Even if you choose to build your driver module manually, in the long run you'll probably find that the Debian way will save you work. The Debian way is of course the most reliable.

Unless you had issues with the Debian way, you probably just want to skip to the '''Installation''' section. NVIDIA's installer is already documented at other places (such as [http://www.gmpf.de/index.php/NVidia:Basic_Installation this one]), so the Installation section of this HOWTO is all about the Debian way. Either way, you may find the Troubleshooting section to be of interest.
[[Anchor(non-free)]]

To install NVIDIA 3D drivers use NVIDIA's official installer or Debian driver packages. Each method has advantages.

== Why use a Debian-specific method? ==

NVIDIA's installer used to be easier to use; but with the advent of '''module-assistant''', the Debian way is probably easier. Even when building a driver module manually, in the long run the Debian way will probably save labor, and is certainly the most reliable method.

Users who want to try the Debian way can [#Installation skip to the Installation section]. Because NVIDIA's installer is already described [''NvidiaGraphicsDriversNvidiaWay'' elsewhere], this HOWTO just describes the Debian way.

Whichever installation method, the [#Troubleshooting troubleshooting section] should be of interest.
Line 17: Line 32:
..............
The method described here is "the Debian way": you install Debian packages as usual, for your specific kernel. This method has some advantages, compared to using NVIDIA's official installer:

    * It's more automated once it's set up, so it saves you work if you rebuild your kernel very often, as I do.
    * It uses the Debian package management tools, so it's cleaner.
    * If you're already using make-kpkg to build your kernel, it fits easily into your existing build procedure.
    * It will also save you work if you build other kernel modules (e.g. lm-sensors or fuse) outside of the kernel tree, because all of the driver packages get built at the same time with a single invocation of make-kpkg.
    * module-assistant has now taken much of the grunt work out of this task, making it about as easy as using the official installer.

However, you don't have to build your drivers this way. Many people prefer just to get and run an official installer from nVidia. This method also has advantages:

    * You may get more recent versions of the NVIDIA drivers, since the Debian packages tend to lag by a month or two, which can be needed if the version in Debian didn't support your hardware. You can compare the [http://www.nvidia.com/object/unix.html current version] and the [http://packages.debian.org/nvidia-glx version in your Debian release] to see how much difference there is.
    * The official installer is easy to use, although you will probably get tired of rerunning it if you rebuild your kernel more than a few times. (Every time you rebuild your kernel you have to wait until you reboot, wait for your X server to die, navigate the installer menus, and then restart X. It gets old. That's why this guide was writen :)
    * You won't have to learn about module-assistant, or make-kpkg. Wait, is this an advantage?
    * People have occasionally reported that even after some work, they just couldn't get their drivers to work using the Debian way. Once they used the NVIDIA installer everything worked smoothly.

== Target audience ==
The following method should work with any 2.4 or 2.6 Linux kernel, with either stock or custom kernels, and with ["Sarge"], ["Etch"] and ["Sid"] (assuming Sid works). Although there are Debian packages for the drivers in ["Woody"], if you are looking to make some fun gaming, consider the fun of upgrading to Sarge first.

Advantages of "the Debian way":

 * More automated, which saves work if the kernel is changed.
 * Uses Debian package management tools, so it's cleaner.
 * Can be done while X is running. (X must be restarted to apply the driver change.)
 * Users of '''make-kpkg''' should find it fits easily into their existing build procedure.
 * Users of make-kpkg who build unofficial kernel modules, (e.g. '''lm-sensors''' or '''fuse'''), have all their driver packages built with a single invocation of '''make-kpkg'''.
 * No need to download anything from ''nvidia.com'', since the Debian packages contain all necessary parts.

Advantages of NVIDIA's official installer:

 * Most recent NVIDIA driver versions. Debian packages commonly lag behind a month or more. Compare the [http://www.nvidia.com/object/unix.html current version] and the [http://packages.debian.org/nvidia-glx version in your Debian release] to see what's new.
 * Easy to use. (But users who often rebuild their kernel might get tired of rerunning it every time -- rebuilding a kernel requires waiting through a reboot, watching the now incompatible old X server to die, navigating the installer menus, then starting X. It gets old. That's why this guide was written. :) )
 * Some users report that when the Debian way fails, the NVIDIA installer works.
Line 37: Line 49:

[[Anchor(Installation)]]
The Debian way to install the NVIDIA 3D drivers.

=== Target audience ===
Debian users running Linux kernel versions 2.4 or 2.6, with either stock or custom kernels, and with ["Sarge"] or ["Etch"].

=== Overview ===
The NVIDIA 3D drivers have two parts: a kernel module, and a collection of user-space GLX libraries. The kernel module or "kernel interface to the binary driver", distributed in source form with one binary component, is in the ''nvidia-kernel-source'' and ''nvidia-kernel-common'' packages. The libraries or so called "binary drivers" or GLX libraries, distributed in binary form, are in the ''nvidia-glx'' Debian package. The package version of the module and GLX libraries must match. The module source and GLX libraries only have to be installed once. The module binary must be recompiled every time the kernel is changed. Here's what to do:

 * 0. Make sure APT has ''non-free'' and ''contrib'' sources (consult '''sources.list(5)''' manpage for help on doing this)
 * 1. Install the kernel module
 * 2. Install the user-space GLX libraries
 * 3. Configure X to use the '''nvidia''' driver
 * 4. Force the kernel module to load at boot

Steps 2, 3 and 4 have to be performed only once. Step 1 has to be repeated every time the kernel is changed. With the help of '''module-assistant''', '''apt-get''', and '''make-kpkg''', it's easy.

==== Current issues ====
'''Testing''' users: NVIDIA packages are currently not in testing due to lack of maintainance, a Linux bug and X server 1.4's ABI change. Filipus Klutiero plans to update the document when the situation is fixed. In the meantime, packages referred to by this guide will not be available on pure testing systems. It is possible to setup a [http://dpkg.vireo.org/factoid.php?key=testing/unstable%20mix testing/unstable mix].

=== Steps ===
==== Install the kernel module ====
===== Stock or Custom Kernel? =====
Some of the installation methods below depend on whether you're running a stock kernel, i.e. a prebuilt kernel from the Debian distribution. If you know which kind of kernel you have, you can skip to the [#Legacy following section].

By default, Debian comes with a stock kernel. If you don't know what kind of kernel you're running, then it's probably a stock kernel. If you're not sure, run
{{{
$ uname -r
}}}
and check if the output looks like 2.*.*-small number-architecture (e.g. 2.4.27-2-386 or 2.6.8-2-k7). If it does, you're most likely running a stock kernel.

===== Legacy drivers? =====
[[Anchor(Legacy)]]
Debian 4.0, or Etch, (released in 2007), has separate packages for older nvidia card drivers; these packages all have "legacy" in the name.

Debian 3.1, or Sarge, (released in 2005), predates the "legacy" split; Sarge users should skip to the [#Methods Methods section].

Etch has two versions of NVIDIA's proprietary drivers: current and legacy. For example, user-space libraries for newer GPUs are in the '''nvidia-glx''' package, and the older GPU drivers are in '''nvidia-glx-legacy''' package.

In post-Etch versions of Debian Unstable, ("Sid"), the legacy driver itself was forked into two versions: a 71xx and a 96xx Version.

The 71xx version supports RIVA TNT, RIVA TNT2/TNT2 Pro, RIVA TNT2 Ultra, Vanta/Vanta LT RIVA TNT2 Model 64/Model 64 Pro, Aladdin TNT2, GeForce 256 GeForce DDR, Quadro, GeForce2 GTS/GeForce2 Pro, GeForce2 Ti GeForce2 Ultra, and Quadro2 Pro.

The 96xx version supports GeForce2 MX/MX 400, GeForce2 MX 100/200, GeForce2 Go, Quadro2 MXR/EX/Go GeForce4 MX 460, GeForce4 MX 440, GeForce4 MX 420, GeForce4 MX 440-SE GeForce4 440 Go, GeForce4 420 Go, GeForce4 420 Go 32M, GeForce4 460 Go Quadro4 550 XGL, GeForce4 440 Go 64M, Quadro NVS, Quadro4 500 GoGL, GeForce4 410 Go 16M, GeForce4 MX 440 with AGP8X, GeForce4 MX 440SE with AGP8X GeForce4 MX 420 with AGP8, GeForce4 MX 4000, Quadro4 580 XGL, Quadro NVS 280 SD, Quadro4 380 XGL, Quadro NVS 50 PCI, GeForce2 Integrated GPU, GeForce4 MX Integrated GPU, GeForce3, GeForce3 Ti 200, GeForce3 Ti 500, Quadro DCC, GeForce4 Ti 4600 GeForce4 Ti 4400, GeForce4 Ti 4200, Quadro4 900 XGL, Quadro4 750 XGL, Quadro4 700 XGL, GeForce4 Ti 4800, GeForce4 Ti 4200 with AGP8X, GeForce4 Ti 4800 SE, GeForce4 4200 Go, Quadro4 980 XGL, Quadro4 780 XGL, and Quadro4 700 GoGL.

Use current drivers if possible. Supported cards in Etch are listed in [http://http.download.nvidia.com/XFree86/Linux-x86/1.0-8776/README/appendix-a.html Appendix A of NVIDIA's 1.0-8776 driver README] by NVIDIA chip name and Device PCI ID. Supported cards in post-Etch versions of Debian Unstable ("Sid") are listed in [http://http.download.nvidia.com/XFree86/Linux-x86/169.12/README/appendix-a.html Appendix A of NVIDIA's 169.12 driver README].

To find the name of an unknown card, try '''lspci'''; or run [attachment:nvidia-legacy-check.sh this script] to see if the current drivers would work.

===== Methods =====
[[Anchor(Methods)]]
There are four different methods of installing the kernel module. Try the first one first.

====== Use module-assistant ======
[[Anchor(Method1)]]
This method is easy, and should work with most stock or custom kernels.

Install module-assistant, gcc, and nvidia-kernel-common with with apt-get:
{{{
# apt-get install module-assistant gcc nvidia-kernel-common
}}}
Then run:
{{{
# m-a update
}}}
and
{{{
# m-a prepare
}}}
Run the following command, but substitute ''nvidia'' by ''nvidia-kernel-legacy-source'' if you want to install the [#Legacy legacy drivers] OR ''nvidia-kernel-legacy-XXxx'' if you are using Sid replacing XXxx one of the packages listed [#Legacy here].
{{{
# m-a auto-install nvidia
}}}
And that's it. If all went well, your '''nvidia''' kernel module is now built and installed; you may [#Libraries proceed to step 2]. If not, read the rest of this section.

You must use the same version of gcc to build your nvidia kernel module as was used to build your kernel. This might be a problem if you are running a stock kernel. If module-assistant fails, read its log output and look for messages suggesting that you need, for example, gcc-4.0 instead of gcc-4.1. Then install the corresponding package and retry ''auto-install''.

The ''auto-install'' step is the biggest step of the procedure, and is the most likely to fail. ''auto-install'' can be divided in smaller module-assistant steps, which can help debugging:
 * ''get''
 * ''build''
 * ''install''

If # m-a get nvidia; fails, try installing the nvidia-kernel-source package. If APT fails to install nvidia-kernel-source, you should go back to step 0 and make sure you didn't miss something.

If you are unable to install the module using module-assistant, try [#Method2 installing a pre-built module] if you use a stock kernel or try to [#Method3 build manually, with a custom kernel].

====== Install a pre-built module ======
[[Anchor(Method2)]]
This method is easy if you're running a recent stock kernel for which a pre-built module is available; it will not work at all if you're running a custom kernel or Debian 3.1 amd64. If the module-assistant method doesn't work for you and there are pre-built modules available for your kernel, use this method.

In Sarge, pre-built modules are only available for kernel 2.4.27, Sarge's default kernel. There are no pre-built modules for 2.6.8. If you don't know your kernel version, run
{{{
$ uname -r
}}}
If there is a pre-built module for your kernel, install its package. The name starts with "nvidia-kernel-". This is followed by "legacy-" if you want to install the [#Legacy legacy drivers]. The name ends by the identifier of your stock kernel package. For example, to install the current drivers with apt-get:
{{{
# apt-get install nvidia-kernel-$(uname -r)
}}}

If this step succeeds, you may now [#Libraries proceed to step 2]. If there are no pre-built modules for your kernel, and [#Method1 method 1] fails, you may want to try [#Method4 method 4].

====== Build manually, with a custom kernel ======
[[Anchor(Method3)]]
Use this method if you're configuring and building a custom kernel.

1. Install the kernel module source. It comes in the ''nvidia-kernel-source'' package for the current drivers, or in ''nvidia-kernel-legacy-source'' if you want to install the [#Legacy legacy drivers]. For example, to install the current drivers with apt-get:
{{{
# apt-get install nvidia-kernel-source
}}}
This will install a source tarball in ''/usr/src/nvidia-kernel[-legacy]-source.tar.gz''. Unpack it in ''/usr/src''. For example, to unpack the source tarball of the current driver:
{{{
$ cd /usr/src
# tar -zxf nvidia-kernel-source.tar.gz
}}}
This will unpack the kernel module sources into ''/usr/src/modules/nvidia-kernel[-legacy]''.

2. Configure your kernel. This step isn't documented here; if you need to learn how, see the kernel-package documentation. But in summary, what you have to do is
{{{
$ cd /usr/src/linux
# make xconfig
}}}
and then choose the options you want. Note, however, that each of the following kernel options has been reported to cause trouble with the '''nvidia''' driver:
 * Device drivers –> Graphics Support –> nVidia Riva support (FB_RIVA)
 * Device drivers –> Graphics support –> nVidia Framebuffer Support (FB_NVIDIA) (only found in kernels > 2.6.11)
 * Device drivers –> Graphics support –> VESA VGA graphics support (FB_VESA)
 * Processor Type and Features –> Local APIC support on uniprocessors (X86_UP_APIC) (not available if you have an SMP kernel, including hyperthreading)
It is therefore recommended that you disable all of the above options in your kernel configuration. If for some reason you don't disable them, and then your X display doesn't work properly with the '''nvidia''' driver, you should suspect these options as the likely cause of the trouble. For more details, see the Troubleshooting section.

3. Build the kernel and the '''nvidia''' kernel module:
{{{
$ cd /usr/src/linux
# make-kpkg clean
# make-kpkg kernel_image modules_image
}}}
For an introduction to using make-kpkg to build kernel packages, see [http://newbiedoc.sourceforge.net/system/kernel-pkg.html Creating custom kernels with Debian's kernel-package system], or [http://www.debianuniverse.com/readonline/chapter/21 Compiling Kernels the Debian Way]. See also the make-kpkg man page, for a description of other options and targets that you can use in this command.

The result of the above command will be two Debian package files, { kernel | linux }-image-*.deb and nvidia-kernel-*.deb, both in /usr/src or /usr/src/modules. The first file contains your kernel, and the second contains your '''nvidia''' kernel module.

At the same time, if you have sources for any other add-on kernel modules in /usr/src/modules, then the "modules_image" target will cause make-kpkg to build Debian package files for them, too. For example, if you install the fuse-source package you'll get a source archive /usr/src/fuse.tar.gz, which you can unpack to get fuse module sources in /usr/src/modules/fuse. If you've done this, then this same invocation of make-kpkg will also build a fuse module package file, /usr/src/fuse-*.deb, that's specific to your new kernel.

4. Install the new kernel and kernel module:
{{{
$ cd /usr/src
# dpkg -i /path/kernel-image-*.deb /path/nvidia-kernel-*.deb
}}}
Use the fileglobs as above if you want, but watch out that you don't have more than one kernel image or nvidia-kernel package file lying around in /usr/src. If you do you'll get a blizzard of error messages. It's probably better to explicitly type all of the version information rendered as * above.

5. Boot your new kernel. Before trying to get the NVIDIA 3D drivers to work, make sure that the new kernel boots and that X starts well using a free X driver.

[#Libraries Proceed to step 2].

====== Build manually, with a stock kernel ======
[[Anchor(Method4)]]
Use this method if you're running a stock kernel and the two first methods failed or didn't apply to you. module-assistant should automate this process. In other words, if the first method failed but this one works, you should probably submit a bug report against module-assistant.

The following procedure is adapted from the instructions in /usr/share/doc/nvidia-kernel-source/README.Debian and is known to be potentially inexact.

         1. Save the release number of your kernel (e.g. 2.4.27-2-k7 or 2.6.8-1-686) in a couple of environment variables:
{{{
                export KVERS=$(uname -r)
                export KSRC=/usr/src/linux-headers-$KVERS
}}}
            Note that these variables are used by the build commands below, so you really do need to set and export them, as in the above commands.
         2. Install the kernel module source: run
{{{
                apt-get install nvidia-kernel-source nvidia-kernel-common
}}}
            This will give you a source tarball /usr/src/nvidia-kernel-source.tar.gz. Unpack it with
{{{
                cd /usr/src
                tar -zxf nvidia-kernel-source.tar.gz
}}}
            This will unpack the kernel module sources into /usr/src/modules/nvidia-kernel.
         3. Install the header files for your kernel:
{{{
                apt-get install linux-headers-$KVERS
}}}
            This will give you kernel header files in /usr/src/linux-headers-$KVERS. Be sure to check that the installed kernel image and kernel header packages have the same version number: run
{{{
                apt-cache policy kernel-image-$KVERS linux-headers-$KVERS
}}}
            and check that the version number listed as Installed is the same for both packages. If it isn't, find the distribution that has the version of linux-headers that you need, e.g. testing, and rerun the above installation command, adding '-t testing' (or whichever).
         4. Build the kernel module package:
{{{
                cd /usr/src/modules/nvidia-kernel
                debian/rules binary_modules
}}}
            The result will be a package file /usr/src/nvidia-kernel-*.deb, which contains your kernel module.

            Note: several users have told me recently that their nvidia package file ends up in /usr/src/modules, instead of /usr/src. I don't know yet why this happens. If this is your case, please adjust the next command appropriately.
         5. Install the kernel module:
{{{
                dpkg -i /usr/src/nvidia-kernel-*.deb
}}}
            Use the fileglob as above if you want, but watch out that you don't have more than one nvidia-kernel package file lying around in /usr/src. If you do you'll get a blizzard of error messages. It's probably better to explicitly type all of the version information that I rendered as * above.
      Now proceed to step 2, below.

==== Install the NVIDIA user-space libraries ====
[[Anchor(Libraries)]]
Install the ''nvidia-glx'' package for the current drivers, or ''nvidia-glx-legacy'' if you want to install the [#Legacy legacy drivers]. For example, to install the current drivers with apt-get:
{{{
# apt-get install nvidia-glx
}}}
Note: The reason this step has to come after step 1 is that nvidia-glx depends on a virtual package called 'nvidia-kernel-$NVVERSION', where $NVVERSION is the upstream part of the version of the nvidia-glx package. This virtual package should be provided by the kernel module package that you installed in step 1; so you have to complete that step first. If the installation of nvidia-glx fails because the 'nvidia-kernel-$NVVERSION' isn't satisfied, you should probably make sure that step 1 went OK.

==== Configure X to use the nvidia driver ====
Update your X configuration. There are two ways to do this. The one you should use depends on whether you manually edited your X configuration file. If you don't know if you did, you probably didn't. If you run Sarge and choose the debconf way but you did edit your X config file, your changes will be quietly ignored. To make sure, run one of the following commands, depending on your X server.

For XFree86 (Sarge):
{{{
$ md5sum /etc/X11/XF86Config-4|diff -sq /var/lib/xfree86/XF86Config-4.md5sum -
}}}
For X.org (Etch):
{{{
$ md5sum /etc/X11/xorg.conf|diff -sq /var/lib/x11/xorg.conf.md5sum -
}}}
If the files differ, choose the second way (the manual way).

As a suggestion, save yourself some possible grief later by backing up your current X config file.
For XFree86 (Sarge):
{{{
# cp -p /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.bak
}}}
For X.org (Etch):
{{{
# cp -p /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
}}}

===== The debconf way =====
Run the following command.
For XFree86 (Sarge):
{{{
# dpkg-reconfigure xserver-xfree86
}}}
For X.org (Etch):
{{{
# dpkg-reconfigure xserver-xorg
}}}
This will ask you a long series of questions, some of which you should have already seen at least when you installed Debian. You only need to change your answer to 2 of those questions. When asked to choose an X server driver, choose '''nvidia'''. Then, when asked to select X server modules, deselect (uncheck) GLCore (if present) and dri, and select (check) glx.

Finally, if you use Sarge, you may want to verify that your X config file was written. To do so, run:
{{{
$ ls -l /etc/X11/XF86Config-4
}}}
and check that the date printed is current. If this is not the case, you'll have to use the manual way. Otherwise, your X configuration should have been updated for the use of the '''nvidia''' driver.

===== The manual way =====
This method will allow you to preserve customizations you've made to your X config file.
Etch users should simply install and use '''nvidia-xconfig'''. The rest of this section is for Sarge users.

Watch out for typos, and check your X log if things go wrong.

Edit your X config file:
 * In the "Module" section, be sure that you have a line:
 {{{
 Load "glx"
 }}}
 and remove or comment out (prepend with a #) any lines that refer to the "dri" or "GLCore" modules.
 * In the "Device" section for your video card, change the driver (normally nv or vesa) to '''nvidia''':
 {{{
 Driver "nvidia"
 }}}

==== Force the kernel module to load at boot ====
Since X is going to use the '''nvidia''' driver, it will need to have the '''nvidia''' kernel module loaded.
Ensure that the nvidia module gets inserted into your kernel automatically at boot, by adding it to /etc/modules if it's not already there:
{{{
# grep -q ^nvidia /etc/modules || echo nvidia >> /etc/modules
}}}

=== Load the kernel module and restart X ===
This is the easiest but probably most crucial step. If it doesn't work for some reason, and you want to get back to X before fixing the problem, you'll have to revert step 3 (by choosing a free X driver again). When you think you've fixed the problem, you can do step 3 again and retry starting X. Remember that even if it works you'll want to read the [#Upgrades next section] to avoid future trouble. And if it doesn't...check the Troubleshooting section.

To avoid rebooting your system instead of just restarting X, load the '''nvidia''' module. You can do it that way:
{{{
# modprobe nvidia
}}}

Now to restart X. If you don't use a display manager, simply close your session. That should bring to a console. If it doesn't, you must be using a display manager (such as gdm, kdm or xdm). First identify which one you're using. If you don't know, it's probably gdm. You can know by checking whether a process ending with "dm" is running. Once you determined which one you use, close your session and go run the appropriate init script in a console. Here's an example for gdm:
{{{
# invoke-rc.d gdm restart
}}}
If you can't figure out how to restart X with those instructions, you can simply reboot your system. Otherwise, the keyboard shortcut Ctrl+Alt+Backspace should be reliable, despite being somewhat "unfriendly".

==== Check that it worked ====
To check that the acceleration is working, glxinfo can be used. This program is in the mesa-utils package. If
{{{
$ glxinfo |grep rendering
}}}
returns "direct rendering: Yes", acceleration is working. If it returns No, [#nodri see section "Hardware acceleration, aka direct rendering, doesn't work"]. If it returns Yes, 3D acceleration (in games such as !PlanetPenguin Racer and Neverball) should work. If it works in these games but not in a particular application you expected to be able to use, [#oldgame check section "Some old game doesn't start"].

== How to deal with kernel changes and driver upgrades ==
[[Anchor(Upgrades)]]
Steps 2 and 3 are done for good. However, you'll have to repeat step 1 in certain situations. If you don't realize such a situation happens, X will fail to start. You can take two approaches with this : either remember when this will happen and try to prevent it, or remember to come back here when your X fails to start. Either way, you're not done for life. If X fails to start because of this, you can again revert step 3 (by choosing a free X driver again) and redo it when you want to retry using the '''nvidia''' driver for X.

=== When ===
Step 1 builds an '''nvidia''' kernel module for a specific kernel and NVIDIA driver version. You'll have to do it for each kernel, and you'll have to redo it for each new driver version.
If you don't know what this means, read on.

==== ...will the NVIDIA driver version change ====
If you're using Sarge, this won't happen until you upgrade to the next Debian release, but it will happen then.

In all cases, this will happen when the nvidia-glx package is upgraded. All versions of nvidia-glx depend on an nvidia-kernel-'''version''' virtual package. When you followed step 1, you built or installed a package providing this virtual package. However, if you upgrade nvidia-glx before doing step 1 again, APT will attempt to satisfy the virtual package by installing a prebuilt kernel module. You'll notice some new nvidia-kernel-'''something''' package being installed (or upgraded if you already had it). This may be what you want if you're using a 2.4 kernel. If you're not, APT will be installing a useless package. Instead of letting it do, do step 1 again to get an appropriate kernel module. Then, the virtual package will be satisfied and you can upgrade nvidia-glx safely and without installing a useless package.

==== ...will your kernel change ====
If you build other modules using module-assistant, you have to redo step 1 everytime you'd have to run module-assistant for other modules, that is for every new kernel ABI. If you don't know what that means, read on.

If you install a kernel with a new ABI, a new kernel image package will be installed. For example, if the 2.4.27 kernel gets a new ABI and you currently use kernel-image-2.4.27-2-386, you will have to install the kernel-image-2.4.27-3-386 package to get the new kernel (the "-2" and "-3" part of the package names indicate respectively that these packages contain the second and third ABI of Debian's 2.4.27 i386 stock kernels). This may happen without your intervention when upgrading your system if the kernel-image-2.4-386 meta package is installed.
This can also happen if you install a different kernel. For example, you can have both 2.4.27 and 2.6.8 in Sarge. If you did step 1 for 2.4.27 only, you'll need to do it for 2.6.8 too.
You'll notice that a new kernel is installed when a new kernel-image-'''something''' or linux-image-'''something''' package is installed. X will fail to start after you booted a new kernel until you perform step 1 for that kernel.

= Troubleshooting =
== X doesn't start ==
 * Make sure the '''nvidia''' module is loaded into your kernel:
 {{{
 $ lsmod | grep nvidia
 }}}
 If it's not, then use modprobe or modconf to load it, or else have it load automatically at boot by adding '''nvidia''' to /etc/modules.

 * Check that you have device files /dev/nvidia0 and /dev/nvidiactl:
 {{{
 $ ls -l /dev/nvidia*
 crw-rw---- 1 root video 195, 0 date /dev/nvidia0
 crw-rw---- 1 root video 195, 255 date /dev/nvidiactl
 }}}
 In Sarge, those files should be created by udev or devfs when the '''nvidia''' kernel module is loaded. Therefore, the absence of these files is most likely to be fixed by the previous solution. If the module is loaded but the files aren't created, you should verify that either udev or devfs is working correctly. If you use a kernel above 2.6.12, nvidia-kernel-common's /etc/init.d/nvidia-kernel is responsible for creating those files.

 * Make sure that your problem is related to the '''nvidia''' driver. Try switching back to a free driver: go back and repeat step 3, but this time select driver '''nv''' or '''vesa''' instead of '''nvidia'''. Then restart your X server. If it still won't start, then you have other problems that precede NVIDIA's drivers.

 * Make sure that the file "nvidia_drv.o" is specified in the Xorg.0.log file, i.e that it has been loaded by X. Make sure the log file is from the session where the nvidia driver was configured to being loaded.

 {{{
 # grep nvidia_drv.o /var/log/Xorg.0.log
 (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.o
 }}}

 * If this file is not mentioned in the log file, then apply

 {{{
 # cd /usr/lib/xorg/modules/drivers
 # /usr/lib/xorg/modules/drivers# gcc -shared nvidia_drv.o -o nvidia_drv.so
 }}}

 * Maybe X cannot find/load the lib libwfb.ko. You need this lib for the Geforce 8800 cards. The lib could be in /usr/lib/xorg/modules with a different name, e. g. libnvidia-wfb.so.1.0.9746.
 
 The solution is to make a symlink like that:
 
 {{{
 cd /usr/lib/xorg/modules

 ln -s libnvidia-wfb.so.1.0.9746 /usr/lib/xorg/modules/libwfb.so
 }}}
 See also (http://www.nvnews.net/vbulletin/showthread.php?t=83214)

 * If you previously used nvidia-installer and forgot to uninstall it, X may still be loading those libraries instead of the Debian ones. In your X log file with a good installation, you should see module loading lines like this:

 {{{
 (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
 (II) Module glx: vendor="NVIDIA Corporation"
        compiled for 4.0.2, module version = 1.0.7184
        Module class: XFree86 Server Extension
        ABI class: XFree86 Server Extension, version 0.1

 (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.o
 (II) Module nvidia: vendor="NVIDIA Corporation"
        compiled for 4.0.2, module version = 1.0.7184
        Module class: XFree86 Video Driver

 (II) v4l driver for Video4Linux
 (II) NVIDIA X Driver 1.0-7184 Tue Aug 1 18:41:01 PDT 2006
 }}}

 You need to make sure that "module version" is the same for all of these. If an incorrect module is being picked up it might look like this:

 {{{
 (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
 (II) Module glx: vendor="NVIDIA Corporation"
        compiled for 4.0.2, module version = 1.0.7184
        Module class: XFree86 Server Extension
        ABI class: XFree86 Server Extension, version 0.1

 (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
 (II) Module nvidia: vendor="NVIDIA Corporation"
        compiled for 4.0.2, module version = 1.0.8776
        Module class: X.Org Video Driver

 (EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
 (EE) NVIDIA(0): log file that the GLX module has been loaded in your X
 (EE) NVIDIA(0): server, and that the module is the NVIDIA GLX module. If
 (EE) NVIDIA(0): you continue to encounter problems, Please try
 (EE) NVIDIA(0): reinstalling the NVIDIA driver.
 }}}

 If this is the case, remove the incorrect file (easiest to copy-and-paste the filename from your log as above):
 {{{
 rm /usr/lib/xorg/modules/drivers/nvidia_drv.so
 }}}


== Lost Your Console ==
This may only apply to the nvidia packages in etch.

If you happen to lose your virtual terminals (Ctrl+Alt+F1) [i.e. the console is displaying garbage] after xorg starts, this might be a fix (it was for me):
{{{
# apt-get install nvidia-settings
$ nvidia-settings
click OpenGL Settings and check "Sync to VBlanc".
}}}

It should work now.


== Trouble with Linux 2.6 ==
Watch the kernel version you use.

Any reasonably recent version of Linux 2.4 should work with the NVIDIA drivers. However, Linux 2.6 is the development branch of Linux and has changing kernel interfaces. Each release of the NVIDIA 3D drivers can only warrant compatibility with already released Linux versions. This flaw comes from the fact that NVIDIA's 3D drivers are non-free and therefore can't enter the main Linux kernel tree. It is consequently possible that a version of the NVIDIA 3D drivers working with the Linux 2.6 minor version already in Debian enters unstable and testing, and then that a new minor version of Linux 2.6, incompatible with the version of the NVIDIA 3D drivers in Debian, enters Debian. In this case, problems that result from the incompatibilities should be reported in the [http://bugs.debian.org Bug Tracking System] against the NVIDIA 3D drivers. So, before installing the drivers for the first time, or before upgrading your kernel, check if the versions of both are compatible. If the NVIDIA drivers are more recent than Linux, there should be no problem. In the opposite case, consider checking whether problems were reported, in the Debian BTS are somewhere else. If you install the drivers or upgrade your kernel despite potential incompatibilities and then get undocumented issues, check if the issues exist with a compatible Linux version.

Despite this, you should try using a recent Linux kernel. Many old versions have bugs that are problematic with the NVIDIA 3D drivers. In summary, try using either the Linux 2.6 version in your Debian release, or the latest Linux version compatible with the drivers.

== X (or the complete machine when running X) is unstable ==
 * Check whether you use a framebuffer, such as rivafb, nvidiafb and vesafb. The rivafb driver is known to conflict with NVIDIA's drivers. vesafb is known to work is some cases but also to be problematic in other cases. All of these drivers are compiled as modules in stock kernels, except for vesafb after 2.6.12. To see if you have one of these modules inserted in your kernel, run
 {{{
 $ lsmod|grep 'rivafb\|vesafb\|nvidiafb'
 }}}
 If this outputs something, get rid of the module(s) displayed.
 {{{
 # rmmod rivafb vesafb nvidiafb
 }}}
 will remove the modules temporarily (for this boot). If something causes one of the modules to load automatically at boot, blacklist the modules. If you are using a custom kernel, do not compile these modules in (Device drivers –> Graphics support –> nVidia Riva support (FB_RIVA), Device drivers –> Graphics support –> VESA VGA graphics support (FB_VESA) and Device drivers –> Graphics support –> nVidia Framebuffer Support (FB_NVIDIA)).

 * Several users have reported that they had hard lockups when switching virtual terminals or shutting down their X servers, until they recompiled their kernels with local APIC disabled. Local APIC support on uniprocessors (X86_UP_APIC) is enabled in stock non-SMP kernels. Note that the local APIC option isn't available if you have an SMP (e.g. hyperthreading) kernel. In that case the local APIC option probably has no effect, but one user reported that he still had success disabling it by manually editing /usr/src/linux/.config to comment out the line with CONFIG_X86_LOCAL_APIC. He also had to repeat the operation every time he reconfigured his kernel. Alternatively, you might have to turn off SMP and then disable local APIC. :(
## TODO: Verify SMP issue
 
== Hardware acceleration, aka direct rendering, doesn't work ==
[[Anchor(nodri)]]
We've covered how to check that the installation worked in section "Check that it worked". If it doesn't, check that you adjusted your X configuration properly. You can do so by checking that
{{{
$ grep Driver /etc/X11/XF86Config-4 /etc/X11/xorg.conf 2>&1|grep nvidia
}}}
returns something. If this is the case and X was restarted since the configuration was changed, you may be affected by [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=208198 Debian bug #208198]. You can check if this is the case by running
{{{
$ glxinfo | egrep "glx (vendor|version)"
}}}
If you see different vendors or versions for the client and server, this is your problem. In that case you can run
{{{
# NVVER=`dpkg -s nvidia-glx|grep Version|cut -d ' ' -f2|cut -d '-' -f1`
# ln -fs /usr/lib/libGL.so.$NVVER /usr/X11R6/lib/libGL.so
# ln -fs /usr/lib/libGL.so.$NVVER /usr/X11R6/lib/libGL.so.1
# ln -fs libGL.so.$NVVER /usr/lib/libGL.so.1.2
}}}
to fix the problem.

If that's not your problem but you get an error when trying to use OpenGL apps like glxinfo that looks like this one:
{{{
Error: Could not open /dev/nvidiactl because the permissions
are too resticitive. Please see the FREQUENTLY ASKED QUESTIONS
section of /usr/share/doc/NVIDIA_GLX-1.0/README for steps
to correct.
Fatal signal: Segmentation Fault
}}}
you should make sure that the user running the application is in the '''video''' group.

== 3D Applications Aborting with "Segmentation Fault" ==

If you recieve the message "Segmentation fault" when starting 3D programs from console, this can mean that you do not have the user-space libraries in place. To install them, see [#head-d06efc24a486cb1523718aa1468ec35dbe8461a7 Installing the nvidia user-space libraries]. Note that removing ''/etc/init.d/nvidia-glx'' or commenting out lines from there, as is suggested on several places on the Net, is not a good workaround for this issue.


== Various problems with X ==
Look in your X log file (/var/log/XFree86.0.log for XFree86, /var/log/Xorg.0.log for X.org). The X server writes a lot of information there about what configuration files it's reading, what display modes it's trying, and errors (EE) it encounters along the way. You can very often find hints there to the source of whatever problem you're having.

== Some old game doesn't start ==
[[Anchor(oldgame)]]
If some software (probably old games) complains about missing libGL.so, try installing nvidia-glx-dev. If this doesn't help, this application is probably buggy or doesn't support your system. This document probably can't help you with these problems.
##Imported from Andrew's HOWTO, but not verified. The HOWTO red "thanks to Randall Donald for this information". --Filipus

== "nvidia license taints kernel" ==
If you get such a warning message on your console or in your syslog, don't worry. Your kernel is fine...or at least as fine as a kernel that can run NVIDIA's 3D driver can be. All this message means is that because your driver isn't open source, you won't get any support from the kernel maintainers if anything goes wrong with your kernel while the module is loaded. See the [http://www.tux.org/lkml/#s1-18 LKML FAQ] for more.

== Last resort ==
You can check [http://www.nvnews.net/vbulletin/forumdisplay.php?f=14 the NVIDIA Linux Forum at nvnews.net] for issues not related to Debian packaging. For Debian-specific issues, you may look at the bug tracking system or ask a question on Debian help resources, such as the debian-user mailing list and #debian on irc.debian.org. If you still have a problem that you can't solve, you can write and [mailto:andrex@alumni.utexas.net?subject=Debian-NVIDIA tell the author] about it. He'll do what he can to help, subject to his knowledge and time constraints.

= More information =
 * For more information about the drivers, see:
  * /usr/share/doc/nvidia-glx/README.Debian
  * /usr/share/doc/nvidia-glx/README.gz
  * /usr/share/doc/nvidia-kernel-source/README.Debian
 These files have loads of information about options and for troubleshooting NVIDIA's proprietary drivers. Here's an enticement for you to read them: somewhere in one of them you can find an explanation of how to suppress the NVIDIA splash screen every time you start an X server (hint: search for "No``Logo").
 * You can adjust the clock rates of your GPU and video RAM by running nvclock, nvclock_gtk, or nvclock_qt, available respectively in the nvclock, nvclock-gtk, and nvclock-qt packages. Obligatory warning: you can destroy your video hardware with these tools if you're not careful.
 * You can adjust some other, relatively obscure settings of the driver by running nvidia-settings, available in the nvidia-settings package.
 * [http://people.debian.org/~rdonald/index.php The Debian page of Randall Donald], the maintainer of Debian's NVIDIA packages, has news about the packaging work being done.
Line 41: Line 541:
The Links page has links to nVidia driver packages, support forums, other HOWTOs, and anything else I find that can help you to get your nVidia hardware working under Debian.

For problems, comments, or questions about the information in this HOWTO, you can write to me. I'm no expert, but I'll do my best to make the information useful.
This wiki page was created by Filipus Klutiero to publish an update of [http://home.comcast.net/~andrex/Debian-nVidia/index.html Andrew's Debian-nVidia HOWTO]. You are free to modify this page as long as you agree to let copyright of your changes to the author. For problems, comments, or questions about the information in this document, you can [mailto:chealer@gmail.com?subject=Debian-NVIDIA write to the maintainer]. He's no expert, but he'll do his best to make the document useful.

== Credits ==
Thanks to Andrew Schulman for publishing his HOWTO, agreeing to share his rights on it, and making the HOWTO link to this page since it stopped being maintained.

== Licensing ==
This document is Copyright 2005, by Andrew E. Schulman. Permission is hereby granted to freely copy, distribute, and/or modify any of the contents of this document in any way and for any purpose.

----
CategoryXWindowSystem

This document explains how to make use of NVIDIA video hardware on a ["Debian"] GNU/Linux system. The [#free free] drivers only provides 2D acceleration, whereas the [#non-free non-free] drivers supports 3D-acceleration.

?TableOfContents

free drivers

?Anchor(free) Debian has two free drivers that support NVIDIA cards. The vesa driver is a generic driver for most VGA cards. The nv driver usually gives better results. To see which is installed read the output of

$ grep Driver /etc/X11/XF86Config-4 /etc/X11/xorg.conf 2>&1|grep 'nv\|vesa'

To switch between drivers, see "[wiki:ConfigureX configure X]".

For 3D acceleration use the non-free nvidia driver; neither nv or vesa supports 3D. Remember the non-free driver is more complex so things are more likely to break. If things break, switch back to one of the free X drivers while you find a way to get 3D acceleration working again.

The project hosted at [http://nouveau.freedesktop.org/wiki/] is trying to develop a free 3D accelerated nVidia driver, which is currently at early development stages.

non-free drivers

?Anchor(non-free)

To install NVIDIA 3D drivers use NVIDIA's official installer or Debian driver packages. Each method has advantages.

Why use a Debian-specific method?

NVIDIA's installer used to be easier to use; but with the advent of module-assistant, the Debian way is probably easier. Even when building a driver module manually, in the long run the Debian way will probably save labor, and is certainly the most reliable method.

Users who want to try the Debian way can [#Installation skip to the Installation section]. Because NVIDIA's installer is already described [?NvidiaGraphicsDriversNvidiaWay elsewhere], this HOWTO just describes the Debian way.

Whichever installation method, the [#Troubleshooting troubleshooting section] should be of interest.

Comparison of nvidia-installer and the Debian way

Advantages of "the Debian way":

  • More automated, which saves work if the kernel is changed.
  • Uses Debian package management tools, so it's cleaner.
  • Can be done while X is running. (X must be restarted to apply the driver change.)
  • Users of make-kpkg should find it fits easily into their existing build procedure.

  • Users of make-kpkg who build unofficial kernel modules, (e.g. lm-sensors or fuse), have all their driver packages built with a single invocation of make-kpkg.

  • No need to download anything from nvidia.com, since the Debian packages contain all necessary parts.

Advantages of NVIDIA's official installer:

  • Most recent NVIDIA driver versions. Debian packages commonly lag behind a month or more. Compare the [http://www.nvidia.com/object/unix.html current version] and the [http://packages.debian.org/nvidia-glx version in your Debian release] to see what's new.

  • Easy to use. (But users who often rebuild their kernel might get tired of rerunning it every time -- rebuilding a kernel requires waiting through a reboot, watching the now incompatible old X server to die, navigating the installer menus, then starting X. It gets old. That's why this guide was written. :) )

  • Some users report that when the Debian way fails, the NVIDIA installer works.

Installation

?Anchor(Installation) The Debian way to install the NVIDIA 3D drivers.

Target audience

Debian users running Linux kernel versions 2.4 or 2.6, with either stock or custom kernels, and with ["Sarge"] or ["Etch"].

Overview

The NVIDIA 3D drivers have two parts: a kernel module, and a collection of user-space GLX libraries. The kernel module or "kernel interface to the binary driver", distributed in source form with one binary component, is in the nvidia-kernel-source and nvidia-kernel-common packages. The libraries or so called "binary drivers" or GLX libraries, distributed in binary form, are in the nvidia-glx Debian package. The package version of the module and GLX libraries must match. The module source and GLX libraries only have to be installed once. The module binary must be recompiled every time the kernel is changed. Here's what to do:

  • 0. Make sure APT has non-free and contrib sources (consult sources.list(5) manpage for help on doing this)

  • 1. Install the kernel module
  • 2. Install the user-space GLX libraries
  • 3. Configure X to use the nvidia driver

  • 4. Force the kernel module to load at boot

Steps 2, 3 and 4 have to be performed only once. Step 1 has to be repeated every time the kernel is changed. With the help of module-assistant, apt-get, and make-kpkg, it's easy.

Current issues

Testing users: NVIDIA packages are currently not in testing due to lack of maintainance, a Linux bug and X server 1.4's ABI change. Filipus Klutiero plans to update the document when the situation is fixed. In the meantime, packages referred to by this guide will not be available on pure testing systems. It is possible to setup a [http://dpkg.vireo.org/factoid.php?key=testing/unstable%20mix testing/unstable mix].

Steps

Install the kernel module

Stock or Custom Kernel?

Some of the installation methods below depend on whether you're running a stock kernel, i.e. a prebuilt kernel from the Debian distribution. If you know which kind of kernel you have, you can skip to the [#Legacy following section].

By default, Debian comes with a stock kernel. If you don't know what kind of kernel you're running, then it's probably a stock kernel. If you're not sure, run

$ uname -r

and check if the output looks like 2.*.*-small number-architecture (e.g. 2.4.27-2-386 or 2.6.8-2-k7). If it does, you're most likely running a stock kernel.

Legacy drivers?

?Anchor(Legacy) Debian 4.0, or Etch, (released in 2007), has separate packages for older nvidia card drivers; these packages all have "legacy" in the name.

Debian 3.1, or Sarge, (released in 2005), predates the "legacy" split; Sarge users should skip to the [#Methods Methods section].

Etch has two versions of NVIDIA's proprietary drivers: current and legacy. For example, user-space libraries for newer GPUs are in the nvidia-glx package, and the older GPU drivers are in nvidia-glx-legacy package.

In post-Etch versions of Debian Unstable, ("Sid"), the legacy driver itself was forked into two versions: a 71xx and a 96xx Version.

The 71xx version supports RIVA TNT, RIVA TNT2/TNT2 Pro, RIVA TNT2 Ultra, Vanta/Vanta LT RIVA TNT2 Model 64/Model 64 Pro, Aladdin TNT2, ?GeForce 256 ?GeForce DDR, Quadro, ?GeForce2 GTS/GeForce2 Pro, ?GeForce2 Ti ?GeForce2 Ultra, and Quadro2 Pro.

The 96xx version supports ?GeForce2 MX/MX 400, ?GeForce2 MX 100/200, ?GeForce2 Go, Quadro2 MXR/EX/Go ?GeForce4 MX 460, ?GeForce4 MX 440, ?GeForce4 MX 420, ?GeForce4 MX 440-SE ?GeForce4 440 Go, ?GeForce4 420 Go, ?GeForce4 420 Go 32M, ?GeForce4 460 Go Quadro4 550 XGL, ?GeForce4 440 Go 64M, Quadro NVS, Quadro4 500 GoGL, ?GeForce4 410 Go 16M, ?GeForce4 MX 440 with AGP8X, ?GeForce4 MX 440SE with AGP8X ?GeForce4 MX 420 with AGP8, ?GeForce4 MX 4000, Quadro4 580 XGL, Quadro NVS 280 SD, Quadro4 380 XGL, Quadro NVS 50 PCI, ?GeForce2 Integrated GPU, ?GeForce4 MX Integrated GPU, ?GeForce3, ?GeForce3 Ti 200, ?GeForce3 Ti 500, Quadro DCC, ?GeForce4 Ti 4600 ?GeForce4 Ti 4400, ?GeForce4 Ti 4200, Quadro4 900 XGL, Quadro4 750 XGL, Quadro4 700 XGL, ?GeForce4 Ti 4800, ?GeForce4 Ti 4200 with AGP8X, ?GeForce4 Ti 4800 SE, ?GeForce4 4200 Go, Quadro4 980 XGL, Quadro4 780 XGL, and Quadro4 700 GoGL.

Use current drivers if possible. Supported cards in Etch are listed in [http://http.download.nvidia.com/XFree86/Linux-x86/1.0-8776/README/appendix-a.html Appendix A of NVIDIA's 1.0-8776 driver README] by NVIDIA chip name and Device PCI ID. Supported cards in post-Etch versions of Debian Unstable ("Sid") are listed in [http://http.download.nvidia.com/XFree86/Linux-x86/169.12/README/appendix-a.html Appendix A of NVIDIA's 169.12 driver README].

To find the name of an unknown card, try lspci; or run [attachment:nvidia-legacy-check.sh this script] to see if the current drivers would work.

Methods

?Anchor(Methods) There are four different methods of installing the kernel module. Try the first one first.

Use module-assistant

?Anchor(Method1) This method is easy, and should work with most stock or custom kernels.

Install module-assistant, gcc, and nvidia-kernel-common with with apt-get:

# apt-get install module-assistant gcc nvidia-kernel-common

Then run:

# m-a update

and

# m-a prepare

Run the following command, but substitute nvidia by nvidia-kernel-legacy-source if you want to install the [#Legacy legacy drivers] OR nvidia-kernel-legacy-XXxx if you are using Sid replacing XXxx one of the packages listed [#Legacy here].

# m-a auto-install nvidia

And that's it. If all went well, your nvidia kernel module is now built and installed; you may [#Libraries proceed to step 2]. If not, read the rest of this section.

You must use the same version of gcc to build your nvidia kernel module as was used to build your kernel. This might be a problem if you are running a stock kernel. If module-assistant fails, read its log output and look for messages suggesting that you need, for example, gcc-4.0 instead of gcc-4.1. Then install the corresponding package and retry auto-install.

The auto-install step is the biggest step of the procedure, and is the most likely to fail. auto-install can be divided in smaller module-assistant steps, which can help debugging:

  • get

  • build

  • install

If # m-a get nvidia; fails, try installing the nvidia-kernel-source package. If APT fails to install nvidia-kernel-source, you should go back to step 0 and make sure you didn't miss something.

If you are unable to install the module using module-assistant, try [#Method2 installing a pre-built module] if you use a stock kernel or try to [#Method3 build manually, with a custom kernel].

Install a pre-built module

?Anchor(Method2) This method is easy if you're running a recent stock kernel for which a pre-built module is available; it will not work at all if you're running a custom kernel or Debian 3.1 amd64. If the module-assistant method doesn't work for you and there are pre-built modules available for your kernel, use this method.

In Sarge, pre-built modules are only available for kernel 2.4.27, Sarge's default kernel. There are no pre-built modules for 2.6.8. If you don't know your kernel version, run

$ uname -r

If there is a pre-built module for your kernel, install its package. The name starts with "nvidia-kernel-". This is followed by "legacy-" if you want to install the [#Legacy legacy drivers]. The name ends by the identifier of your stock kernel package. For example, to install the current drivers with apt-get:

# apt-get install nvidia-kernel-$(uname -r)

If this step succeeds, you may now [#Libraries proceed to step 2]. If there are no pre-built modules for your kernel, and [#Method1 method 1] fails, you may want to try [#Method4 method 4].

Build manually, with a custom kernel

?Anchor(Method3) Use this method if you're configuring and building a custom kernel.

1. Install the kernel module source. It comes in the nvidia-kernel-source package for the current drivers, or in nvidia-kernel-legacy-source if you want to install the [#Legacy legacy drivers]. For example, to install the current drivers with apt-get:

# apt-get install nvidia-kernel-source

This will install a source tarball in /usr/src/nvidia-kernel[-legacy]-source.tar.gz. Unpack it in /usr/src. For example, to unpack the source tarball of the current driver:

$ cd /usr/src
# tar -zxf nvidia-kernel-source.tar.gz 

This will unpack the kernel module sources into /usr/src/modules/nvidia-kernel[-legacy].

2. Configure your kernel. This step isn't documented here; if you need to learn how, see the kernel-package documentation. But in summary, what you have to do is

$ cd /usr/src/linux
# make xconfig

and then choose the options you want. Note, however, that each of the following kernel options has been reported to cause trouble with the nvidia driver:

  • Device drivers –> Graphics Support –> nVidia Riva support (FB_RIVA)

  • Device drivers –> Graphics support –> nVidia Framebuffer Support (FB_NVIDIA) (only found in kernels > 2.6.11)

  • Device drivers –> Graphics support –> VESA VGA graphics support (FB_VESA)

  • Processor Type and Features –> Local APIC support on uniprocessors (X86_UP_APIC) (not available if you have an SMP kernel, including hyperthreading)

It is therefore recommended that you disable all of the above options in your kernel configuration. If for some reason you don't disable them, and then your X display doesn't work properly with the nvidia driver, you should suspect these options as the likely cause of the trouble. For more details, see the Troubleshooting section.

3. Build the kernel and the nvidia kernel module:

$ cd /usr/src/linux
# make-kpkg clean
# make-kpkg kernel_image modules_image

For an introduction to using make-kpkg to build kernel packages, see [http://newbiedoc.sourceforge.net/system/kernel-pkg.html Creating custom kernels with Debian's kernel-package system], or [http://www.debianuniverse.com/readonline/chapter/21 Compiling Kernels the Debian Way]. See also the make-kpkg man page, for a description of other options and targets that you can use in this command.

The result of the above command will be two Debian package files, { kernel | linux }-image-*.deb and nvidia-kernel-*.deb, both in /usr/src or /usr/src/modules. The first file contains your kernel, and the second contains your nvidia kernel module.

At the same time, if you have sources for any other add-on kernel modules in /usr/src/modules, then the "modules_image" target will cause make-kpkg to build Debian package files for them, too. For example, if you install the fuse-source package you'll get a source archive /usr/src/fuse.tar.gz, which you can unpack to get fuse module sources in /usr/src/modules/fuse. If you've done this, then this same invocation of make-kpkg will also build a fuse module package file, /usr/src/fuse-*.deb, that's specific to your new kernel.

4. Install the new kernel and kernel module:

$ cd /usr/src
# dpkg -i /path/kernel-image-*.deb /path/nvidia-kernel-*.deb

Use the fileglobs as above if you want, but watch out that you don't have more than one kernel image or nvidia-kernel package file lying around in /usr/src. If you do you'll get a blizzard of error messages. It's probably better to explicitly type all of the version information rendered as * above.

5. Boot your new kernel. Before trying to get the NVIDIA 3D drivers to work, make sure that the new kernel boots and that X starts well using a free X driver.

[#Libraries Proceed to step 2].

Build manually, with a stock kernel

?Anchor(Method4) Use this method if you're running a stock kernel and the two first methods failed or didn't apply to you. module-assistant should automate this process. In other words, if the first method failed but this one works, you should probably submit a bug report against module-assistant.

The following procedure is adapted from the instructions in /usr/share/doc/nvidia-kernel-source/README.Debian and is known to be potentially inexact.

  1. Save the release number of your kernel (e.g. 2.4.27-2-k7 or 2.6.8-1-686) in a couple of environment variables:

                export KVERS=$(uname -r)
                export KSRC=/usr/src/linux-headers-$KVERS 
  • Note that these variables are used by the build commands below, so you really do need to set and export them, as in the above commands.
  1. Install the kernel module source: run

                apt-get install nvidia-kernel-source nvidia-kernel-common 
  • This will give you a source tarball /usr/src/nvidia-kernel-source.tar.gz. Unpack it with

                cd /usr/src
                tar -zxf nvidia-kernel-source.tar.gz 
  • This will unpack the kernel module sources into /usr/src/modules/nvidia-kernel.
  1. Install the header files for your kernel:

                apt-get install linux-headers-$KVERS 
  • This will give you kernel header files in /usr/src/linux-headers-$KVERS. Be sure to check that the installed kernel image and kernel header packages have the same version number: run

                apt-cache policy kernel-image-$KVERS linux-headers-$KVERS 
  • and check that the version number listed as Installed is the same for both packages. If it isn't, find the distribution that has the version of linux-headers that you need, e.g. testing, and rerun the above installation command, adding '-t testing' (or whichever).
  1. Build the kernel module package:

                cd /usr/src/modules/nvidia-kernel
                debian/rules binary_modules 
  • The result will be a package file /usr/src/nvidia-kernel-*.deb, which contains your kernel module. Note: several users have told me recently that their nvidia package file ends up in /usr/src/modules, instead of /usr/src. I don't know yet why this happens. If this is your case, please adjust the next command appropriately.
  1. Install the kernel module:

                dpkg -i /usr/src/nvidia-kernel-*.deb 
  • Use the fileglob as above if you want, but watch out that you don't have more than one nvidia-kernel package file lying around in /usr/src. If you do you'll get a blizzard of error messages. It's probably better to explicitly type all of the version information that I rendered as * above.
  • Now proceed to step 2, below.

Install the NVIDIA user-space libraries

?Anchor(Libraries) Install the nvidia-glx package for the current drivers, or nvidia-glx-legacy if you want to install the [#Legacy legacy drivers]. For example, to install the current drivers with apt-get:

# apt-get install nvidia-glx

Note: The reason this step has to come after step 1 is that nvidia-glx depends on a virtual package called 'nvidia-kernel-$NVVERSION', where $NVVERSION is the upstream part of the version of the nvidia-glx package. This virtual package should be provided by the kernel module package that you installed in step 1; so you have to complete that step first. If the installation of nvidia-glx fails because the 'nvidia-kernel-$NVVERSION' isn't satisfied, you should probably make sure that step 1 went OK.

Configure X to use the nvidia driver

Update your X configuration. There are two ways to do this. The one you should use depends on whether you manually edited your X configuration file. If you don't know if you did, you probably didn't. If you run Sarge and choose the debconf way but you did edit your X config file, your changes will be quietly ignored. To make sure, run one of the following commands, depending on your X server.

For XFree86 (Sarge):

$ md5sum /etc/X11/XF86Config-4|diff -sq /var/lib/xfree86/XF86Config-4.md5sum -

For X.org (Etch):

$ md5sum /etc/X11/xorg.conf|diff -sq /var/lib/x11/xorg.conf.md5sum -

If the files differ, choose the second way (the manual way).

As a suggestion, save yourself some possible grief later by backing up your current X config file. For XFree86 (Sarge):

# cp -p /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.bak

For X.org (Etch):

# cp -p /etc/X11/xorg.conf /etc/X11/xorg.conf.bak

The debconf way

Run the following command. For XFree86 (Sarge):

# dpkg-reconfigure xserver-xfree86

For X.org (Etch):

# dpkg-reconfigure xserver-xorg

This will ask you a long series of questions, some of which you should have already seen at least when you installed Debian. You only need to change your answer to 2 of those questions. When asked to choose an X server driver, choose nvidia. Then, when asked to select X server modules, deselect (uncheck) GLCore (if present) and dri, and select (check) glx.

Finally, if you use Sarge, you may want to verify that your X config file was written. To do so, run:

$ ls -l /etc/X11/XF86Config-4

and check that the date printed is current. If this is not the case, you'll have to use the manual way. Otherwise, your X configuration should have been updated for the use of the nvidia driver.

The manual way

This method will allow you to preserve customizations you've made to your X config file. Etch users should simply install and use nvidia-xconfig. The rest of this section is for Sarge users.

Watch out for typos, and check your X log if things go wrong.

Edit your X config file:

  • In the "Module" section, be sure that you have a line:
     Load "glx" 
    and remove or comment out (prepend with a #) any lines that refer to the "dri" or "GLCore" modules.
  • In the "Device" section for your video card, change the driver (normally nv or vesa) to nvidia:

     Driver "nvidia"

Force the kernel module to load at boot

Since X is going to use the nvidia driver, it will need to have the nvidia kernel module loaded. Ensure that the nvidia module gets inserted into your kernel automatically at boot, by adding it to /etc/modules if it's not already there:

# grep -q ^nvidia /etc/modules || echo nvidia >> /etc/modules

Load the kernel module and restart X

This is the easiest but probably most crucial step. If it doesn't work for some reason, and you want to get back to X before fixing the problem, you'll have to revert step 3 (by choosing a free X driver again). When you think you've fixed the problem, you can do step 3 again and retry starting X. Remember that even if it works you'll want to read the [#Upgrades next section] to avoid future trouble. And if it doesn't...check the Troubleshooting section.

To avoid rebooting your system instead of just restarting X, load the nvidia module. You can do it that way:

# modprobe nvidia

Now to restart X. If you don't use a display manager, simply close your session. That should bring to a console. If it doesn't, you must be using a display manager (such as gdm, kdm or xdm). First identify which one you're using. If you don't know, it's probably gdm. You can know by checking whether a process ending with "dm" is running. Once you determined which one you use, close your session and go run the appropriate init script in a console. Here's an example for gdm:

# invoke-rc.d gdm restart

If you can't figure out how to restart X with those instructions, you can simply reboot your system. Otherwise, the keyboard shortcut Ctrl+Alt+Backspace should be reliable, despite being somewhat "unfriendly".

Check that it worked

To check that the acceleration is working, glxinfo can be used. This program is in the mesa-utils package. If

$ glxinfo |grep rendering

returns "direct rendering: Yes", acceleration is working. If it returns No, [#nodri see section "Hardware acceleration, aka direct rendering, doesn't work"]. If it returns Yes, 3D acceleration (in games such as PlanetPenguin Racer and Neverball) should work. If it works in these games but not in a particular application you expected to be able to use, [#oldgame check section "Some old game doesn't start"].

How to deal with kernel changes and driver upgrades

?Anchor(Upgrades) Steps 2 and 3 are done for good. However, you'll have to repeat step 1 in certain situations. If you don't realize such a situation happens, X will fail to start. You can take two approaches with this : either remember when this will happen and try to prevent it, or remember to come back here when your X fails to start. Either way, you're not done for life. If X fails to start because of this, you can again revert step 3 (by choosing a free X driver again) and redo it when you want to retry using the nvidia driver for X.

When

Step 1 builds an nvidia kernel module for a specific kernel and NVIDIA driver version. You'll have to do it for each kernel, and you'll have to redo it for each new driver version. If you don't know what this means, read on.

...will the NVIDIA driver version change

If you're using Sarge, this won't happen until you upgrade to the next Debian release, but it will happen then.

In all cases, this will happen when the nvidia-glx package is upgraded. All versions of nvidia-glx depend on an nvidia-kernel-version virtual package. When you followed step 1, you built or installed a package providing this virtual package. However, if you upgrade nvidia-glx before doing step 1 again, APT will attempt to satisfy the virtual package by installing a prebuilt kernel module. You'll notice some new nvidia-kernel-something package being installed (or upgraded if you already had it). This may be what you want if you're using a 2.4 kernel. If you're not, APT will be installing a useless package. Instead of letting it do, do step 1 again to get an appropriate kernel module. Then, the virtual package will be satisfied and you can upgrade nvidia-glx safely and without installing a useless package.

...will your kernel change

If you build other modules using module-assistant, you have to redo step 1 everytime you'd have to run module-assistant for other modules, that is for every new kernel ABI. If you don't know what that means, read on.

If you install a kernel with a new ABI, a new kernel image package will be installed. For example, if the 2.4.27 kernel gets a new ABI and you currently use kernel-image-2.4.27-2-386, you will have to install the kernel-image-2.4.27-3-386 package to get the new kernel (the "-2" and "-3" part of the package names indicate respectively that these packages contain the second and third ABI of Debian's 2.4.27 i386 stock kernels). This may happen without your intervention when upgrading your system if the kernel-image-2.4-386 meta package is installed. This can also happen if you install a different kernel. For example, you can have both 2.4.27 and 2.6.8 in Sarge. If you did step 1 for 2.4.27 only, you'll need to do it for 2.6.8 too. You'll notice that a new kernel is installed when a new kernel-image-something or linux-image-something package is installed. X will fail to start after you booted a new kernel until you perform step 1 for that kernel.

Troubleshooting

X doesn't start

  • Make sure the nvidia module is loaded into your kernel:

     $ lsmod | grep nvidia

    If it's not, then use modprobe or modconf to load it, or else have it load automatically at boot by adding nvidia to /etc/modules.

  • Check that you have device files /dev/nvidia0 and /dev/nvidiactl:
     $ ls -l /dev/nvidia*
     crw-rw----    1 root     video    195,   0 date /dev/nvidia0
     crw-rw----    1 root     video    195, 255 date /dev/nvidiactl

    In Sarge, those files should be created by udev or devfs when the nvidia kernel module is loaded. Therefore, the absence of these files is most likely to be fixed by the previous solution. If the module is loaded but the files aren't created, you should verify that either udev or devfs is working correctly. If you use a kernel above 2.6.12, nvidia-kernel-common's /etc/init.d/nvidia-kernel is responsible for creating those files.

  • Make sure that your problem is related to the nvidia driver. Try switching back to a free driver: go back and repeat step 3, but this time select driver nv or vesa instead of nvidia. Then restart your X server. If it still won't start, then you have other problems that precede NVIDIA's drivers.

  • Make sure that the file "nvidia_drv.o" is specified in the Xorg.0.log file, i.e that it has been loaded by X. Make sure the log file is from the session where the nvidia driver was configured to being loaded.
     # grep nvidia_drv.o /var/log/Xorg.0.log
     (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.o
  • If this file is not mentioned in the log file, then apply
     # cd /usr/lib/xorg/modules/drivers
     # /usr/lib/xorg/modules/drivers# gcc -shared nvidia_drv.o -o nvidia_drv.so
  • Maybe X cannot find/load the lib libwfb.ko. You need this lib for the Geforce 8800 cards. The lib could be in /usr/lib/xorg/modules with a different name, e. g. libnvidia-wfb.so.1.0.9746. The solution is to make a symlink like that:
     cd /usr/lib/xorg/modules
    
     ln -s libnvidia-wfb.so.1.0.9746 /usr/lib/xorg/modules/libwfb.so 

    See also (http://www.nvnews.net/vbulletin/showthread.php?t=83214)

  • If you previously used nvidia-installer and forgot to uninstall it, X may still be loading those libraries instead of the Debian ones. In your X log file with a good installation, you should see module loading lines like this:
     (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
     (II) Module glx: vendor="NVIDIA Corporation"
            compiled for 4.0.2, module version = 1.0.7184
            Module class: XFree86 Server Extension
            ABI class: XFree86 Server Extension, version 0.1
    
     (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.o
     (II) Module nvidia: vendor="NVIDIA Corporation"
            compiled for 4.0.2, module version = 1.0.7184
            Module class: XFree86 Video Driver
    
     (II) v4l driver for Video4Linux
     (II) NVIDIA X Driver  1.0-7184  Tue Aug  1 18:41:01 PDT 2006
    You need to make sure that "module version" is the same for all of these. If an incorrect module is being picked up it might look like this:
     (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
     (II) Module glx: vendor="NVIDIA Corporation"
            compiled for 4.0.2, module version = 1.0.7184
            Module class: XFree86 Server Extension
            ABI class: XFree86 Server Extension, version 0.1
    
     (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
     (II) Module nvidia: vendor="NVIDIA Corporation"
            compiled for 4.0.2, module version = 1.0.8776
            Module class: X.Org Video Driver
    
     (EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
     (EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
     (EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
     (EE) NVIDIA(0):     you continue to encounter problems, Please try
     (EE) NVIDIA(0):     reinstalling the NVIDIA driver.
    If this is the case, remove the incorrect file (easiest to copy-and-paste the filename from your log as above):
     rm /usr/lib/xorg/modules/drivers/nvidia_drv.so

Lost Your Console

This may only apply to the nvidia packages in etch.

If you happen to lose your virtual terminals (Ctrl+Alt+F1) [i.e. the console is displaying garbage] after xorg starts, this might be a fix (it was for me):

# apt-get install nvidia-settings
$ nvidia-settings
click OpenGL Settings and check "Sync to VBlanc".

It should work now.

Trouble with Linux 2.6

Watch the kernel version you use.

Any reasonably recent version of Linux 2.4 should work with the NVIDIA drivers. However, Linux 2.6 is the development branch of Linux and has changing kernel interfaces. Each release of the NVIDIA 3D drivers can only warrant compatibility with already released Linux versions. This flaw comes from the fact that NVIDIA's 3D drivers are non-free and therefore can't enter the main Linux kernel tree. It is consequently possible that a version of the NVIDIA 3D drivers working with the Linux 2.6 minor version already in Debian enters unstable and testing, and then that a new minor version of Linux 2.6, incompatible with the version of the NVIDIA 3D drivers in Debian, enters Debian. In this case, problems that result from the incompatibilities should be reported in the [http://bugs.debian.org Bug Tracking System] against the NVIDIA 3D drivers. So, before installing the drivers for the first time, or before upgrading your kernel, check if the versions of both are compatible. If the NVIDIA drivers are more recent than Linux, there should be no problem. In the opposite case, consider checking whether problems were reported, in the Debian BTS are somewhere else. If you install the drivers or upgrade your kernel despite potential incompatibilities and then get undocumented issues, check if the issues exist with a compatible Linux version.

Despite this, you should try using a recent Linux kernel. Many old versions have bugs that are problematic with the NVIDIA 3D drivers. In summary, try using either the Linux 2.6 version in your Debian release, or the latest Linux version compatible with the drivers.

X (or the complete machine when running X) is unstable

  • Check whether you use a framebuffer, such as rivafb, nvidiafb and vesafb. The rivafb driver is known to conflict with NVIDIA's drivers. vesafb is known to work is some cases but also to be problematic in other cases. All of these drivers are compiled as modules in stock kernels, except for vesafb after 2.6.12. To see if you have one of these modules inserted in your kernel, run
     $ lsmod|grep 'rivafb\|vesafb\|nvidiafb'
    If this outputs something, get rid of the module(s) displayed.
     # rmmod rivafb vesafb nvidiafb

    will remove the modules temporarily (for this boot). If something causes one of the modules to load automatically at boot, blacklist the modules. If you are using a custom kernel, do not compile these modules in (Device drivers –> Graphics support –> nVidia Riva support (FB_RIVA), Device drivers –> Graphics support –> VESA VGA graphics support (FB_VESA) and Device drivers –> Graphics support –> nVidia Framebuffer Support (FB_NVIDIA)).

  • Several users have reported that they had hard lockups when switching virtual terminals or shutting down their X servers, until they recompiled their kernels with local APIC disabled. Local APIC support on uniprocessors (X86_UP_APIC) is enabled in stock non-SMP kernels. Note that the local APIC option isn't available if you have an SMP (e.g. hyperthreading) kernel. In that case the local APIC option probably has no effect, but one user reported that he still had success disabling it by manually editing /usr/src/linux/.config to comment out the line with CONFIG_X86_LOCAL_APIC. He also had to repeat the operation every time he reconfigured his kernel. Alternatively, you might have to turn off SMP and then disable local APIC. :(

Hardware acceleration, aka direct rendering, doesn't work

?Anchor(nodri) We've covered how to check that the installation worked in section "Check that it worked". If it doesn't, check that you adjusted your X configuration properly. You can do so by checking that

$ grep Driver /etc/X11/XF86Config-4 /etc/X11/xorg.conf 2>&1|grep nvidia

returns something. If this is the case and X was restarted since the configuration was changed, you may be affected by [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=208198 Debian bug #208198]. You can check if this is the case by running

$ glxinfo | egrep "glx (vendor|version)" 

If you see different vendors or versions for the client and server, this is your problem. In that case you can run

# NVVER=`dpkg -s nvidia-glx|grep Version|cut -d ' ' -f2|cut -d '-' -f1`
# ln -fs /usr/lib/libGL.so.$NVVER /usr/X11R6/lib/libGL.so
# ln -fs /usr/lib/libGL.so.$NVVER /usr/X11R6/lib/libGL.so.1
# ln -fs          libGL.so.$NVVER /usr/lib/libGL.so.1.2

to fix the problem.

If that's not your problem but you get an error when trying to use OpenGL apps like glxinfo that looks like this one:

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

you should make sure that the user running the application is in the video group.

3D Applications Aborting with "Segmentation Fault"

If you recieve the message "Segmentation fault" when starting 3D programs from console, this can mean that you do not have the user-space libraries in place. To install them, see [#head-d06efc24a486cb1523718aa1468ec35dbe8461a7 Installing the nvidia user-space libraries]. Note that removing /etc/init.d/nvidia-glx or commenting out lines from there, as is suggested on several places on the Net, is not a good workaround for this issue.

Various problems with X

Look in your X log file (/var/log/XFree86.0.log for XFree86, /var/log/Xorg.0.log for X.org). The X server writes a lot of information there about what configuration files it's reading, what display modes it's trying, and errors (EE) it encounters along the way. You can very often find hints there to the source of whatever problem you're having.

Some old game doesn't start

?Anchor(oldgame) If some software (probably old games) complains about missing libGL.so, try installing nvidia-glx-dev. If this doesn't help, this application is probably buggy or doesn't support your system. This document probably can't help you with these problems.

"nvidia license taints kernel"

If you get such a warning message on your console or in your syslog, don't worry. Your kernel is fine...or at least as fine as a kernel that can run NVIDIA's 3D driver can be. All this message means is that because your driver isn't open source, you won't get any support from the kernel maintainers if anything goes wrong with your kernel while the module is loaded. See the [http://www.tux.org/lkml/#s1-18 LKML FAQ] for more.

Last resort

You can check [http://www.nvnews.net/vbulletin/forumdisplay.php?f=14 the NVIDIA Linux Forum at nvnews.net] for issues not related to Debian packaging. For Debian-specific issues, you may look at the bug tracking system or ask a question on Debian help resources, such as the debian-user mailing list and #debian on irc.debian.org. If you still have a problem that you can't solve, you can write and [mailto:andrex@alumni.utexas.net?subject=Debian-NVIDIA tell the author] about it. He'll do what he can to help, subject to his knowledge and time constraints.

More information

  • For more information about the drivers, see:
    • /usr/share/doc/nvidia-glx/README.Debian
    • /usr/share/doc/nvidia-glx/README.gz
    • /usr/share/doc/nvidia-kernel-source/README.Debian

    These files have loads of information about options and for troubleshooting NVIDIA's proprietary drivers. Here's an enticement for you to read them: somewhere in one of them you can find an explanation of how to suppress the NVIDIA splash screen every time you start an X server (hint: search for "NoLogo").

  • You can adjust the clock rates of your GPU and video RAM by running nvclock, nvclock_gtk, or nvclock_qt, available respectively in the nvclock, nvclock-gtk, and nvclock-qt packages. Obligatory warning: you can destroy your video hardware with these tools if you're not careful.
  • You can adjust some other, relatively obscure settings of the driver by running nvidia-settings, available in the nvidia-settings package.
  • [http://people.debian.org/~rdonald/index.php The Debian page of Randall Donald], the maintainer of Debian's NVIDIA packages, has news about the packaging work being done.

About this document

This wiki page was created by Filipus Klutiero to publish an update of [http://home.comcast.net/~andrex/Debian-nVidia/index.html Andrew's Debian-nVidia HOWTO]. You are free to modify this page as long as you agree to let copyright of your changes to the author. For problems, comments, or questions about the information in this document, you can [mailto:chealer@gmail.com?subject=Debian-NVIDIA write to the maintainer]. He's no expert, but he'll do his best to make the document useful.

Credits

Thanks to Andrew Schulman for publishing his HOWTO, agreeing to share his rights on it, and making the HOWTO link to this page since it stopped being maintained.

Licensing

This document is Copyright 2005, by Andrew E. Schulman. Permission is hereby granted to freely copy, distribute, and/or modify any of the contents of this document in any way and for any purpose.


CategoryXWindowSystem