GeForce2 MXでNVIDIAプロプライエタリドライバを使用する

Last-modified: 2007-06-15 (金) 01:52:46

NVIDIAのGeForceやATiのRADEONには、Non-FreeのLinux用のプロプライエタリ(独占)ドライバが提供されています。
基本的には、GeForceの場合はnvidia-glxを、RADEONの場合はfglrx-driverをインストールすることで使用できますが、私がKZubuntuに載せていたGeForce2 MXの場合は、単純にインストールしただけではXが起動しませんでした。

そのときの変更内容を記載します。

NOTE:エラー内容を良く調べてから、以下の手順をトライしてください。
Xorgのエラーは/var/log/Xorg.0.logに、ドライバ関連はdmesgで見れます。

Xorgのエラーだけ見る
cat /var/log/Xorg.0.log | grep EE
dmesgでNVIDIA関連のログを見る
dmesg | grep NVIDIA

問題の原因に関する考察

勘のいい人なら、この項目を読んだだけで解決できる可能性があるので、初めにこの項目を書いておきます。
後述するように、GeForce用のドライバは3種類あります。
GeForce2 MXはそのうちの1.0-96xx(nvidia-glx)ドライバで動作します。

しかし、単純にnvidia-glxをインストールすると、GeForce2 MXを1.0-71xx(nvidia-glx-legacy)であると勘違いしてしまうようです。
そのため、KernelとModuleの整合性が取れなくなり、Xが起動しない、という問題が発生するようです。

さっさと解決したい人

  1. uname -rでkernelのバージョンを調べる。
  2. 適切なlinux-restricted-modulesをインストール
  3. nvidia-glxをインストール
  4. sudo nvidia-xconfig
  5. /lib/linux-restricted-modules/<kernel version>/のnvidiaディレクトリをnvidia_legacyにcp -rp
  6. 再起動(grubメニューでどのカーネルがデフォルト起動になっているか確かめること)

どのチップに問題が発生する可能性があるか

NVIDIAにあるLinux用ドライバのREADMEにざっと目を通しておきます。
その中のAppendix A. Supported NVIDIA Graphics Chipsによると、GeForce用のドライバが3種類用意されていることが分かります。

  1. 1.0-97xx(nvidia-glx-new):最近のGeForceチップ(GeForce FX以降)
  2. 1.0-96xx(nvidia-glx):古いGeForce(GeForce2 MX、3、4)
  3. 1.0-71xx(nvidia-glx-legacy):それ以前のもの(RIVA TNT、GeForce256、GeForce2)

問題の原因はGeForce2 MXの元モデルである、GeForce256が1.0-71xxで動作する、ということにあるのではないでしょうか。
おそらく、この問題が出るのはGeForce2 MXおよび、その改良版であるGeForce4 MXあたりではないかと思います(未実証)。

参照:Wikipedia - GeForce/GeForce2 MXWikipedia - GeForce/GeForce4 MX

正しいNVIDIAドライバのインストール

NVIDIAドライバのインストールを行うとき、注意する点があります。
それは、いきなりnvidia-glxをインストールしてはいけない点です。

これで動作することもあると思いますが、UbuntuのForumによると、正しい手順は以下のようです。

  1. マシンで使用されているカーネルにあったlinux-restricted-modulesをインストールする。
  2. NVIDIAドライバをインストールする。

1.の手順を踏まない場合、aptは適当と「考えられる」linux-restricted-modulesを勝手にインストールします (^^;
私の場合は、Kernelは2.6.20-16-genericにも関わらず、Moduleは2.6.20-16.386がインストールされていました。

すべてsudoで。
$apt-get update
$apt-get linux-restricted-modules-generic
(使用しているカーネルに合わせる。kernelが2.6.20-16.386であれば、linux-restricted-modules-386)
$nvidia-glx
$nvidia-xconfig

NVIDIAドライバインストール後の対応

つぎに、kernelが動作可能なModuleをロードできるように、ファイルをいじってあげます。
linux-restricted-moduleは、/lib/linux-restricted-modules/<kernel version>いかに格納されていますので、ここをカレントディレクトリにします。

私の環境の場合 :
cd /lib/linux-restricted-modules/2.6.20-16-generic/

ここをlsしてみると以下の3つのディレクトリが含まれていることが分かります。

  • nvidia_new : 1.0-97xxドライバ
  • nvidia : 1.0-96xxドライバ <- これを使いたい
  • nvidia_legacy : 1.0-71xxドライバ <- けどこれがロードされる

問題の原因は、GeForce2 MXは1.0-96xxドライバで動作するにも関わらず、1.0-71xxドライバを読みに行ってしまうことです。なので、ディレクトリを強制的に上書きします(ぇー)。

sudoで
$ mv nvidia_legacy nvidia_legacy.orig <- バックアップを取っておく
$ cp -rp nvidia nvidia_legacy

これでnvidia_legacyディレクトリに、正しくnvidiaディレクトリがコピーされたはずです。
試しに、ls -lでファイルサイズを確認してみてください。

再起動します。OSのロード終了後、NVIDIAのロゴが出て(設定によっては出ません)、Xが起動すればOKです。

その他の問題点

NVIDIAプロプライエタリドライバをインストールした場合、kaffeineやtotemでの動画再生に問題が生じました。
その場合の解決方法は、音声・動画を再生する/NVIDIAプロプライエタリドライバの問題を参照してください。

参考文献