Эта статья не закончена. Вы можете помочь проекту добавив следующую информацию:
  • Вступление
  • как наложить патч на ядро

Применение патчей для обеспечения совместимости старого драйвера nVidia с 3 ядром Linux

Если у вас Ubuntu версии 11.10 и старше, то для того чтобы чтобы драйвер работал, вам нужно скомпилировать ядро с применением специальных патчей.

Патч для драйвера Nvidia-96.43.19:

nvidia.patch
--- a/NVIDIA-Linux-x86-96.43.19-pkg0/usr/src/nv/conftest.sh      2011-07-30 12:24:39.770031044 -0400
+++ b/NVIDIA-Linux-x86-96.43.19-pkg0/usr/src/nv/conftest.sh      2011-07-30 12:25:49.059315428 -0400
@@ -77,7 +77,7 @@
 build_cflags() {
     ARCH=`uname -m | sed -e 's/i.86/i386/'`
 
-    BASE_CFLAGS="-D__KERNEL__ \
+    BASE_CFLAGS="-O2 -D__KERNEL__ \
 -DKBUILD_BASENAME=\"#conftest$$\" -DKBUILD_MODNAME=\"#conftest$$\" \
 -nostdinc -isystem $ISYSTEM"
@@ -123,7 +123,7 @@
     CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS"
 
     if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then
-        CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include"
+        CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include -I$SOURCES/arch/x86/include/generated"
     fi
     if [ -n "$BUILD_PARAMS" ]; then
         CFLAGS="$CFLAGS -D$BUILD_PARAMS"
 
--- a/NVIDIA-Linux-x86-96.43.19-pkg0/usr/src/nv/nv-linux.h       2011-07-30 12:27:09.341819608 -0400
+++ b/NVIDIA-Linux-x86-96.43.19-pkg0/usr/src/nv/nv-linux.h       2011-07-30 12:27:28.854951411 -0400
@@ -30,7 +30,7 @@
 #  define KERNEL_2_4
 #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
 #  error This driver does not support 2.5 kernels!
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 7, 0)
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0)
 #  define KERNEL_2_6
 #else
 #  error This driver does not support development kernels!
@@ -80,7 +80,9 @@
 #if !defined(KERNEL_2_4)
 #include <linux/sched.h>            /* suser(), capable() replacement   */
 #include <linux/moduleparam.h>      /* module_param()                   */
-#include <linux/smp_lock.h>         /* kernel_locked                    */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,38)
+#include <linux/smp_lock.h>	     /* For (un)lock_kernel */
+#endif
 #include <asm/tlbflush.h>           /* flush_tlb(), flush_tlb_all()     */
 #include <asm/kmap_types.h>         /* page table entry lookup          */
 #endif

Скачайте этот файл и наложите его на ядро. Далее, делаете все как написано здесь.

Ссылки