Содержание
Эта статья не закончена. Вы можете помочь проекту добавив следующую информацию:
- Вступление
- как наложить патч на ядро
Применение патчей для обеспечения совместимости старого драйвера 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
Скачайте этот файл и наложите его на ядро. Далее, делаете все как написано здесь.