Gentoo Linux nVidiaガイド
1.
はじめに
Portageツリー内のnVidiaドライバはnVidiaによってリリースされたもので、Linuxカーネル用にビルドされています。
それらにはカードと通信するためのやっかいな処理をこなすバイナリの塊が入っています。
ドライバはふたつの部品から構成されています。
カーネルモジュールとX11ドライバです。
両方ともひとつのパッケージの中に入っています。
nVidiaがドライバをこのようなパッケージにしているため、ドライバをインストールする前にいくつか選択をしなければなりません。
nvidia-driversパッケージはすべてのカードのサポートを備えたnVidiaによる最新ドライバです。
カードの古さに応じて様々なバージョンが利用可能です。
適切なバージョンをインストールできるよう、何というカードが動いているか検出するためにeclassを使用します。
2.
ドライバの互換性
どのバージョンか?
nvidia-driversは利用可能なnVidiaのカードを最大限サポートします。
お持ちのカード(ひとつ、または複数)に応じて、複数のバージョンをインストールすることができます。
比較的新しいGeForce 8、7、6、FX 5シリーズのようなカードには、100.xシリーズより新しいドライバを使うべきです。
GeForce 3やGeForce 4のような古いカードには、96.xのドライバが必要です。
これらのカードを使用するために、/etc/portage/package.maskファイルで>=x11-drivers/nvidia-drivers-97.00をマスクしてください。
カードと互換性のない新しいバージョンがインストールされるのを防ぎます。
古いNV2xベースのカード(TNT、TNT2、GeForce、GeForce 2など)には、71.xよりも古いドライバが必要です。
これらのカードを使用するために、/etc/portage/package.maskで>=x11-drivers/nvidia-drivers-87.00をマスクしてください。
どのドライバがどのカードをサポートしているか確認するため、適切なx86、またはx86-64のリリースページのREADMEを読むことにより、カードとドライバの互換性を確かめることができます。
3.
カードの設定
カーネルの設定
上記の通り、nVidiaカーネルは現在のカーネルと別にインストールし、実行されます。
このドライバはモジュールとしてビルドされるので、カーネルがモジュールの読み込みをサポートしていなければなりません。
もしカーネルの設定にgenkernel allを使用したなら、準備は整っています。
そうでなければ、このサポートが有効になっているかカーネルの設定をもう一度確認してください。
コード表示 3.1: カーネルモジュールの読み込みを有効化 |
Loadable module support --->
[*] Enable loadable module support
|
Memory Type Range Registerも有効にする必要があります。
コード表示 3.2: MTRRを有効化 |
Processor and Features --->
[*] MTRR (Memory Type Range Register) support
|
また、もしAGPのグラフィックカードを持っているなら、オプションとしてagpgartサポートをカーネルに組み込むかモジュールとして有効にすることができます。
なお、agpgartをカーネルに組み込んで使用しなければ、
ドライバがNvAGPと呼ばれる独自実装のagpgartを使用することになります。
特定のシステムでは、これはagpgartをカーネルに組み込んだ場合よりもうまく動作しますが、
動作しないこともあります。
最高のパフォーマンスを得るには、ご自身のシステムでこれを評価する必要があるでしょう。
どうしたらいいのか分からなければ、agpgartをカーネルに組み込んでください。
コード表示 3.3: Enabling agpgart |
Device Drivers --->
Graphics Support --->
-*- /dev/agpgart (AGP Support) --->
|
注意:
amd64ではIOMMUがagpgartの設定を管理します。
|
アーキテクチャ特有の注意
重要:
x86とAMD64プロセッサでは、カーネル内部のドライバはnVidiaが提供するバイナリドライバと競合します。
これらのCPUでカーネルをコンパイルするのなら、以下のようにカーネル内部のドライバのサポートを完全に削除しなければなりません。
|
コード表示 3.4: カーネル内部のドライバを削除 |
Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
< > nVidia Framebuffer Support
< > nVidia Riva support
|
フレームバッファの選択では先進的なフレームバッファであるuvesafbを選びます。
それをカーネルの中、あるいはモジュールとしてコンパイルするかは選ぶことができます。
次の例ではuvesafbをカーネルの中にコンパイルしています。
コード表示 3.5: uvesafbサポートを有効化 |
Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
<*> Userspace VESA VGA graphics support
|
もしくは、VESAを試してみてください。
コード表示 3.6: VESAサポートを有効化 |
Device Drivers --->
Graphics Support --->
<*> Support for frame buffer devices --->
[*] VESA VGA graphics support
|
詳しい情報は/usr/src/linux/Documentation/fb/下の選択したフレームバッファ向けのドキュメントを読んでください。
カーネル設定の継続
nvidia-driversのebuildは/usr/src/linuxのシンボリックリンクに基づき、カーネルのバージョンを自動判別します。
従って、シンボリックリンクが正しいソースを指し、かつカーネルが正しく設定されているかを確認してください。
詳細はInstallation Handbook(日本語訳)のカーネル設定の章を参照してください。
まず、eselectをemergeする必要があります(もしまだ持っていない場合)。
gentoo-sources-2.6.18-r4を使用しているのなら、カーネルの一覧はこのようになっているかもしれません。
コード表示 3.7: /usr/src/linuxシンボリックリンクの確認 |
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.18-gentoo-r4 *
[2] linux-2.6.20-gentoo-r7
[3] linux-2.6.20-gentoo-r8
|
上記出力では、linux-2.6.18-gentoo-r4にアスタリスク(*)が付けられており、それがカーネルにシンボリックリンクされていることを示しているのがわかるでしょう。
シンボリックリンクが正しいソースを指していなければ、上の例の希望するカーネルソースの番号を選択することで、リンクを更新しなければなりません。
コード表示 3.8: /usr/src/linuxシンボリックリンクの作成または更新 |
# ln -snf linux-2.6.11-gentoo-r6 linuxeselect kernel set 1
|
適切なドライバのインストール
では、ドライバをインストールしましょう。
コード表示 3.9: nVidiaドライバのインストール |
# emerge nvidia-drivers
|
注意:
ドライバはgtkのUSEフラグが設定された状態でインストールすることもできます。
この場合、media-video/nvidia-settingsがインストールされることになります。
これはnVidiaカードの様々な機能を確認し設定するための、手頃で便利なグラフィカル設定ツールです。
|
重要:
新しいカーネルをコンパイル(日本語訳)したり、または現在のカーネルを再コンパイルする度に、emerge nvidia-driversを実行し、nVidiaモジュールを再インストールする必要があります。
ebuildでインストールされたモジュール(nvidia-driversのような)の更新作業を簡単にする方法のひとつとして、sys-kernel/module-rebuildのインストールがあります。
いったんそれをインストールすれば、単にmodule-rebuild populateを実行するだけで、再ビルドされるパッケージ一覧を持つデータベースにデータを登録してくれます。
カーネルのコンパイル、または再コンパイルが完了したら、新しいカーネル用のドライバを再ビルドするため、module-rebuild rebuildを実行してください。
|
インストールが完了したら、modprobe nvidiaを実行してカーネルモジュールをメモリに読み込みます。
これがアップグレードの場合には、以前のモジュールを初めに削除してください。
コード表示 3.10: カーネルモジュールの読み込み |
# lsmod | grep nvidia && rmmod nvidia
# modprobe nvidia
|
起動する度にモジュールを手動で読み込む手間を省くために、自動で行って欲しいと思うでしょう。
それならば、/etc/modules.autoload.d/kernel-2.6を編集してnvidiaを追加してください。
その後にupdate-modulesを実行することを忘れないでください。
重要:
もし、agpgartをモジュールとしてコンパイルしたのなら、/etc/modules.autoload.d/kernel-2.6に、それを追加をする必要があります。
|
コード表示 3.11: update-modulesの実行 |
# update-modules
|
Xサーバの設定
適切なドライバがインストールされたなら、デフォルトのnvドライバの代わりにnvidiaドライバを使用するように、Xサーバの設定をする必要があります。
/etc/X11/xorg.confを(nano やvimの様な)お気に入りのエディタで開いて、Deviceセクションに進んでください。
このセクションのDriver行を以下のように変更します。
コード表示 3.12: Xサーバ設定のnvをnvidiaに変更 |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
VideoRam 65536
EndSection
|
そしてModuleセクションに行き、glxモジュールが読み込まれ、driモジュールが読み込まれないようにしてください。
コード表示 3.13: Moduleセクションを更新 |
Section "Module"
# Load "dri"
Load "glx"
EndSection
|
次のScreenセクションでは、DefaultDepthを16か24のどちらかに設定するか、DisplayサブセクションのDepthを16か24に設定します。
そうしなければ、nVidia GLX拡張は起動しないでしょう。
コード表示 3.14: Screenセクションを更新 |
Section "Screen"
DefaultDepth 16
Subsection "Display"
EndSection
|
eselectを実行してXサーバがnVidia GLXを使うようにします。
コード表示 3.15: eselectを実行 |
# eselect opengl set nvidia
|
ユーザをvideoグループに追加
ユーザがnVidiaデバイスファイルにアクセスできるようにvideoグループに追加する必要があります。
コード表示 3.16: ユーザをvideoグループに追加 |
# gpasswd -a youruser video
|
これはudevを使用していなければ、全体としては必要ありません。
しかし、追加しても害を与えることはありませんし、システムに将来の保証を与えます。
カードのテスト
nVidiaカードをテストするには、Xを起動してglxinfoを実行します。
これはmesa-progsパッケージの一部です。
ダイレクトレンダリングが有効であることを伝えてくるはずです。
コード表示 3.17: ダイレクトレンダリングの状態を確認 |
$ glxinfo | grep direct
direct rendering: Yes
|
FPSを評価するために、glxgearsを実行します。
nvidiaサポートを有効にする
mplayerやxine-libといったいくつかのツールは、高解像度の動画を鑑賞するときに役立つXvMCNVIDIAのサポートを有効にする、xvmcというローカルUSEフラグを使用します。
/etc/make.confファイルのUSE変数にxvmcを追加するか、/etc/portage/package.useファイルでmedia-video/mplayerやmedia-libs/xine-libにxvmcをUSEフラグとして追加します。
アプリケーションの中にはnvidiaというUSEフラグを使っているものもあります。
/etc/make.confにnvidiaを追加するとよいでしょう。
そして、USEフラグの変更を反映するために、emerge -uD --newuse worldを実行してアプリケーションを再度ビルドします。
NVidia設定ツールを使う
nVidiaは設定ツールも提供しています。
このツールを使えば、Xサーバを再起動することなくグラフィック設定を確認したり変更したりすることができます。
これはPortageのmedia-video/nvidia-settingsで利用することができます。
先ほど述べたように、/etc/make.confや/etc/portage/package.useの中にgtkUSEフラグを設定した状態でドライバをインストールすれば、自動で入っているでしょう。
4.
トラブルシューティング
4Gb以上のメモリを搭載したマシンで2Dを動作させる
もしnVidia 2Dアクセラレーションに関して問題があるなら、たぶんMTRRにwrite-combining幅を設定できないと言うことでしょう。
確認するには、/proc/mtrrの内容を確認します。
コード表示 4.1: write-combiningが有効か確認 |
# cat /proc/mtrr
|
各行に"write-back"か"write-combining"が含まれているでしょう。
もし"uncachable"と書かれた行があるなら、BIOSの設定を変更する必要があるでしょう。
再起動してBIOSに入り、MTRR設定(もしかすると"CPU Settings"設定項目の中かもしれません)を探してください。
設定を"continuous"から"discrete"へと変更し、再びLinuxを起動させます。
これで"uncachable"が無くなり、2Dアクセラレーションが動作することでしょう。
カーネルモジュールをロードしようとしたら"no such device"というメッセージが表示されました
これはたいてい適応するビデオカードを使用していないときに起こります。
nVidiaのグラフィックカードを使用しているか確認してください。(lspciを使って再確認することができます)
nVidiaのカードを使用していると確信があるのなら、BIOSを確認してAssign IRQ to VGAの命令が設定されているか確認してください。
5.
上級者向け設定
ドキュメント
nVidiaドライバパッケージには包括的なドキュメントも含まれます。
これは/usr/share/docにインストールされ、以下のコマンドで閲覧することが出来ます。
コード表示 5.1: NVIDIAドキュメントの閲覧 |
$ less /usr/share/doc/nvidia-drivers-*/README.gz
|
カーネルモジュールのパラメータ
nvidiaカーネルモジュールは、ドライバの振る舞いを調整するためのいくつかのパラメータを受け付けます。
これらのほとんどはドキュメントに記載されています。
これらパラメータを追加したり、値を変更するには、/etc/modules.d/nvidiaファイルを編集します。
このファイルを編集した後はupdate-modulesを忘れずに実行してください。
また、新しい設定を有効にするにはnvidiaモジュールを再読込する必要があると言うことを心に留めておいてください
コード表示 5.2: nvidiaオプションの調整 |
# nano -w /etc/modules.d/nvidia
# update-modules
# modprobe -r nvidia
# modprobe nvidia
|
高度なXの設定
GLXレイヤには設定可能な多くのオプションがあります。
これらはTV出力、デュアルディスプレイ、モニタ周波数の検知などの設定を制御します。
繰り返しますが、利用可能なオプションの全てはドキュメントで詳細に記されています。
これらのオプションを使いたいのなら、X設定ファイル(たいていは/etc/X11/xorg.conf)の適切なDeviceの章へ記述する必要があります。
例えば、スプラッシュロゴを無効にしたいのならば、この様にします。
コード表示 5.3: X設定での高度なnvidia設定 |
Section "Device"
Identifier "nVidia Inc. GeForce2"
Driver "nvidia"
Option "NoLogo" "true"
VideoRam 65536
EndSection
|
このドキュメントの内容は、他のものが明示されない限りは、
CC-BY-SA-2.5ライセンスです。
Gentoo Name and Logo Usage Guidelines (日本語訳)が適用されます。
|