The Haus

XFree86 4.0.1, NVIDIA, and Mandrake 7.2

November 8, 2000 -- by A.T. Hun

Last week, J.t.Qbe was kind enough to send me a copy of the Mandrake 7.2 installation disks. I figured this would be a great chance to update my Linux distribution. There's a lot of things to like about Mandrake 7.2. It includes XFree86 4.0.1 and KDE2. It detected and properly set up my PCMCIA wireless ethernet card. It even comes with USB support!

Unfortunately, not everything is so good. Even though it installs XFree86 4.0.1, when it configures X at the end of the installation process, it installs the server and SVGA drivers from XFree86 3.3.6! You end up with a hybrid system that won't work with the NVIDIA drivers.

Thankfully, after a quick check of the Usenet on Deja.com, I found a solution. Most of this document is based on Linux Frog's NVIDIA Tips. I changed a few things to make them more clear (in my mind, anyway).

You will need: Mandrake 7.2 (duh) and the NVIDIA Linux drivers. If there is a kernel RPM specifically for Mandrake 7.2 (there isn't one as of this writing), use that. Otherwise, download the kernel source RPM named NVIDIA_kernel-0.9-5.src.rpm. Also download the GLX RPM named NVIDIA_GLX-0.9-5.i386.rpm.

Step One: Fixing Mandrake's XFree86 4.0.1 Installation

If you are in X, shut it down. All this will need to be done from the command line. You will need to do the following steps as root. First of all, check to make sure Mandrake 7.2 did indeed mess up the installation. Type:

rpm -qa|grep XFree

Somewhere in the list of results you should see the following:

XFree86-SVGA-3.3.6-18mdk
XFree86-server-common-3.3.6-18mdk

If you don't see those, then you don't have this problem and you can stop reading now. Otherwise, let's press on. Type the following commands to uninstall those two XFree86 3.3.6 packages:

rpm -e XFree86-SVGA-3.3.6-18mdk
rpm -e XFree86-server-common-3.3.6-18mdk

Next, pop your Mandrake 7.2 disk into your CD-ROM drive so we can install the XFree86 4.0.1 server. Type:

rpm -ivh /mnt/cdrom/Mandrake/RPMS/XFree86-server-4.0.1-28mdk.i586.rpm

Installing the NVIDIA 0.9-5 Drivers

Take the NVIDIA kernel RPM you created from the source RPM and install it by typing:

rpm -ivh NVIDIA_kernel-0.9-5.src.rpm

This creates a .spec file in /usr/src/RPM/SPECS named NVIDIA_kernel.spec. There may be some numbers at the end of the filename too. Just include them at the end of the next command. Issue the next two commands to make and install the kernel driver:

rpm -ba /usr/src/RPM/SPECS/NVIDIA_kernel.spec
rpm -ivh /usr/src/RPM/RPMS/i686/NVIDIA_kernel-0.9-5.i686.rpm

If the RPM is not in /usr/src/RPM/RPMS/i686 then check the other directories in /usr/src/RPM/RPMS. It will be in one of them. Just change the i686 in the last command to whatever directory you find it in. Then install the GLX module by typing:

rpm -ivh NVIDIA_GLX-0.9-5.i386.rpm

Configuring XFree86 4.0.1

Run the program xf86config and answer all the questions. You will need to know your monitor's refresh ranges and other information about your computer. It's not the most user-friendly utility in the world, but it works!

Fire up your favorite text editor (vi is my personal choice--it shows my masochistic side). Change the line that reads

Driver      "nv"

and replace it with

Driver      "nvidia"

Make sure that in Section "Module" there is a line that says

Load      "glx"

If there isn't, add it. If there is a # in front of it, remove the #.

Check to see if there is a file called XF86Config-4 in /etc/X11. If there is, delete it. Last, but not least, we need to fix the symbolic link so it points to the right version of X. Type the following commands to fix it:

cd /etc/X11
rm X
ln -s /usr/X11R6/bin/XFree86 X

That's It!

Now you should be able to type startx and be in XFree86 4.0.1 with the NVIDIA 0.9-5 drivers! Once again, a special thanks goes out to Linux Frog for doing all the hard work on this one.