Linux on the NVidia Nforce2 / Geforce 4MX / Shuttle SN41G2
This article discusses some specific issues with getting Linux to work on the Shuttle SN41G2 with Nvidia chipset, but may be applicable to other Nvidia boards.
To use Xfree86 in accelerated mode (ie to make it usable) you need a binary-only kernel driver supplied by Nvidia. This is annoying because it breaks almost every time a new kernel comes out. The kernel developers take a dim view of closed source drivers, and seem to take pleasure in watching them break as often as possible. I don’t blame them, but it’s us poor sods who are stuck with the situation that end up suffering.
The same applies to audio and network support, but it’s not all bad news because there is a reverse-engineered open source driver called forcedeth
which replaces Nvidia’s closed source nvnet
driver and seems to work ten times better. No sign of anyone doing this for the audio yet, alas, and there’s not much chance at all of anything similar happening for the video chipset.
Let’s just say, in future I won’t be buying any hardware which requires closed source drivers.
See also my general instructions for compiling a custom Debian kernel with added modules.
February 26th, 2005 at 8:33 pm
Upgrading to 2.6.9
The upgrade from 2.6.8 to 2.6.9 broke the nvidia driver (again). On trying to insert the module you get “Unknown symbol __VMALLOC_RESERVE”.
Fortunately there is a simple fix… well two, actually. You can either patch the nvidia driver to define __VMALLOC_RESERVE itself, or tell the kernel to export its value like it used to. In this case the kernel patch seems like the right thing to do to me. It’s just a one-liner: to arch/i386/mm/init.c, below the line
unsigned int __VMALLOC_RESERVE = 128
add
EXPORT_SYMBOL(__VMALLOC_RESERVE);
That’s it.
Of course if you use a stock kernel it’s easier to patch the driver… Google for the answer to that one.
Now I’m just about to upgrade to 2.6.10… wonder what will break this time…