試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

NVIDIAドライバのカーネルモジュールがバージョンによってLinux 2.6.27に対してビルドできない問題とその対処

  1. GeForce 6以上は177系ドライバで問題ないが、それより古いGPU向けのドライバでは問題
  2. パッチへのリンク
  3. 関連:Linux 2.6.28系向けのパッチについて

GeForce 6以上は177系ドライバで問題ないが、それより古いGPU向けのドライバでは問題

NVIDIAドライバのバージョン177.80の時点ではLinux 2.6.27でビルドが通るが、古いGPU向けの

のバージョンでは、Linux 2.6.27ではビルドが通らない問題がある。
下は173.14.12で試したときのエラー。

In file included from /var/tmp/portage/x11-drivers/nvidia-drivers-173.14.12/work/NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/nv.c:14:
/var/tmp/portage/x11-drivers/nvidia-drivers-173.14.12/work/NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/nv-linux.h:107:27: error: asm/semaphore.h: No such file or directory
make[3]: *** [/var/tmp/portage/x11-drivers/nvidia-drivers-173.14.12/work/NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv/nv.o] Error 1
make[2]: *** [_module_/var/tmp/portage/x11-drivers/nvidia-drivers-173.14.12/work/NVIDIA-Linux-x86_64-173.14.12-pkg2/usr/src/nv] Error 2
NVIDIA: left KBUILD.
nvidia.ko failed to build!
make[1]: *** [module] Error 1
make: *** [module] Error 2

パッチへのリンク

bugs.gentoo.org/show_bug.cgi?id=242476

  • 96.43.07
  • 173.14.12

の2つのバージョンに対するパッチへのリンクがある。173.14.12で試したところ、ビルドが通ったことを確認。Gentooebuildでは

--- /usr/portage/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.12.ebuild
+++ [ローカルOverlay]/x11-drivers/nvidia-drivers/nvidia-drivers-173.14.12.ebuild
@@ -221,6 +221,9 @@
 
 		# If greater than 2.6.5 use M= instead of SUBDIR=
 		convert_to_m "${NV_SRC}"/Makefile.kbuild
+
+		# for Linux 2.6.27
+		epatch "${FILESDIR}"/NVIDIA_173.14.12_2.6.27.patch
 	fi
 }
 

のようにパッチ適用処理を追加し、パッチをローカルOverlayのx11-drivers/nvidia-drivers/files/へ入れてダイジェスト作成後、インストールをすることで適用できた。

関連:Linux 2.6.28系向けのパッチについて

(2008/12/15)Linux 2.6.28系でもビルドが通らないようだが、Mandriva向けにパッチが存在し、既にパッケージに使用されている。このパッチ(nvidia-current-linux-2.6.28.patch)は
bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-177/+bug/303107
にも転載されているため、他のディストリで問題が起きている場合にも使えそう。

使用したバージョン:

*1:www.nvnews.net/vbulletin/showthread.php?t=120679 に、177系では対応しないことと173.14系では使えるということが書かれている