Gentoo Logo

Gentoo Linux nVidiaガイド

Content:

1.  はじめに

nVidiaは素晴らしいパフォーマンスと完全な3Dアクセラレーションを提供するLinux向けのドライバを公開しています。 Portageには2種類のドライバが存在し、まず1つめは古いタイプのもので、 nvidia-kernelnvidia-glxの2つに分かれています。 2つめは新しいタイプのもので、nvidia-driversnvidia-legacy-driversに分かれています。 初めてインストールするのであれば、新しいものを使用する方が良いでしょう。

nvidia-kernelは、ビデオハードウェアとローレベルな情報伝達を扱うカーネルドライバです。 これは単なるnvidiaと名付けられたカーネルモジュールで、カーネルソースとは別にインストールされ、nvidiaドライバを使用したいときにはいつでもロードされていなければなりません。

カーネルドライバと同様に、X11 GLXレイヤ(nvidia-glx)もインストールする必要があります。 これはXがグラフィックを描画するのに使われ、ハードウェアとの通信にnvidia-kernelが内部的に使用されています。

なお、新しいドライバではnvidia-kernelnvidia-glx両方の機能を含んでおり、 nVidia自身でドライバを提供している方法と同じように、1つのebuildにまとめられています。

Note: nvidia-kernelnvidia-glxの両方は廃止される予定です。また、 その役目がnvidia-driversnvidia-legacy-driversへと引き継がれ、 Portageツリーから将来削除されることになるでしょう。なお、 nvidia-kernelnvidia-glxを使用している場合には、 新しいパッケージへ移行すべきです。

2.  カードの設定

カーネルの設定

上記の通り、nVidiaカーネルは現在のカーネルと別にインストールし、実行されます。 このドライバはモジュールとしてビルドされるので、カーネルがモジュールの読み込みをサポートしていなければなりません。 もしカーネルの設定にgenkernelを使用したなら、準備は整っています。 そうでなければ、このサポートが有効になっているかカーネルの設定をもう一度確認してください。

Code Listing 2.1: カーネルモジュールの読み込みを有効化

Loadable module support --->
  [*] Enable loadable module support

Memory Type Range Registerも有効にする必要があります。

Code Listing 2.2: MTRRを有効化

Processor and Features --->
  [*] MTRR (Memory Type Range Register) support

また、オプションとしてagpgartサポートをカーネルに組み込むかモジュールとして有効にすることができます。 なお、agpgartをカーネルに組み込んで使用しなければ、 ドライバがNvAGPと呼ばれる独自実装のagpgartを使用することになります。 特定のシステムでは、これはagpgartをカーネルに組み込んだ場合よりもうまく動作しますが、 動作しないこともあります。 最高のパフォーマンスを得るには、ご自身のシステムでこれを評価する必要があるでしょう。 どうしたらいいのか分からなければ、agpgartをカーネルに組み込んでください。

Code Listing 2.3: Enabling agpgart

Device Drivers --->
Character devices --->
<*> /dev/agpgart (AGP Support)

アーキテクチャ特有の注意

Important: x86とAMD64プロセッサでは、カーネル内部のドライバはnVidiaが提供するバイナリドライバと競合します。 これらのCPUでカーネルをコンパイルするのなら、以下のようにカーネル内部のドライバのサポートを完全に削除しなければなりません。

Code Listing 2.4: カーネル内部のドライバを削除

Device Drivers --->
Graphics Support --->
< >   nVidia Framebuffer Support
< >   nVidia Riva support

適したフレームバッファの選択はVESAです。

Code Listing 2.5: VESAサポートを有効化

Device Drivers --->
Graphics Support --->
<*>   VESA VGA graphics support

その後、"VESA driver type"でvesafbvesafb-tngのどちらかを選択します。なお、 AMD64プロセッサを使用している場合には、vesafb-tngではなくvesafbを選択してください。

Code Listing 2.6: フレームバッファの種類を選択

(X) vesafb
( ) vesafb-tng

詳しい情報は、vesafbを使っているのなら/usr/src/linux/Documentation/fb/vesafb.txtを読んでください。 もしくは、/usr/src/linux/Documentation/fb/でフレームバッファのドキュメントを探してください。

カーネル設定の継続

nvidia-kernelnvidia-drivers、そしてnvidia-legacy-driversのebuildは、 /usr/src/linuxのシンボリックリンクに基づき、カーネルのバージョンを自動判別します。 従って、シンボリックリンクが正しいソースを指し、かつカーネルが正しく設定されているかを確認してください。 カーネルの設定についての詳細はInstallation Handbook(日本語訳)のカーネル設定の章を参照してください。

gentoo-sources-2.6.11-r6を使用しているのなら、/usr/srcディレクトリはこの様になっているはずです。

Code Listing 2.7: /usr/src/linuxシンボリックリンクの確認

# cd /usr/src
# ls -l
(linuxが正しいディレクトリをさしているか確認)
lrwxrwxrwx   1 root root   22 Apr 23 18:33 linux -> linux-2.6.11-gentoo-r6
drwxr-xr-x   4 root root  120 Apr  8 18:56 linux-2.4.26-gentoo-r4
drwxr-xr-x  18 root root  664 Dec 31 16:09 linux-2.6.10
drwxr-xr-x  18 root root  632 Mar  3 12:27 linux-2.6.11
drwxr-xr-x  19 root root 4096 Mar 16 22:00 linux-2.6.11-gentoo-r6

上記出力では、linuxシンボリックリンクがlinux-2.6.11-gentoo-r6カーネルを指していることが分かるでしょう。

シンボリックリンクが正しいソースを指していなければ、以下のようにしてリンクを更新しなければなりません。

Code Listing 2.8: /usr/src/linuxシンボリックリンクの作成または更新

# cd /usr/src
# ln -snf linux-2.6.11-gentoo-r6 linux

自由選択: レガシーカードサポートを確認

Note: 残念ながら、いくつかのレガシービデオカードは新しいバージョンのnvidia-driversnvidia-glx、そしてnvidia-kernelではサポートされていません。 nVidiaはサポートするカードの一覧を提供しています。 ドライバをインストールする前に一覧を確認してください。

以下はサポートされていないレガシービデオカードの一覧です。

Code Listing 2.9: サポートされていないカード

TNT2
TNT2 Pro
TNT2 Ultra
TNT2 Model 64 (M64)
TNT2 Model 64 (M64) Pro
Vanta
Vanta LT
GeForce 256
GeForce DDR
GeForce2 GTS
GeForce2 Pro
GeForce2 Ti
GeForce2 Ultra
GeForce2 MX Integrated graphics
Quadro
Quadro2 Pro
Quadro2 EX

カードがレガシーリストに載っていれば、 3Dサポートを得るにはnvidia-legacy-driversパッケージをインストールする必要があります。

適切ななドライバのインストール

では、ドライバをインストールしましょう。新しいドライバは1つにまとめられていますので、 1つのパッケージをインストールするだけで済みます。古いドライバは分割されていますので、 インストールには2つパッケージが必要になります。但し、 nvidia-glxnvidia-kernelに依存しているため、nvidia-glxをインストールするだけで十分です。

Code Listing 2.10: nVidiaドライバのインストール

(カードが上記レガシーリストに載っていなければ)
# emerge nvidia-drivers
(カードがレガシーリストに載っていれば)
# emerge nvidia-legacy-drivers

Code Listing 2.11: nVidiaドライバのインストール(廃止予定の方法)

# emerge nvidia-glx

Important: 新しいカーネルをコンパイル日本語訳)したり、または現在のカーネルを再コンパイルする度に、emerge nvidia-kernelを実行し、nVidiaモジュールを再インストールする必要があります。 nvidia-glxはカーネルの変更に影響されず、Xの再コンパイルや更新時でさえも再構築する必要はありません。 なお、新しいドライバを使用している場合には、emerge nvidia-driversあるいはemerge nvidia-legacy-driversを実行して、 nVidiaモジュールを再インストールする必要があるでしょう。

インストールが完了したら、modprobe nvidiaを実行してカーネルモジュールをメモリに読み込みます。 これがアップグレードの場合には、以前のモジュールを初めに削除してください。

Code Listing 2.12: カーネルモジュールの読み込み

# lsmod | grep nvidia && rmmod nvidia
# modprobe nvidia

起動する度にモジュールを手動で読み込む手間を省くために、自動で行って欲しいと思うでしょう。 それならば、/etc/modules.autoload.d/kernel-2.6(もしくはkernel-2.4)を編集してnvidiaを追加してください。 その後にmodules-updateを実行することを忘れないでください。

Important: もし、agpgartをモジュールとしてコンパイルした場合は、/etc/modules.autoload.d/kernel-2.6(または、kernel-2.4など使用するカーネルバージョンに依存します)に、それを追加をする必要があります。

Code Listing 2.13: modules-updateの実行

# modules-update

Xサーバの設定

適切なドライバがインストールされたなら、デフォルトのnvドライバの代わりにnvidiaドライバを使用するように、Xサーバの設定をする必要があります。

/etc/X11/xorg.conf(まだ古い設定ファイルを使い続けているのなら/etc/X11/XF86Config)を(nanovimの様な)お気に入りのエディタで開いて、Deviceセクションに進んでください。 このセクションのDriver行を以下のように変更します。

Code Listing 2.14: Xサーバ設定のnvをnvidiaに変更

Section "Device"
  Identifier "nVidia Inc. GeForce2"
  Driver     "nvidia"
  VideoRam   65536
EndSection

そしてModuleセクションに行き、glxモジュールが読み込まれ、driモジュールが読み込まれないようにしてください。

Code Listing 2.15: Moduleセクションを更新

Section "Module"
  (...)
  # Load  "dri"
  Load  "glx"
  (...)
EndSection

次のScreenセクションでは、DefaultDepthを16か24のどちらかに設定するか、DisplayサブセクションのDepthを16か24に設定します。 そうしなければ、nvidia-glxの拡張は起動しないでしょう。

Code Listing 2.16: Screenセクションを更新

Section "Screen"
  (...)
  DefaultDepth 16
  Subsection "Display"
  (...)
EndSection

eselectを実行してXサーバがnVidia GLXを使うようにします。

Code Listing 2.17: eselectを実行

# eselect opengl set nvidia

ユーザをvideoグループに追加

ユーザがnvidiaデバイスファイルにアクセスできるようにvideoグループに追加する必要があります。

Code Listing 2.18: ユーザをvideoグループに追加

# gpasswd -a youruser video

これはudevを使用していなければ全く必要ありませんし、損害も与えません。そして、システムに未来の保証を付けます :)

カードのテスト

nVidiaカードをテストするには、Xを起動してglxinfo | grep directコマンドを実行します。 それはダイレクトレンダリングが有効であると伝えるでしょう。

Code Listing 2.19: ダイレクトレンダリングの状態を確認

$ glxinfo | grep direct
direct rendering: Yes

FPSを評価するために、glxgearsを実行します。

nvidiaサポートを有効にする

mplayerxine-libといったいくつかのツールは、高解像度の動画を鑑賞するときに役立つXvMCNVIDIAのサポートを有効にする、"nvidia"というローカルUSEフラグを使用します。 /etc/make.confファイルのUSE変数に"nvidia"を追加するか、/etc/portage/package.useファイルでmedia-video/mplayermedia-libs/xine-libに"nvidia"をUSEフラグとして追加します。

その後、USEフラグの変更を反映するために、emerge -uD --newuse worldを実行してアプリケーションを再度ビルドします。

NVidia設定ツールを使う

nVidiaがバージョン1.0.6106をリリースしてから、設定ツールも配布されるようになりました。 このツールを使えば、Xサーバを再起動することなくグラフィカル設定の変更を行うことができます。 これはPortageのmedia-video/nvidia-settingsで利用することができます。

3.  トラブルシューティング

4Gb以上のメモリを搭載したマシンで2Dを動作させる

もしnVidia 2Dアクセラレーションに関して問題があるなら、たぶんMTRRにwrite-combining幅を設定できないと言うことでしょう。 確認するには、/proc/mtrrの内容を確認します。

Code Listing 3.1: write-combiningが有効か確認

# cat /proc/mtrr

各行に"write-back"か"write-combining"が含まれているでしょう。 もし"uncachable"と書かれた行があるなら、BIOSの設定を変更する必要があるでしょう。

再起動してBIOSに入り、MTRR設定(もしかすると"CPU Settings"設定項目の中かもしれません)を探してください。 設定を"continuous"から"discrete"へと変更し、再びLinuxを起動させます。 これで"uncachable"が無くなり、2Dアクセラレーションが動作することでしょう。

サポートされていない4Kスタックサイズに関する警告を受けました

1.0.6106以前のnvidia-kernelパッケージは8Kスタックサイズを使用するカーネルのみサポートしています。 最近のカーネル(2.6.6以上)は4Kスタックサイズをサポートしています。 この様なnvidia-kernelパッケージを使用しているなら、カーネル設定で4Kスタックサイズを選択しないでください。 このオプションはKernel Hackingに有ります。

カーネルモジュールをロードしようとしたら"no such device"というメッセージが表示されました

これはたいてい適応するビデオカードを使用していないときに起こります。 nVidiaのグラフィックカードを使用しているか確認してください。(lspciを使って再確認することができます)

nVidiaのカードを使用していると確信があるのなら、BIOSを確認してAssign IRQ to VGAの命令が設定されているか確認してください。

"no screens found"と表示され、ログには"Failed to initialize the NVIDIA kernel module!"と書かれていました

おそらく/dev/nvidia*デバイスファイルがありません。 NVmakedevices.shを使用して作成してください。

Code Listing 3.2: nvidiaデバイスノードの作成

# /sbin/NVmakedevices.sh

再起動する度に/dev/nvidia*デバイスが消失するのであれば、もしかするとudevが適切なデバイスノードを自動的に作成していないのが原因かもしれません。 NVmakedevices.shを再実行することでこのバグを修正できたなら、/etc/conf.d/rcを以下のように編集することでこれを修正することが出来ます。

Code Listing 3.3: /etc/conf.d/rcの編集

RC_DEVICE_TARBALL="yes"

これは、再起動時でも/dev/nvidia*ノードを保存します。

Note: そのほかに、8xxxシリーズの最新のnvidia-kernelnvidia-glxのemergeを試してみたいかもしれません。 これを書いている時点では、どちらも~archになっています。 これらのドライバは適切なノードの作成にhotplugやudevにはもはや頼っていないので、NVmakedevices.shを実行する必要はないでしょう。 その代わり、Xの起動時にXドライバ自身が/dev/nvidia*ファイルを作成します。 ですが、これには最近のカーネル(2.6.14以降)の使用が必要です。 また、nvidia-driversnvidia-legacy-driversの全てのバージョンに関しても同様です。

4.  上級者向け設定

ドキュメント

nVidiaドライバパッケージには包括的なドキュメントも含まれます。 これは/usr/share/docにインストールされ、以下のコマンドで閲覧することが出来ます。

Code Listing 4.1: NVIDIAドキュメントの閲覧

(nvidia-driversに関して)
$ less /usr/share/doc/nvidia-drivers-*/README.gz
(nvidia-legacy-driversに関して)
$ less /usr/share/doc/nvidia-legacy-drivers-*/README.gz
(nvidia-glxに関して)
$ less /usr/share/doc/nvidia-glx-*/README.txt.gz

カーネルモジュールのパラメータ

nvidiaカーネルモジュールは、ドライバの振る舞いを調整するためのいくつかのパラメータを受け付けます。 これらのほとんどはドキュメントに記載されています。 これらパラメータを追加したり、値を変更するには、/etc/modules.d/nvidiaファイルを編集します。 このファイルを編集した後はmodules-updateを忘れずに実行してください。 また、新しい設定を有効にするにはnvidiaモジュールを再読込する必要があると言うことを心に留めておいてください

Code Listing 4.2: nvidiaオプションの調整

(/etc/modules.d/nvidiaをお気に入りにのエディタで開きます)
# nano -w /etc/modules.d/nvidia
(モジュール情報の更新)
# modules-update
(nvidiaモジュールの更新)
# modprobe -r nvidia
(そして再読込)
# modprobe nvidia

高度なXの設定

GLXレイヤには設定可能な多くのオプションがあります。 これらはTV出力、デュアルディスプレイ、モニタ周波数の検知などの設定を制御します。 繰り返しますが、利用可能なオプションの全てはドキュメントで詳細に記されています。

これらのオプションを使いたいのなら、X設定ファイル(たいていは/etc/X11/xorg.conf)の適切なDeviceの章へ記述する必要があります。 例えば、スプラッシュロゴを無効にしたいのならば、この様にします。

Code Listing 4.3: X設定での高度なnvidia設定

Section "Device"
  Identifier "nVidia Inc. GeForce2"
  Driver     "nvidia"
  Option     "NoLogo" "true"
  VideoRam   65536
EndSection


Print

Updated September 2, 2006

This translation is not maintained anymore

Summary: 多くのGentooユーザは、nVidiaのチップセットが組み込まれたシステムを使用しています。 nVidiaはカードのパフォーマンスを向上させる特定のLinuxドライバを提供しています。 このガイドではどのようにしてこれらのドライバをインストールし、設定するかを説明します。

Sven Vermeulen
Author

M Curtis Napier
Editor

Joshua Saddler
Editor

Chris Gianelloni
Editor

小林弘樹
翻訳

Taku Murakami
翻訳

Donate to support our development efforts.

Support OSL

Support OSL

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

Global Netoptex Inc.

Global Netoptex Inc.

Bytemark

Bytemark

Linux World Expo

Linux World Expo

Copyright 2001-2008 Gentoo Foundation, Inc. Questions, Comments? Contact us.