How I upgraded a NVIDIA driver
Recently (July 2003) NVIDIA released an upgrade to their FreeBSD
video driver. In going from their 1.0-3203 to 1.0-4365 kernel
module driver I had no amount of problems and headaches. I had
hoped this would have been a simple install and at most reboot
but as fate would have it was not to be so easy.
As of this writing, 14 July 2003, the 4365 driver has been updated
in the ports tree (/usr/ports/x11/nvidia-driver) so you might be
able to simply build it without modifications. My case was not so
simple.
I downloaded the source before the port was available. After
installing the new kernel module X would panic the kernel and
I was forced to reboot. No amount of trickery improved this
situation. That began my research and I soon discovered I was
not alone.
After a good deal of reading I decided a Nuke And Pave approach
was probably my best hope but I really did not want to reinstall
my workstation. Instead a tactical nuke worked out for me.
I got all my ducks in a row and decided to do some spring cleaning.
I cvsup'd my source and ports trees, did a buildworld, build kernel,
install kernel, and install world.
Next I removed X completely in prep for a upgrade. I had wanted
themeable cursors, total eyecandy, so 4.3.0 was where its at.
Once that upgrade was complete I decided to try out the nvidia
driver. Panic city.
More reading, more research, days passed.
Finally based on others finding I decided to do my homework and
retrace my steps. I had tried disabling the AGP kernel module
load several times. When I didnt load it I would get driver errors
with the kernel module for the nvidia driver. Hrm... did I compile
it to use the freebsd agp module? or did the driver compile its
own agp module which needs loading?
I can only half answer this. I have a PCI card, not AGP. I disabled
the agp driver, recompiled the nvidia driver from ports after
removing the nvidia stuff completely and wow, the driver loads and
X starts!
Apparently something changed in the driver to not need the AGP
driver from FBSD to be loaded. This was required in the previous
version apparently. So a summary of steps is necessary but this
might not work for you.
- commented out in /boot/loader.conf agp_load="YES".
- unloaded agp and nvidia kernel modules
$ kldunload nvidia && kldunload agp
- pkg_delete any previous driver cruft
- rm /dev/nvidia*
- cd /usr/ports/x11/nvidia-driver
- make deinstall
- make clean
- vi Makefile
- change WITH_FREEBSD_AGP=YES to WITH_FREEBSD_AGP=NO
- write out changes
- make && make install
- kldload nvidia
- try it out! (startx)
This process worked for me but that does not mean it
will for you. If the previous version works try playing with
the AGP kernel module, especially if you do not have a AGP card.
I'm still not sure why this works but it did for me.
Copyright © 2003,2004 - Steven St.Laurent - steven@403forbidden.net