NVIDIA

提供: ArchWiki
移動先: 案内検索

この記事は、NVIDIAプロプライエタリなグラフィックカードドライバのインストールと設定をカバーしています。オープンソースのドライバについての情報に関しては、Nouveau を見てください。NVIDIA Optimus の技術が利用できるラップトップを使っている場合は NVIDIA Optimus を見て下さい。

インストール

ヒント: NVIDIA ドライバをインストールするときは NVIDIA のサイトで提供されているパッケージよりも pacman を使った方が基本的に有益です。なぜなら、そうすることで、システムをアップデートした際にドライバもアップデートすることができるからです。
警告: ドライバーのバージョンを混合させると動作しません。最新のブランチと、古いブランチの32ビット libGL パッケージを使用することはできません。

以下は、標準の linux または linux-lts パッケージを使っている人向けの指示です。カスタムカーネルを使っている場合のセットアップは、次のサブセクションまで読み飛ばしてください。

1. あなたの使っているグラフィックカードが何かわからない場合は、次を実行することで確認してください:

$ lspci -k | grep -A 2 -E "(VGA|3D)"

2. NVIDIA の ドライバーダウンロードサイト を見てあなたのカードに適切なドライバーのバージョンを確認して下さい。また、NVIDIA の レガシーなカードリストnouveau wiki のコードネームのページ も使って下さい。

3. あなたのカードに合わせて適切なドライバーをインストールしてください:

4. マシンが64ビット環境で32ビットの OpenGL サポートが必要な場合は、multilib リポジトリから相当する lib32 パッケージもインストールしてください (例: lib32-nvidia-libgl, lib32-nvidia-340xx-libgl, lib32-nvidia-304xx-libgl)。

5. 再起動してください。nvidia パッケージには nouveau モジュールをブラックリスト化するファイルが含まれているため、再起動が必須になります。

ドライバーをインストールしたら、続けて設定へと進んでください。

サポートがないドライバー

GeForce 5 FX シリーズ以前のカードを使っている場合、Nvidia はあなたの使っているカードのドライバーのサポートを既に打ち切っています。それらのドライバーは最新バージョンの Xorg をサポートしません。最新の Xorg を古いカードでもサポートしている、nouveau ドライバーを使うほうが楽だということになります。

しかしながら、Nvidia のドライバーの方が 3D のパフォーマンスや安定性では上だということもあるでしょう。Nvidia のドライバーを使いたい場合は、Arch User Repository からインストールすることできます (古いバージョンの Xorg も一緒に):

  • GeForce 5 FX シリーズのカード [NV30-NV36] の場合は、nvidia-173xx-dkmsAUR パッケージをインストールしてください。最後にサポートされた Xorg のバージョンは 1.15 です。
  • GeForce 2/3/4 MX/Ti シリーズのカード [NV11, NV17-NV28] の場合は、nvidia-96xx-dkmsAUR パッケージをインストールしてください。最後にサポートされた Xorg のバージョンは 1.12 です。
ヒント: レガシーな nvidia-96xx-dkms と nvidia-173xx-dkms ドライバーは非公式の [city] リポジトリ からもインストールできます (ここからインストールする時は依存関係の制限をスキップしないことを強く推奨します)。

カスタムカーネル

カスタムカーネルを使っている場合、Nvidia カーネルモジュールのコンパイルは DKMS で自動化できます。

nvidia-dkms パッケージ (あるいは nvidia-340xx-dkms など特定のブランチのパッケージ) をインストールしてください。DKMS の Pacman フックによって Nvidia やカーネルのアップデートがされた後に Nvidia モジュールが再ビルドされます。

Pure Video HD

VDPAU によるハードウェアビデオアクセラレーションを使うには第2世代の PureVideo HD が載っているビデオカードが必要です。

DRM カーネルモードセッティング

ノート: NVIDIA ドライバーはカーネルに組み込まれている vesafb モジュールのための fbdev ドライバーを提供しません。しかしながら、EFI 環境の場合、カーネルに組み込まれている efifb モジュールが高解像度な nvidia コンソールに対応しています [1]

nvidia 364.16 から DRM Kernel Mode Setting のサポートが追加されました。この機能を有効にするには、nvidia-drm.modeset=1 カーネルパラメータを追加してください。そして initramfs#MODULES に nvidia, nvidia_modeset, nvidia_uvm, nvidia_drm を追加してください。

警告: ドライバーがアップデートされるたびに毎回 mkinitcpio を実行する必要があります。

Pacman フック

nvidia をアップグレードした後に initramfs をアップデートすることを忘れないように、以下のような pacman フックを利用することができます:

/etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia

[Action]
Depends=mkinitcpio
When=PostTransaction
Exec=/usr/bin/mkinitcpio -p linux

XvMC によるビデオデコードのハードウェアアクセラレーション

GeForce4, GeForce 5 FX, GeForce 6, GeForce 7 シリーズのカードでは XvMC による MPEG-1 と MPEG-2 ビデオのデコードのアクセラレーションがサポートされています。使用するには、以下の内容で、新しいファイル /etc/X11/XvMCConfig を作成してください:

libXvMCNVIDIA_dynamic.so.1

設定方法はサポートしているソフトウェアを参照。

NVIDIA と nouveau ドライバーを切り替える

ドライバーを切り替える必要があるときは、以下のスクリプトを使うことができます。root で実行してください (確認を求められたら全て yes と答えて下さい):

#!/bin/bash
BRANCH= # Enter a branch if needed, i.e. -340xx or -304xx
NVIDIA=nvidia${BRANCH} # If no branch entered above this would be "nvidia"
NOUVEAU=xf86-video-nouveau

# Replace -R with -Rs to if you want to remove the unneeded dependencies
if [ $(pacman -Qqs ^mesa-libgl$) ]; then
    pacman -S $NVIDIA ${NVIDIA}-libgl # Add lib32-${NVIDIA}-libgl and ${NVIDIA}-lts if needed
    # pacman -R $NOUVEAU
elif [ $(pacman -Qqs ^${NVIDIA}$) ]; then
    pacman -S --needed $NOUVEAU mesa-libgl # Add lib32-mesa-libgl if needed
    pacman -R $NVIDIA # Add ${NVIDIA}-lts if needed
fi

64ビット環境を使っていて32ビットのライブラリが必要な場合は lib32 パッケージをアンコメントしてください (例: 32ビットのゲームや Steam)。

設定

おそらく、ドライバをインストールした後に Xorg サーバーの設定ファイルを作成する必要はありません。テストを実行することで Xorg サーバーが設定ファイルなしで問題なく機能するかどうか調べられます。しかし、様々な設定を調節するために設定ファイル (/etc/X11/xorg.conf よりも /etc/X11/xorg.conf.d/20-nvidia.conf が好ましい) を作成することが要求されるかもしれません。この設定は NVIDIA の Xorg 設定ツールで生成することが可能で、あるいは、手動でも作成できます。手動で作成する場合、(Xorg サーバーに基本的なオプションだけを与えるという) 最小設定だけを行うこともできますし、逆に、Xorg によって自動検知されたり事前に設定されたオプションを無視する設定を多数含めてもかまいません。

最小設定

20-nvidia.conf (もしくは廃止された xorg.conf) の基本的な設定ブロックは以下のようになります:

/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
        Identifier "Nvidia Card"
        Driver "nvidia"
        VendorName "NVIDIA Corporation"
        Option "NoLogo" "true"
        #Option "UseEDID" "false"
        #Option "ConnectedMonitor" "DFP"
        # ...
EndSection
ヒント: nouveau からアップグレードする場合は /etc/mkinitcpio.conf から nouveau を削除してください。オープン・プロプライエタリのドライバを頻繁に切り替えるのならば、NVIDIA と nouveau ドライバーの切り替えを見て下さい。

自動設定

NVIDIA のパッケージには Xorg サーバーの設定ファイル (xorg.conf) を作成するための自動設定ツールが含まれています。次のコマンドで実行できます:

# nvidia-xconfig

このコマンドは現在のハードウェアを自動検知して /etc/X11/xorg.conf の設定を作成(既に存在する場合は編集)します。

DRI のインスタンスがある場合は、コメントアウトされているか確認してください:

#    Load        "dri"

デフォルトの depth, horizontal sync, vertical refresh, resolutions が問題ないか /etc/X11/xorg.conf を再確認してください。

警告: Xorg-server 1.8 ではまだ正しく動作しない可能性があります。

NVIDIA Settings

nvidia-settings は CLI または GUI を使って様々なオプションを設定することができるツールです。何もオプションをつけずに nvidia-settings を実行すると GUI が起動します。CLI のオプションについては nvidia-settings(1) を見てください。

通常ユーザーで GUI を起動した場合、設定を ~/.nvidia-settings-rc に保存できます。保存した設定は $ nvidia-settings --load-config-only でロードできます (xinitrc などに記述することで自動的にロードできます)。もしくは、root で nvidia-settings を起動して、設定を /etc/X11/xorg.conf.d/ に保存してください。

ヒント: X サーバーが起動時にクラッシュする場合、おそらく GUI によって生成された設定に問題が存在します。生成されたファイルを削除して再起動してみてください。

マルチモニター

マルチモニターに関する一般的な情報はマルチディスプレイを見て下さい。

NVIDIA Settings を使う

nvidia-settings ツールを使ってマルチモニターを設定できます。

CLI で設定する場合、まずは以下を実行して CurrentMetaMode を確認してください:

$ nvidia-settings -q CurrentMetaMode
Attribute 'CurrentMetaMode' (hostnmae:0.0): id=50, switchable=no, source=nv-control :: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}

:: 以降の全て (上記の場合: DPY-1: 2880x1620 @2880x1620 +0+0 {ViewPortIn=2880x1620, ViewPortOut=2880x1620+0+0}) を使って nvidia-settings --assign "CurrentMetaMode=your_meta_mode" でディスプレイを再設定できます。

ヒント: 使用するモニターや解像度の設定ごとにシェルのエイリアスを作成すると便利です。

ConnectedMonitor

ドライバーがセカンドモニタを正しく認識しない場合は、ConnectedMonitor を使って認識するように強制できます。

/etc/X11/xorg.conf

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Panasonic"
    ModelName      "Panasonic MICRON 2100Ex"
    HorizSync       30.0 - 121.0 # this monitor has incorrect EDID, hence Option "UseEDIDFreqs" "false"
    VertRefresh     50.0 - 160.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Gateway"
    ModelName      "GatewayVX1120"
    HorizSync       30.0 - 121.0
    VertRefresh     50.0 - 160.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    Option         "NoLogo"
    Option         "UseEDIDFreqs" "false"
    Option         "ConnectedMonitor" "CRT,CRT"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:3:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    Option         "NoLogo"
    Option         "UseEDIDFreqs" "false"
    Option         "ConnectedMonitor" "CRT,CRT"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 6200 LE"
    BusID          "PCI:3:0:0"
    Screen          1
EndSection

TwinView を使わずに1つのカードで2つのモニターを X で使うために Screen でデバイスを複製しています。nvidia-settings は追加した ConnectedMonitor オプションを全て消してしまうので注意してください。

TwinView

画面を2つ表示するのではなく1つの大きな画面を表示したい場合、TwinView 引数を 1 に設定してください。コンポジットを使いたい場合、このオプションを使用する必要があります。TwinView は全てのモニターが同一のカードに接続されている場合にのみ機能します。

Option "TwinView" "1"

設定例 [2]:

/etc/X11/xorg.conf.d/10-monitor.conf
Section "ServerLayout"
    Identifier     "TwinLayout"
    Screen         0 "metaScreen" 0 0
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    Option         "Enable" "true"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    Option         "Enable" "true"
EndSection

Section "Device"
    Identifier     "Card0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"

    #refer to the link below for more information on each of the following options.
    Option         "HorizSync"          "DFP-0: 28-33; DFP-1 28-33"
    Option         "VertRefresh"        "DFP-0: 43-73; DFP-1 43-73"
    Option         "MetaModes"          "1920x1080, 1920x1080"
    Option         "ConnectedMonitor"   "DFP-0, DFP-1"
    Option         "MetaModeOrientation" "DFP-1 LeftOf DFP-0"
EndSection

Section "Screen"
    Identifier     "metaScreen"
    Device         "Card0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "True"
    SubSection "Display"
        Modes          "1920x1080"
    EndSubSection
EndSection

SLI に対応しているカードが複数枚存在する場合、別々のカードに接続された複数のモニターを使うことができます (例: 2枚のカードが SLI で、各々のカードにモニターが1台ずつ接続)。SLI モザイクモードと "MetaModes" オプションで有効になります。以下は上記と同じように設定する例で、GNOME が完璧に動作します:

/etc/X11/xorg.conf.d/10-monitor.conf
Section "Device"
        Identifier      "Card A"
        Driver          "nvidia"
        BusID           "PCI:1:00:0"
EndSection

Section "Device"
        Identifier      "Card B"
        Driver          "nvidia"
        BusID           "PCI:2:00:0"
EndSection

Section "Monitor"
        Identifier      "Right Monitor"
EndSection

Section "Monitor"
        Identifier      "Left Monitor"
EndSection

Section "Screen"
        Identifier      "Right Screen"
        Device          "Card A"
        Monitor         "Right Monitor"
        DefaultDepth    24
        Option          "SLI" "Mosaic"
        Option          "Stereo" "0"
        Option          "BaseMosaic" "True"
        Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
        SubSection      "Display"
                        Depth           24
        EndSubSection
EndSection

Section "Screen"
        Identifier      "Left Screen"
        Device          "Card B"
        Monitor         "Left Monitor"
        DefaultDepth    24
        Option          "SLI" "Mosaic"
        Option          "Stereo" "0"
        Option          "BaseMosaic" "True"
        Option          "MetaModes" "GPU-0.DFP-0: 1920x1200+4480+0, GPU-1.DFP-0:1920x1200+0+0"
        SubSection      "Display"
                        Depth           24
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default"
        Screen 0        "Right Screen" 0 0
        Option          "Xinerama" "0"
EndSection
xrandr による手動の CLI 設定

上手くいかない場合、ウィンドウマネージャの自動起動から xorg-xrandr を利用する方法があります。

xrandr の例:

xrandr --output DVI-I-0 --auto --primary --left-of DVI-I-1

もしくは:

xrandr --output DVI-I-1 --pos 1440x0 --mode 1440x900 --rate 75.0

コマンドの意味:

  • --output はオプションを設定するモニターを指定します。
  • DVI-I-1 はセカンドモニターの名前です。
  • --pos はセカンドモニターの相対位置です。
  • --mode はセカンドモニターの解像度です。
  • --rate はリフレッシュレート (Hz) です。
TwinView を使って垂直同期

TwinView と垂直同期 (nvidia-settings の "Sync to VBlank" オプション) を使っている場合、モニターの大きさが異なっていると片方の画面だけが同期されます。nvidia-settings にはどちらの画面を同期させるか設定するオプション ("Sync to this display device" オプション) が存在しますが、必ずしも機能するとはいいがたいです。起動時に以下の環境変数を追加することで解決します (例: /etc/profile に追加):

export __GL_SYNC_TO_VBLANK=1
export __GL_SYNC_DISPLAY_DEVICE=DFP-0
export __VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0

DFP-0 は適切な画面に置き換えてください (DFP-0 は DVI 端子で CRT-0 は VGA 端子です)。ディスプレイの識別名は nvidia-settings の "X Server XVideoSettings" セクションで確認できます。

Twinview を使ってゲームを遊ぶ

TwinView を使ってフルスクリーンのゲームを遊ぶ場合、2つの画面が1つの大きな画面としてゲームから認識されることがあります。技術的にこれは正しいのですが (仮想的な X スクリーンの横幅は両方の画面を合わせたサイズになります)、ゲームを遊ぶときは両方の画面を使わないようにしたいときもあるでしょう。

SDL のこの挙動を修正するには、次を試して下さい:

export SDL_VIDEO_FULLSCREEN_HEAD=1

OpenGL の場合、xorg.confDevice セクションに適切な Metamodes を追加して X を再起動してください:

Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;"

別の X サーバーでゲームを起動する方法もあります。上記の方法と一緒に使うことも可能です。

モザイクモード

複数のグラフィックカードで3台以上のモニターを使用してコンポジットを使うにはモザイクモードが必要になります。ウィンドウマネージャはモニターを区別して認識したりしなかったりします。

ベースモザイク

ベースモザイクモードは Geforce 8000 シリーズ以上の GPU で動作します。nvidia-setting の GUI から有効にすることはできません。nvidia-xconfig コマンドラインプログラムを使用するか xorg.conf を手動で編集する必要があります。Metamodes を指定してください。以下は4台の DFP を 2x2 の構成で使用する例です。各々の解像度は 1920x1024 で、2枚のカードにそれぞれ2台の DFP が接続されている場合:

$ nvidia-xconfig --base-mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"
ノート: ドキュメントには 2x2 のモニター構成が記述されていますが、ドライバーのバージョン304現在、Nvidia はベースモザイクモードで使用できるモニターの数を3台までに絞っています。Quadro カードでは4台以上のモニターを扱えるはずですが、市場に流通しているカードでは、3台までに制限されています。これについては「Windows ドライバーと同じ」という説明があります。しかしながら、2014年9月現在、Windows にはこのようなモニターの数の制限はありません。これはバグではありません。仕様です。
SLI モザイク

SLI 構成を使っていて、使用する GPU が Quadro FX 5800 や Quadro Fermi 以降の場合、SLI モザイクモードが利用できます。nvidia-settings の GUI の中から有効化するか、コマンドラインで設定してください:

$ nvidia-xconfig --sli=Mosaic --metamodes="GPU-0.DFP-0: 1920x1024+0+0, GPU-0.DFP-1: 1920x1024+1920+0, GPU-1.DFP-0: 1920x1024+0+1024, GPU-1.DFP-1: 1920x1024+1920+1024"

Driver Persistence

バージョン 319 から、NVIDIA は Driver Persistence の動作を変更しており、ブート時に起動するデーモンが存在します。詳しくは NVIDIA のドキュメントの Driver Persistence セクションを見て下さい。

ブート時に persistence デーモンを起動するには、nvidia-persistenced.service有効化してください。使用方法は 上流のドキュメント を参照。

Tips and tricks

NVIDIA/Tips and tricks を参照。

トラブルシューティング

NVIDIA/トラブルシューティングを参照。

参照