Gentoo Linux nVidiaガイド
1.
はじめに
nVidiaは素晴らしいパフォーマンスと完全な3Dアクセラレーションを提供するLinux向けのドライバを公開しています。
Portageには2種類のドライバが存在し、まず1つめは古いタイプのもので、
nvidia-kernelとnvidia-glxの2つに分かれています。
2つめは新しいタイプのもので、nvidia-driversとnvidia-legacy-driversに分かれています。
初めてインストールするのであれば、新しいものを使用する方が良いでしょう。
nvidia-kernelは、ビデオハードウェアとローレベルな情報伝達を扱うカーネルドライバです。
これは単なるnvidiaと名付けられたカーネルモジュールで、カーネルソースとは別にインストールされ、nvidiaドライバを使用したいときにはいつでもロードされていなければなりません。
カーネルドライバと同様に、X11 GLXレイヤ(nvidia-glx)もインストールする必要があります。
これはXがグラフィックを描画するのに使われ、ハードウェアとの通信にnvidia-kernelが内部的に使用されています。
なお、新しいドライバではnvidia-kernelとnvidia-glx両方の機能を含んでおり、
nVidia自身でドライバを提供している方法と同じように、1つのebuildにまとめられています。
Note:
nvidia-kernelとnvidia-glxの両方は廃止される予定です。また、
その役目がnvidia-driversとnvidia-legacy-driversへと引き継がれ、
Portageツリーから将来削除されることになるでしょう。なお、
nvidia-kernelとnvidia-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"でvesafbかvesafb-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-kernel、nvidia-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
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-drivers、nvidia-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-glxはnvidia-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)を(nano やvimの様な)お気に入りのエディタで開いて、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サポートを有効にする
mplayerやxine-libといったいくつかのツールは、高解像度の動画を鑑賞するときに役立つXvMCNVIDIAのサポートを有効にする、"nvidia"というローカルUSEフラグを使用します。
/etc/make.confファイルのUSE変数に"nvidia"を追加するか、/etc/portage/package.useファイルでmedia-video/mplayerやmedia-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-kernelとnvidia-glxのemergeを試してみたいかもしれません。
これを書いている時点では、どちらも~archになっています。
これらのドライバは適切なノードの作成にhotplugやudevにはもはや頼っていないので、NVmakedevices.shを実行する必要はないでしょう。
その代わり、Xの起動時にXドライバ自身が/dev/nvidia*ファイルを作成します。
ですが、これには最近のカーネル(2.6.14以降)の使用が必要です。
また、nvidia-driversとnvidia-legacy-driversの全てのバージョンに関しても同様です。
|
4.
上級者向け設定
ドキュメント
nVidiaドライバパッケージには包括的なドキュメントも含まれます。
これは/usr/share/docにインストールされ、以下のコマンドで閲覧することが出来ます。
Code Listing 4.1: NVIDIAドキュメントの閲覧 |
$ less /usr/share/doc/nvidia-drivers-*/README.gz
$ less /usr/share/doc/nvidia-legacy-drivers-*/README.gz
$ less /usr/share/doc/nvidia-glx-*/README.txt.gz
|
カーネルモジュールのパラメータ
nvidiaカーネルモジュールは、ドライバの振る舞いを調整するためのいくつかのパラメータを受け付けます。
これらのほとんどはドキュメントに記載されています。
これらパラメータを追加したり、値を変更するには、/etc/modules.d/nvidiaファイルを編集します。
このファイルを編集した後はmodules-updateを忘れずに実行してください。
また、新しい設定を有効にするにはnvidiaモジュールを再読込する必要があると言うことを心に留めておいてください
Code Listing 4.2: nvidiaオプションの調整 |
# nano -w /etc/modules.d/nvidia
# modules-update
# 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
|
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|