NVIDIA 安装程序找不到内核源/构建文件(从 kernel.org 编译)

NVIDIA 安装程序找不到内核源/构建文件(从 kernel.org 编译)

我刚刚在我的 Fedora 15 系统上从 kernel.org 编译并安装了新的 3.0-rc2 内核。一切似乎都工作正常,我可以成功启动进入系统。然而,这破坏了我之前安装的 NVIDIA 驱动程序,因此我需要编译一个新的驱动程序。我从 nvidia.com 下载了安装程序,但安装时遇到问题。

为了编译内核,我将内核存档解压缩到我的主目录,然后简单地将我的 Fedora 配置重新用于新内核。一切都驻留在~/linux_build/linux-3.0-rc2.

启动至运行级别 3 后,我的 NVIDIA 安装程序出现错误:

ERROR: If you are using a Linux 2.4 kernel, please make sure
   you either have configured kernel sources matching your
   kernel or the correct set of kernel headers installed
   on your system.

   If you are using a Linux 2.6 kernel, please make sure
   you have configured kernel sources matching your kernel
   installed on your system. If you specified a separate
   output directory using either the "KBUILD_OUTPUT" or
   the "O" KBUILD parameter, make sure to specify this
   directory with the SYSOUT environment variable or with
   the equivalent nvidia-installer command line option.

   Depending on where and how the kernel sources (or the
   kernel headers) were installed, you may need to specify
   their location with the SYSSRC environment variable or
   the equivalent nvidia-installer command line option.

我像这样运行安装程序:

bash NVIDIA-Linux-x86_64-270.41.19.run --kernel-source-path=/home/tja/linux_build/linux-3.0-rc2

通常,这是通过安装来自 的内核头文件来解决的yum,但这里我使用的是没有可用 RPM 的新内核。

如何手动安装 NVIDIA 安装程序所需的头文件/源文件?

答案1

嗯,我没有发疯。 NVIDIA 安装程序需要修补。内核版本 2.7.0 被硬编码为上限。通过一个简单的补丁就可以升级到 3.1.0。

这是补丁文件:nvidia-patch @ fedoraforum.org

--- conftest.sh.orig    2011-05-30 12:24:39.770031044 -0400
+++ conftest.sh 2011-05-30 12:25:49.059315428 -0400
@@ -76,7 +76,7 @@
 }

 build_cflags() {
-    BASE_CFLAGS="-D__KERNEL__ \
+    BASE_CFLAGS="-O2 -D__KERNEL__ \
 -DKBUILD_BASENAME=\"#conftest$$\" -DKBUILD_MODNAME=\"#conftest$$\" \
 -nostdinc -isystem $ISYSTEM"

--- nv-linux.h.orig 2011-05-30 12:27:09.341819608 -0400
+++ nv-linux.h  2011-05-30 12:27:28.854951411 -0400
@@ -32,7 +32,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, 1, 0)
 #  define KERNEL_2_6
 #else
 #  error This driver does not support development kernels!

然后您需要从 nvidia 安装程序中提取文件:

./NVIDIA-Linux-x86_64-270.41.19.run -x

然后,在“内核”目录中有需要修补的文件:

cd NVIDIA-Linux-x86_64-270.41.19/kernel/
patch -p0 kernel-3.0-rc1.patch.txt

完成后,只需将内核源作为参数提供给安装程序:

./nvidia-installer --kernel-source-path /home/tja/linux/linux-3.0-rc2

...而且构建得很好!

现在我可以使用正确的 Nvidia 驱动程序运行 Linux 3。

相关内容