「NVIDIA」の版間の差分
細 (→モニター検出をオーバーライド: 「、」を追加) |
(同期) |
||
| (2人の利用者による、間の58版が非表示) | |||
| 1行目: | 1行目: | ||
| − | [[Category:グラフィック]] |
+ | [[Category:グラフィックス]] |
[[Category:X サーバー]] |
[[Category:X サーバー]] |
||
| − | [[cs:NVIDIA]] |
||
[[de:Nvidia]] |
[[de:Nvidia]] |
||
[[en:NVIDIA]] |
[[en:NVIDIA]] |
||
[[es:NVIDIA]] |
[[es:NVIDIA]] |
||
| + | [[pt:NVIDIA]] |
||
| − | [[fa:اِنویدیا]] |
||
| − | [[fr:Nvidia]] |
||
| − | [[it:NVIDIA]] |
||
| − | [[nl:NVIDIA]] |
||
[[ru:NVIDIA]] |
[[ru:NVIDIA]] |
||
[[zh-hans:NVIDIA]] |
[[zh-hans:NVIDIA]] |
||
| 15行目: | 11行目: | ||
{{Related|NVIDIA/トラブルシューティング}} |
{{Related|NVIDIA/トラブルシューティング}} |
||
{{Related|Nouveau}} |
{{Related|Nouveau}} |
||
| − | {{Related|Bumblebee}} |
||
{{Related|NVIDIA Optimus}} |
{{Related|NVIDIA Optimus}} |
||
| + | {{Related|PRIME}} |
||
| + | {{Related|Bumblebee}} |
||
| + | {{Related|nvidia-xrun}} |
||
{{Related|Xorg}} |
{{Related|Xorg}} |
||
{{Related|Vulkan}} |
{{Related|Vulkan}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
| − | この記事は |
+ | この記事は公式の [https://www.nvidia.com NVIDIA] グラフィックカードドライバをカバーしています。コミュニティによるオープンソースのドライバに関しては、[[Nouveau]] を見てください。ハイブリッドグラフックスを搭載しているノートパソコンを使っている場合は、[[NVIDIA Optimus]] も見て下さい。 |
== インストール == |
== インストール == |
||
| − | {{ |
+ | {{Warning|NVIDIA のウェブサイトで提供されているパッケージを通して NVIDIA ドライバをインストールすることは避けてください。[[pacman]] 経由でインストールすれば、システムをアップデートした際にドライバもアップデートすることができます。}} |
| − | {{Warning|ドライバーのバージョンを混合させると動作しません。最新のブランチと、古いブランチの32ビット libGL パッケージを使用することはできません。}} |
||
| + | {{Note|[[ハイブリッドグラフィックス]]のあるシステム上でデュアルブートする場合は、Windows またはサードパーティのアプリで ([https://www.asus.com/support/faq/1043747/#a14 ASUS Eco mode] のような) ''Eco mode'' を有効化すると NVIDIA のディスクリート GPU が完全に無効化され、検出されなくなります。}} |
||
| − | 以下は、標準の {{Pkg|linux}} または {{Pkg|linux-lts}} パッケージを使っている人向けの指示です。カスタムカーネルを使っている場合のセットアップは、[[#カスタムカーネル|次のサブセクション]]まで読み飛ばしてください。 |
||
| + | まず、[https://nouveau.freedesktop.org/CodeNames.html nouveau wiki のコードネームに関するページ]で、以下のコマンドで入手した GPU カードのモデル名/公式名に対応するファミリ名を探してください: |
||
| − | 1. あなたの使っているグラフィックカードが何かわからない場合は、次を実行することで確認してください: |
||
| − | :{{bc|<nowiki>$ lspci -k | grep -A 2 -E "(VGA|3D)"</nowiki>}} |
||
| + | $ lspci -k -d ::03xx |
||
| − | 2. NVIDIA の [https://www.nvidia.com/Download/index.aspx ドライバーダウンロードサイト] を見てあなたのカードに適切なドライバーのバージョンを確認して下さい。また、NVIDIA の [https://www.nvidia.com/object/IO_32667.html レガシーなカードリスト] や [https://nouveau.freedesktop.org/wiki/CodeNames/ Nouveau wiki のコードネームのページ] も使って下さい。 |
||
| − | + | 次に、使用しているカードに適したドライバをインストールしてください: |
|
| − | :* GeForce 600 シリーズとそれよりも新しいカード [NVEx 以降] の場合は、{{Pkg|nvidia}} または {{Pkg|nvidia-lts}} パッケージをインストールしてください。 |
||
| − | ::* 一番最新の GPU モデルを使う場合、安定版のドライバーでは新しく導入された機能をサポートしていないために、{{AUR|nvidia-beta}} をインストールする必要があるかもしれません。 |
||
| − | ::* Nvidia の [http://www.phoronix.com/scan.php?page=news_item&px=OTkxOA long lived branch] からビルドされる {{AUR|nvidia-llb-dkms}} パッケージも存在します。 |
||
| − | :* 2010年から2011年の GeForce 400/500 シリーズのカード [NVCx と NVDx] の場合、{{AUR|nvidia-390xx}} または {{Pkg|nvidia-390xx-lts}}{{Broken package link|パッケージが存在しません}} パッケージを[[インストール]]してください。 |
||
| − | :* 2006年から2010年の GeForce 8/9, ION と 100-300 シリーズのカード [NV5x, NV8x, NV9x, NVAx] の場合は、{{AUR|nvidia-340xx}} または {{AUR|nvidia-340xx-lts}} パッケージをインストールしてください。 |
||
| − | :* さらに古いカード (2006年以前) の場合は、[[#サポートがないドライバー|サポートがないドライバー]]を見て下さい。 |
||
| − | 4. マシンが64ビット環境で32ビットの OpenGL サポートが必要な場合は、[[multilib]] リポジトリから相当する ''lib32'' パッケージもインストールしてください (例: {{Pkg|lib32-nvidia-utils}}, {{AUR|lib32-nvidia-390xx-utils}}, {{AUR|lib32-nvidia-340xx-utils}})。 |
||
| + | {| class="wikitable" |
||
| − | 5. 再起動してください。{{Pkg|nvidia}} パッケージには ''nouveau'' モジュールをブラックリスト化するファイルが含まれているため、再起動が必須になります。 |
||
| + | |- |
||
| + | ! GPU ファミリ |
||
| + | ! ドライバ |
||
| + | ! 状態 |
||
| + | |- |
||
| + | | [https://nouveau.freedesktop.org/CodeNames.html#NV160 Turing (NV160/TUXXX)] 及びそれ以降 |
||
| + | | {{Pkg|linux}} には {{Pkg|nvidia-open}} <br/> {{Pkg|linux-lts}} には {{Pkg|nvidia-open-lts}} <br/> {{Pkg|nvidia-open-dkms}} は任意のカーネルで使えます |
||
| + | | [https://developer.nvidia.com/blog/nvidia-transitions-fully-towards-open-source-gpu-kernel-modules/ 上流で推奨されています]。<br/> 現行。サポートあり。<sup>1</sup> |
||
| + | |- |
||
| + | | [https://nouveau.freedesktop.org/CodeNames.html#NV110 Maxwell (NV110/GMXXX)] から <br/>[https://nouveau.freedesktop.org/CodeNames.html#NV190 Ada Lovelace (NV190/ADXXX)] |
||
| + | | {{Pkg|linux}} には {{Pkg|nvidia}} <br/> {{Pkg|linux-lts}} には {{Pkg|nvidia-lts}} <br/> {{Pkg|nvidia-dkms}} は任意のカーネルで使えます |
||
| + | | 現行。サポートあり。<sup>1</sup> |
||
| + | |- |
||
| + | | [https://nouveau.freedesktop.org/CodeNames.html#NVE0 Kepler (NVE0/GKXXX)] |
||
| + | | {{AUR|nvidia-470xx-dkms}} |
||
| + | | rowspan="4" | レガシー。サポートなし。<sup>2,3</sup> |
||
| + | |- |
||
| + | | [https://nouveau.freedesktop.org/CodeNames.html#NVC0 Fermi (NVC0/GF1XX)] |
||
| + | | {{AUR|nvidia-390xx-dkms}} |
||
| + | |- |
||
| + | | [https://nouveau.freedesktop.org/CodeNames.html#NV50 Tesla (NV50/G80-90-GT2XX)] |
||
| + | | {{AUR|nvidia-340xx-dkms}} |
||
| + | |- |
||
| + | | [https://nouveau.freedesktop.org/CodeNames.html#NV40 Curie (NV40/G70)] 及びそれ以前 |
||
| + | | パッケージはもはや存在しません。 |
||
| + | |} |
||
| + | # これらのパッケージが動作しない場合 (たいていはハードウェアが新しいことが原因です)、{{AUR|nvidia-open-beta}} が、新しいハードウェアをサポートしている新しいドライバのバージョンを提供しているかもしれません。 |
||
| − | ドライバーをインストールしたら、続けて[[#設定|設定]]へと進んでください。 |
||
| + | # [https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/12th-generation-intel-core-processors-datasheet-volume-1-of-2/007/indirect-branch-tracking/ Indirect Branch Tracking] との互換性が無いため、[https://web.archive.org/web/20250209200337/https://www.intel.com/content/www/us/en/newsroom/opinion/intel-cet-answers-call-protect-common-malware-threats.html 第11世代及びそれ以降]の Intel CPU を搭載しているシステムで Linux 5.18 (及びそれ以降) においてこれらのドライバは動作しない場合があります。Indirect Branch Tracking は、[[ブートローダー]]から {{ic|1=ibt=off}} [[カーネルパラメータ]]を設定することにより、無効化することができます。ただし、このセキュリティ機能は[https://lwn.net/Articles/889475/ エクスプロイト手法の一種を緩和する]役割があるので注意してください。 |
||
| + | # NVIDIA はもはやこれらのカードをアクティブにサポートしておらず、これらのドライバは[https://nvidia.custhelp.com/app/answers/detail/a_id/3142/ 現在の Xorg バージョンを公式にはサポートしていない場合があります]。[[nouveau]] ドライバを使うほうが簡単かもしれません。しかし、NVIDIA のレガシーなドライバは依然として利用可能であり、3D パフォーマンスまたは安定性に関して優れているかもしれません。 |
||
| + | :{{Note| |
||
| − | === サポートがないドライバー === |
||
| + | :* {{Pkg|dkms}} をインストールする場合は、[[Dynamic Kernel Module Support#インストール]] を読んでください。 |
||
| + | :* [[DKMS]] 版は特定のカーネルと結びついていません。カーネルのヘッダーファイルをインストールすると、そのカーネル用の NVIDIA カーネルモジュールをコンパイルし直すためです。 |
||
| + | }} |
||
| + | 32ビットアプリケーションのサポートに関しては、対応する ''lib32'' パッケージも [[multilib]] リポジトリからインストールしてください (例: {{Pkg|lib32-nvidia-utils}})。 |
||
| − | (2006年にリリースされた) GeForce 7 シリーズ以前のカードを使っている場合、Nvidia はあなたの使っているカードのドライバーのサポートを既に打ち切っています。それらのドライバーは[http://nvidia.custhelp.com/app/answers/detail/a_id/3142/ 最新バージョンの Xorg をサポートしません]。最新の Xorg を古いカードでもサポートしている、[[nouveau]] ドライバーを使うほうが楽だということになります。 |
||
| + | {{Pkg|nvidia-utils}} パッケージには、再起動後に {{ic|nouveau}} モジュールをブラックリスト化するファイルが含まれています。任意で、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|HOOKS}} 配列から {{ic|kms}} を削除し、その後 [[Initramfs を再生成する|initramfs を再生成]]してもよいです。こうすることで、initramfs に {{ic|nouveau}} モジュールが含まれないようにして、カーネルがこのモジュールを初期ブート中に読み込めないようにします。 |
||
| − | しかしながら、Nvidia のドライバーの方が 3D のパフォーマンスや安定性では上だということもあるでしょう。Nvidia のドライバーを使いたい場合は、[[Arch User Repository]] からインストールすることできます (古いバージョンの Xorg も一緒に): |
||
| + | {{Note|[[#Wayland 設定|Wayland]] を使用している場合は、[[#DRM カーネルモード設定]] に書かれてあることをするまで再起動するべきではありません。さもないと、再起動後に黒画面になってしまうかもしれません。}} |
||
| − | * GeForce 6/7 シリーズのカード [NV4x と NV6x] の場合、{{AUR|nvidia-304xx-dkms}}{{Broken package link|{{aur-mirror|nvidia-304xx-dkms}}}} パッケージをインストールしてください。最後にサポートしている Xorg のバージョンは 1.19 です。 |
||
| + | |||
| − | * GeForce 5 FX シリーズのカード [NV30-NV36] の場合は、{{AUR|nvidia-173xx-dkms}}{{Broken package link|パッケージが存在しません}} パッケージをインストールしてください。最後にサポートされた Xorg のバージョンは 1.15 です。 |
||
| + | ドライバーをインストールしたら、[[#Xorg 設定]] または [[#Wayland 設定]] へと進んでください。 |
||
| − | * GeForce 2/3/4 MX/Ti シリーズのカード [NV11, NV17-NV28] の場合は、{{AUR|nvidia-96xx-dkms}}{{Broken package link|パッケージが存在しません}} パッケージをインストールしてください。最後にサポートされた Xorg のバージョンは 1.12 です。 |
||
=== カスタムカーネル === |
=== カスタムカーネル === |
||
| + | 使用中のカーネルで {{ic|1=CONFIG_DRM_SIMPLEDRM=y}} となっていることを確認してください。そして、{{ic|CONFIG_DEBUG_INFO_BTF}} を使用している場合、[[PKGBUILD]] で以下が必要です (カーネル 5.16 以降): |
||
| − | カスタムカーネルを使っている場合、Nvidia カーネルモジュールのコンパイルは [[DKMS]] で自動化できます。 |
||
| + | install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids |
||
| − | {{Pkg|nvidia-dkms}} パッケージ (あるいは {{AUR|nvidia-390xx-dkms}} や {{AUR|nvidia-340xx-dkms}} など特定のブランチのパッケージ) をインストールしてください。DKMS の [[Pacman#フック|Pacman フック]]によって Nvidia やカーネルのアップデートがされた後に Nvidia モジュールが再ビルドされます。 |
||
| + | {{ic|CONFIG_NOVA_CORE}} を有効化してコンパイルされたカーネルでは、新しい NVIDIA GPU ドライバである [https://docs.kernel.org/gpu/nova/index.html Nova] がロードされないようにする必要があるかもしれません。{{Pkg|nvidia-utils}} はデフォルトでこのドライバをブラックリストに追加します。[[カーネルモジュール#モジュールオプションを設定する|systemd-analyze を実行する]]ことで、ロードされていないことを確認できます。別のバージョンのドライバをインストールしている場合は、{{ic|nova_core}} と {{ic|nova_drm}} を手動で[[ブラックリスト|ブラックリストに登録]]する必要があるかもしれません。 |
||
| − | === DRM カーネルモードセッティング === |
||
| + | === DRM カーネルモード設定 === |
||
| − | {{Pkg|nvidia}} 364.16 から DRM [[Kernel Mode Setting]] のサポートが追加されました。この機能を有効にするには、{{ic|1=nvidia-drm.modeset=1}} [[カーネルパラメータ]]を追加してください。 |
||
| + | NVIDIA は [[カーネルモード設定#KMS の遅延開始|KMS の自動遅延読み込み]]をサポートしていないため、Wayland コンポジタを正しく動作させるには DRM ([[Wikipedia:Direct Rendering Manager|Direct Rendering Manager]]) [[カーネルモード設定]]を有効化する必要があります。 |
||
| − | {{Warning|[[KMS]] を有効にすると [[GDM]] と [[GNOME]] でデフォルトで [[Wayland]] が使われるようになり、パフォーマンスが著しく劣化します: {{bug|53284}}。Xorg を使うように GDM を設定するか ([[GDM#Xorg バックエンドを使う]]を参照)、''GNOME on Xorg'' セッションを使うことで問題を回避できます。}} |
||
| + | {{Pkg|nvidia-utils}} 560.35.03-5 から DRM はデフォルトで有効化されています。[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/commit/1b02daa2ccca6a69fa4355fb5a369c2115ec3e22] それより古いドライバにおいては、{{ic|nvidia_drm}} モジュールに対して {{ic|1=modeset=1}} [[カーネルモジュールパラメータ]]を設定してください。 |
||
| − | {{Note|1=NVIDIA ドライバーはカーネルに組み込まれている {{ic|vesafb}} モジュールのための {{ic|fbdev}} ドライバーを提供しません。しかしながら、EFI 環境の場合、カーネルに組み込まれている {{ic|efifb}} モジュールが高解像度な nvidia コンソールに対応しています [https://forums.fedoraforum.org/showthread.php?t=306271]。GRUB で高解像度のコンソールを使うという方法もあります。[[NVIDIA/ヒントとテクニック#ターミナルの解像度を修正する]]や [https://www.reddit.com/r/archlinux/comments/4gwukx/nvidia_drivers_and_high_resolution_tty_possible/] を見てください。}} |
||
| + | DRM が本当に有効化されているか調べるには、以下のコマンドを実行してください: |
||
| − | ==== 早期ロード ==== |
||
| + | # cat /sys/module/nvidia_drm/parameters/modeset |
||
| − | 基本的な機能については先のカーネルパラメータを追加するだけで十分でしょう。可能な限り早い時にロードさせたい場合や、スタートアップ時に問題({{ic|nvidia}} カーネルモジュールが[[ディスプレイマネージャ]]のあとにロードされてしまうなど)が発生する場合には、{{ic|nvidia}}、{{ic|nvidia_modeset}}、{{ic|nvidia_uvm}} そして {{ic|nvidia_drm}} を initramfs に追加することができます。 |
||
| + | 正しく設定されていれば、このコマンドは {{ic|N}} ではなく {{ic|Y}} と出力するはずです。 |
||
| − | ===== mkinitcpio ===== |
||
| + | {{Note|[[カーネル#公式サポートカーネル|Arch で公式にサポートされているカーネル]]は {{ic|simpledrm}} を有効化します。しかし、NVIDIA ドライバは、{{ic|1=nvidia_drm.fbdev}} が無効化されている/利用できない場合 (バージョン 545 より前)、{{ic|efifb}} または {{ic|vesafb}} を必要とします。}} |
||
| − | [[mkinitcpio]] initramfs を使う場合、[[mkinitcpio#MODULES]] に従ってモジュールを追加してください。 |
||
| + | ==== 早期ロード ==== |
||
| − | モジュールを initramfs に追加した場合、{{Pkg|nvidia}} ドライバーがアップデートされるたびに [[mkinitcpio]] を実行することを忘れないようにしてください。この手順を自動化する方法については [[#Pacman フック]]をご覧ください。 |
||
| + | 基本的な機能については先のカーネルパラメータを追加するだけで十分でしょう。可能な限り早い時にロードさせたい場合や、スタートアップ時に問題 ({{ic|nvidia}} カーネルモジュールが[[ディスプレイマネージャ]]のあとにロードされてしまうなど) が発生する場合には、{{ic|nvidia}}、{{ic|nvidia_modeset}}、{{ic|nvidia_uvm}} そして {{ic|nvidia_drm}} を initramfs に追加することができます。initramfs ジェネレータを設定する方法については [[カーネルモジュール#モジュールの早期ロード]] を見てください。[[mkinitcpio]] を使用している場合、{{Pkg|nvidia}} ドライバの更新時に毎回 [[initramfs を再生成]]する必要がある場合があります。これを自動化する方法については [[#Pacman フック]] を見てください。 |
||
| − | ===== Booster ===== |
||
| − | |||
| − | [[Booster]] を使う場合、[[Booster#モジュールの早期ロード]]をご覧ください。 |
||
===== Pacman フック ===== |
===== Pacman フック ===== |
||
| + | {{Note|カスタムの pacman フックが必要になるのは、ビルド済みのカーネルモジュールが同梱されているパッケージに対してのみです。{{ic|*-dkms}} パッケージは、更新時に ''mkinitcpio'' が自動的に実行されるので、このようなカスタムの pacman フックは必要ありません。}} |
||
| − | nvidia をアップグレードした後に initramfs をアップデートすることを忘れないように、以下のような pacman フックを利用することができます: |
||
| + | |||
| + | NVIDIA ドライバをアップグレードした後に [[initramfs]] をアップデートすることを忘れないように、以下のような [[pacman フック]]を利用することができます: |
||
{{hc|/etc/pacman.d/hooks/nvidia.hook|2= |
{{hc|/etc/pacman.d/hooks/nvidia.hook|2= |
||
| 96行目: | 116行目: | ||
Operation=Remove |
Operation=Remove |
||
Type=Package |
Type=Package |
||
| + | # 構成に存在しない Target は省略できます。例えば、nvidia-open のみを使用する場合は、nvidia-lts の Target を省略できます。 |
||
Target=nvidia |
Target=nvidia |
||
| + | Target=nvidia-open |
||
| + | Target=nvidia-lts |
||
| + | # 他のカーネルを使う場合は以下を適宜変更してください |
||
Target=linux |
Target=linux |
||
| − | # 異なるカーネルを使用する場合、上の「linux」の部分と Exec の行を変更してください |
||
[Action] |
[Action] |
||
| − | Description= |
+ | Description=Updating NVIDIA module in initcpio |
Depends=mkinitcpio |
Depends=mkinitcpio |
||
When=PostTransaction |
When=PostTransaction |
||
NeedsTargets |
NeedsTargets |
||
| − | Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P' |
+ | Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' |
}} |
}} |
||
| − | |||
| − | 上記のフックの {{ic|Target}} のパッケージはあなたがインストールしたパッケージに置き換えてください (例: {{ic|nvidia}}, {{ic|nvidia-dkms}}, {{ic|nvidia-lts}}, {{ic|nvidia-ck-something}})。 |
||
{{Note|上記の {{ic|Exec}} の行が複雑なのは {{ic|nvidia}} と {{ic|linux}} の両方がアップデートされた場合に ''mkinitcpio'' が何度も実行されるのを防ぐためです。このことが気にならないのであれば、{{ic|1=Target=linux}} と {{ic|NeedsTargets}} の行を削除して、{{ic|Exec}} の行は {{ic|1=Exec=/usr/bin/mkinitcpio -P}} のように単純化させることができます。}} |
{{Note|上記の {{ic|Exec}} の行が複雑なのは {{ic|nvidia}} と {{ic|linux}} の両方がアップデートされた場合に ''mkinitcpio'' が何度も実行されるのを防ぐためです。このことが気にならないのであれば、{{ic|1=Target=linux}} と {{ic|NeedsTargets}} の行を削除して、{{ic|Exec}} の行は {{ic|1=Exec=/usr/bin/mkinitcpio -P}} のように単純化させることができます。}} |
||
| 114行目: | 135行目: | ||
=== ビデオデコードのハードウェアアクセラレーション === |
=== ビデオデコードのハードウェアアクセラレーション === |
||
| − | VDPAU によるビデオデコードのアクセラレーションは GeForce 8 シリーズ |
+ | VDPAU によるビデオデコードのアクセラレーションは GeForce 8 シリーズ及びそれ以降のカードでサポートされています。NVDEC によるビデオデコードのアクセラレーションは Fermi (~400 シリーズ) 及びそれ以降のカードでサポートされています。詳しくは [[ハードウェアビデオアクセラレーション]] をご覧ください。 |
=== NVENC によるビデオエンコードのハードウェアアクセラレーション === |
=== NVENC によるビデオエンコードのハードウェアアクセラレーション === |
||
| 120行目: | 141行目: | ||
NVENC は {{ic|nvidia_uvm}} モジュールと、関連するデバイスノードが {{ic|/dev}} 下に作成されることを要求します。 |
NVENC は {{ic|nvidia_uvm}} モジュールと、関連するデバイスノードが {{ic|/dev}} 下に作成されることを要求します。 |
||
| − | 最新のドライバーパッケージは、自動的にデバイスノードを作成する [[ |
+ | 最新のドライバーパッケージは、自動的にデバイスノードを作成する [[udev ルール]]を提供するので、追加の操作は必要ありません。 |
| − | + | 古いドライバ (例えば、{{AUR|nvidia-340xx-dkms}}) を使用している場合、デバイスノードを作成する必要があります。{{ic|nvidia-modprobe}} ユーティリティを実行するとデバイスノードが自動的に作成されます。{{ic|/etc/udev/rules.d/70-nvidia.rules}} を作成して {{ic|nvidia-modprobe}} を自動的に実行させることができます: |
|
{{hc|/etc/udev/rules.d/70-nvidia.rules|2= |
{{hc|/etc/udev/rules.d/70-nvidia.rules|2= |
||
| − | ACTION=="add", DEVPATH=="/bus/pci/drivers/nvidia", RUN+="/usr/bin/nvidia-modprobe - |
+ | ACTION=="add", DEVPATH=="/bus/pci/drivers/nvidia", RUN+="/usr/bin/nvidia-modprobe -c 0 -u"}} |
| + | |||
| + | == Wayland 設定 == |
||
| + | |||
| + | Xwayland に関しては [[Wayland#Xwayland]] を見てください。 |
||
| + | |||
| + | その他の設定オプションについては、それぞれの[[Wayland#コンポジタ|コンポジタ]]の wiki ページやドキュメントを見てください。 |
||
| + | |||
| + | {{Note|バージョン 555.xx より前のドライバを使用している場合や、{{ic|linux-drm-syncobj-v1}} プロトコルによって Explicit Sync をサポートしていない Wayland コンポジタを使用している場合、ネイティブの Wayland アプリと Xwayland アプリの両方でちらつき、フレーム順序の狂いなどの問題が発生する可能性があります。}} |
||
| + | |||
| + | === 基本的なサポート === |
||
| + | |||
| + | {{ic|nvidia_drm}} モジュールの重要なカーネルパラメータは {{ic|modeset}} と {{ic|fbdev}} です。{{Pkg|nvidia-utils}} パッケージを使用している場合、これらは両方とも[https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/blob/3b439109/PKGBUILD#L60 デフォルトで有効化されています]。また、NVIDIA は[https://indico.freedesktop.org/event/6/contributions/287/attachments/210/288/NVIDIA%20Wayland%20Roadmap.pdf 将来のリリースでこれらのパラメータをデフォルトで有効化することを計画しています]。 |
||
| + | |||
| + | ==== modeset ==== |
||
| + | |||
| + | 全ての Wayland 構成において {{ic|modeset}} を有効化することは適切に機能させるために必須です。 |
||
| + | |||
| + | サポートの無いドライバについては、{{ic|modeset}} を手動で有効化する必要があります。詳細は [[#DRM カーネルモード設定]] と [[Wayland#要件]] を見てください。 |
||
| + | |||
| + | ==== fbdev ==== |
||
| + | |||
| + | {{Out of date|{{Pkg|linux}} 6.14.2 と {{Pkg|nvidia}} 570.133.07 の時点で、Wayland は fbdev が無効化されていても動作するようです。また、下記の {{ic|cat}} コマンドは {{ic|N}} を返す可能性もあります。なので、この章はそれより古いバージョンのドライバのみが対象です。}} |
||
| + | |||
| + | 一部の Wayland 構成においては {{ic|fbdev}} を有効化する必要があります。 |
||
| + | |||
| + | Linux 6.11 以降においてこれは厳しい要件ですが、これが仕様なのかバグなのかは現在明らかになっていません。詳細は [https://forums.developer.nvidia.com/t/drm-fbdev-wayland-presentation-support-with-linux-kernel-6-11-and-above/307920] を参照してください。 |
||
| + | |||
| + | これは [[#DRM カーネルモード設定|modesetting パラメータ]]と同じようにして設定することができます。ただし、以下のコマンドの出力は modesetting と異なります: |
||
| + | |||
| + | # cat /sys/module/nvidia_drm/parameters/fbdev |
||
| + | |||
| + | {{ic|fbdev}} が設定されていない場合は、このコマンドは {{ic|N}} を出力するのではなく、ファイルが存在しないことを示すエラーが発生します。 |
||
| + | |||
| + | === サスペンドのサポート === |
||
| + | |||
| + | Wayland でのサスペンドは X よりもデフォルトの設定の問題が発生しやすいです。詳細は [[NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する]] を参照してください。 |
||
| + | |||
| + | GDM を使用している場合は、[[GDM#Wayland とプロプライエタリな NVIDIA ドライバ]] も参照してください。 |
||
| + | |||
| + | === nvidia-application-profiles-rc.d === |
||
| + | |||
| + | 一部の wayland コンポジタは [https://www.nvidia.com/en-us/drivers/details/237587/ GLVidHeapReuseRatio] アプリケーションプロファイルキーが[https://github.com/NVIDIA/egl-wayland/issues/126#issuecomment-2379945259 アプリケーションのプロセス名に対して適用]されていない場合、デフォルトで大量の VRAM を消費します。例えば、以下のように設定すれば [[niri]] ではアイドル時で VRAM 消費量を約2.5GiB削減できます: |
||
| + | |||
| + | {{hc|/etc/nvidia/nvidia-application-profiles-rc.d/50-limit-free-buffer-pool-in-wayland-compositors.json|2= |
||
| + | { |
||
| + | "rules": [ |
||
| + | { |
||
| + | "pattern": { |
||
| + | "feature": "procname", |
||
| + | "matches": "niri" |
||
| + | }, |
||
| + | "profile": "Limit free buffer pool on Wayland compositors" |
||
| + | } |
||
| + | ], |
||
| + | "profiles": [ |
||
| + | { |
||
| + | "name": "Limit free buffer pool on Wayland compositors", |
||
| + | "settings": [ |
||
| + | { |
||
| + | "key": "GLVidHeapReuseRatio", |
||
| + | "value": 1 |
||
| + | } |
||
| + | ] |
||
| + | } |
||
| + | ] |
||
| + | } |
||
}} |
}} |
||
== Xorg 設定 == |
== Xorg 設定 == |
||
| − | + | プロプライエタリな NVIDIA グラフィックドライバは Xorg サーバの設定ファイルを必要としません。[[Xorg#起動|X を起動]]してみて、Xorg サーバが設定ファイル無しで正しく機能するかを確認することができます。しか、様々な設定を調整するために設定ファイル ({{ic|/etc/X11/xorg.conf}} よりも {{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}} を優先して使用してください) を作成する必要があるかもしれません。この設定は、NVIDIA Xorg 設定ツールによって生成することができますし、手動で作成することもできます。手動で作成した場合、([[Xorg]] サーバに基本的なオプションのみを与えると言う意味で) 最小の設定にすることができますし、あるいは、Xorg の自動検出されたオプションや事前設定されたオプションをバイパスできる設定を含めることもできます。 |
|
| + | |||
| + | {{Tip|その他の設定オプションは、[[NVIDIA/トラブルシューティング]] を見てください。}} |
||
=== 自動設定 === |
=== 自動設定 === |
||
| − | NVIDIA のパッケージには |
+ | NVIDIA のパッケージには、Xorg サーバの設定ファイル ({{ic|xorg.conf}}) を作成するための自動設定ツールが含まれています。次のコマンドで実行できます: |
| + | |||
# nvidia-xconfig |
# nvidia-xconfig |
||
| − | このコマンドは |
+ | このコマンドは {{ic|/etc/X11/xorg.conf}} を自動検出し、現在のハードウェアに応じてそのファイルを作成 (すでに存在する場合は編集) します。 |
| + | デフォルトの深度、水平同期、垂直リフレッシュ、そして解像度が問題ないか {{ic|/etc/X11/xorg.conf}} を二重にチェックしてください。 |
||
| − | DRI のインスタンスがある場合は、コメントアウトされているか確認してください: |
||
| − | # Load "dri" |
||
| − | デフォルトの depth, horizontal sync, vertical refresh, resolutions が問題ないか {{ic|/etc/X11/xorg.conf}} を再確認してください。 |
||
| − | === |
+ | === nvidia-settings === |
{{Pkg|nvidia-settings}} は CLI または GUI を使って様々なオプションを設定することができるツールです。何もオプションをつけずに {{ic|nvidia-settings}} を実行すると GUI が起動します。CLI のオプションについては {{man|1|nvidia-settings}} を見てください。 |
{{Pkg|nvidia-settings}} は CLI または GUI を使って様々なオプションを設定することができるツールです。何もオプションをつけずに {{ic|nvidia-settings}} を実行すると GUI が起動します。CLI のオプションについては {{man|1|nvidia-settings}} を見てください。 |
||
| + | {{Pkg|nvidia-settings}} の CLI/GUI は非 root なユーザとして実行でき、''nvidia-settings Configuration'' タブにある ''Save Current Configuration'' オプションで設定を {{ic|~/.nvidia-settings-rc}} に保存できます。 |
||
| − | 通常ユーザーで GUI を起動した場合、設定を {{ic|~/.nvidia-settings-rc}} に保存できます。保存した設定は {{ic|$ nvidia-settings --load-config-only}} でロードできます ([[xinitrc]] などに記述することで自動的にロードできます)。もしくは、設定ファイルを {{ic|/etc/X11/xorg.conf.d/20-nvidia.conf}} に移動すれば自動的にロードさせることができます。 |
||
| + | |||
| + | 現在のユーザで {{ic|~/.nvidia-settings-rc}} をロードするには: |
||
| + | |||
| + | $ nvidia-settings --load-config-only |
||
| + | |||
| + | 起動時に毎回このコマンドを実行させるには[[自動起動]]を見てください。 |
||
| − | {{Note|[[Xorg]] |
+ | {{Note|{{ic|nvidia-settings}} から変更を加えると [[Xorg]] が起動しなくなったりクラッシュするようになったりすることがあります。生成された {{ic|~/.nvidia-settings-rc}} と [[Xorg]] のファイルの両方/片方を調整するか削除することで普通に起動できるようになるはずです。}} |
=== 手動設定 === |
=== 手動設定 === |
||
| − | 設定ファイルを編集することで、([[#自動設定|自動的に]]、または [[#NVIDIA settings|nvidia-settings]]によって有効化できない)いくつかの微調整をすることができます。変更を適用する前に Xorg サーバーを再起動する必要があります。 |
+ | 設定ファイルを編集することで、([[#自動設定|自動的に]]、または [[#NVIDIA settings|nvidia-settings]]によって有効化できない) いくつかの微調整をすることができます。変更を適用する前に Xorg サーバーを再起動する必要があります。 |
| − | その他の詳細やオプションについては [https://download.nvidia.com/XFree86/Linux-x86_64/ |
+ | その他の詳細やオプションについては [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/ NVIDIA Accelerated Linux Graphics Driver README and Installation Guide] をご覧ください。 |
==== 最小設定 ==== |
==== 最小設定 ==== |
||
| − | {{ic|20-nvidia.conf}} (もしくは |
+ | {{ic|20-nvidia.conf}} (もしくは非推奨の {{ic|xorg.conf}}) の基本的な設定ブロックは以下のようになります: |
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf| |
{{hc|/etc/X11/xorg.conf.d/20-nvidia.conf| |
||
Section "Device" |
Section "Device" |
||
| − | Identifier " |
+ | Identifier "NVIDIA Card" |
Driver "nvidia" |
Driver "nvidia" |
||
VendorName "NVIDIA Corporation" |
VendorName "NVIDIA Corporation" |
||
| 172行目: | 266行目: | ||
==== 起動時のロゴを無効化 ==== |
==== 起動時のロゴを無効化 ==== |
||
| − | {{ic|Device}} セクション内に {{ic|"NoLogo"}} オプションを追加してください: |
+ | 古いドライバ ({{AUR|nvidia-340xx-dkms}}) を使用している場合、X の起動時に表示される NVIDIA ロゴスプラッシュスクリーンを無効化しておいたほうがいいかもしれません。{{ic|Device}} セクション内に {{ic|"NoLogo"}} オプションを追加してください: |
Option "NoLogo" "1" |
Option "NoLogo" "1" |
||
| 188行目: | 282行目: | ||
==== 輝度調整を有効化 ==== |
==== 輝度調整を有効化 ==== |
||
| − | {{Out of date| |
+ | {{Out of date|時代遅れの可能性あり[https://lists.archlinux.org/archives/list/aur-requests@lists.archlinux.org/thread/GXJG7D3ALUQKOE2DT4XCL4UXQUFDDSEC/]。上流のパッケージも古いようです。}} |
以下をカーネルパラメータに追加してください: |
以下をカーネルパラメータに追加してください: |
||
| 204行目: | 298行目: | ||
==== SLI を有効化 ==== |
==== SLI を有効化 ==== |
||
| + | {{Out of date|バージョン 455.23.04 から、一部の SLI モードはもはやサポートされていません。}} |
||
| − | {{Warning|GTX 10xx シリーズ(1080, 1070, 1060, etc)以降は 2-way SLI のみがサポートされます。3-way や 4-way SLI は CUDA/OpenCL アプリケーションに対しては機能するかもしれませんが、すべての OpenGL アプリケーションに対してはたいてい機能しないでしょう。}} |
||
| + | {{Warning|GTX 10xx シリーズ (1080、1070、1060 など) 以降は 2-way SLI のみがサポートされます。3-way や 4-way SLI は CUDA/OpenCL アプリケーションに対しては機能するかもしれませんが、すべての OpenGL アプリケーションに対してはたいてい機能しないでしょう。}} |
||
| − | NVIDIA ドライバーの [ftp://download.nvidia.com/XFree86/Linux-x86/355.11/README/xconfigoptions.html README] 付録 B によると: ''このオプションは、サポートされている構成で SLI レンダリングの設定を制御します。''"サポートされている構成"とは SLI 認定マザーボードと、2基または3基の SLI 認定 GeForce GPU を搭載しているコンピュータのことです。 |
||
| + | |||
| + | NVIDIA ドライバーの [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/xconfigoptions.html#SLI README] 付録 B によると: ''このオプションは、サポートされている構成で SLI レンダリングの設定を制御します。'' "サポートされている構成"とは SLI 認定マザーボードと、2基または3基の SLI 認定 GeForce GPU を搭載しているコンピュータのことです。 |
||
{{ic|lspci}} を使って1つ目の GPU の PCI Bus ID を調べてください: |
{{ic|lspci}} を使って1つ目の GPU の PCI Bus ID を調べてください: |
||
| − | {{hc|# lspci |
+ | {{hc|# lspci -d ::03xx| |
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09) |
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09) |
||
03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1) |
03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1) |
||
| 256行目: | 352行目: | ||
}} |
}} |
||
| − | {{Warning|SLI を有効化した後に xorg を起動するとシステムがフリーズ |
+ | {{Warning|SLI を有効化した後に xorg を起動するとシステムがフリーズしたり、応答しなくなったりするかもしれません。再起動する前にディスプレイマネージャーを無効化することをおすすめします。}} |
以上の設定で機能しない場合は、{{ic|nvidia-settings}} で得られる PCI Bus ID を使用する必要があるかもしれません。 |
以上の設定で機能しない場合は、{{ic|nvidia-settings}} で得られる PCI Bus ID を使用する必要があるかもしれません。 |
||
| 286行目: | 382行目: | ||
=== マルチモニター === |
=== マルチモニター === |
||
| − | + | 一般的な情報は [[マルチディスプレイ]] を見て下さい。 |
|
==== NVIDIA Settings を使う ==== |
==== NVIDIA Settings を使う ==== |
||
| − | [[# |
+ | [[#nvidia-settings|nvidia-settings]] ツールを使ってマルチモニターを設定できます。 |
CLI で設定する場合、まずは以下を実行して {{ic|CurrentMetaMode}} を確認してください: |
CLI で設定する場合、まずは以下を実行して {{ic|CurrentMetaMode}} を確認してください: |
||
| 303行目: | 399行目: | ||
==== ConnectedMonitor ==== |
==== ConnectedMonitor ==== |
||
| + | |||
| + | {{Out of date|{{ic|Option "TwinView"}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}} |
||
ドライバーがセカンドモニタを正しく認識しない場合は、ConnectedMonitor を使って認識するように強制できます。 |
ドライバーがセカンドモニタを正しく認識しない場合は、ConnectedMonitor を使って認識するように強制できます。 |
||
| 355行目: | 453行目: | ||
==== TwinView ==== |
==== TwinView ==== |
||
| + | |||
| + | {{Out of date|{{ic|Option "TwinView"}} はバージョン 302.07 で削除され、TwinView は常に有効になっています。}} |
||
画面を2つ表示するのではなく1つの大きな画面を表示したい場合、{{ic|TwinView}} 引数を {{ic|1}} に設定してください。コンポジットを使いたい場合、このオプションを使用する必要があります。TwinView は全てのモニターが同一のカードに接続されている場合にのみ機能します。 |
画面を2つ表示するのではなく1つの大きな画面を表示したい場合、{{ic|TwinView}} 引数を {{ic|1}} に設定してください。コンポジットを使いたい場合、このオプションを使用する必要があります。TwinView は全てのモニターが同一のカードに接続されている場合にのみ機能します。 |
||
| + | |||
Option "TwinView" "1" |
Option "TwinView" "1" |
||
| + | 設定例: |
||
| − | 設定例 [ftp://download.nvidia.com/XFree86/Linux-x86/355.11/README/configtwinview.html]: |
||
| + | |||
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf| |
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf| |
||
Section "ServerLayout" |
Section "ServerLayout" |
||
| 400行目: | 502行目: | ||
EndSection |
EndSection |
||
}} |
}} |
||
| + | |||
| + | [https://download.nvidia.com/XFree86/Linux-x86_64/575.64/README/configtwinview.html Device オプション情報]。 |
||
SLI に対応しているカードが複数枚存在する場合、別々のカードに接続された複数のモニターを使うことができます (例: 2枚のカードが SLI で、各々のカードにモニターが1台ずつ接続)。SLI モザイクモードと "MetaModes" オプションで有効になります。以下は上記と同じように設定する例で、[[GNOME]] が完璧に動作します: |
SLI に対応しているカードが複数枚存在する場合、別々のカードに接続された複数のモニターを使うことができます (例: 2枚のカードが SLI で、各々のカードにモニターが1台ずつ接続)。SLI モザイクモードと "MetaModes" オプションで有効になります。以下は上記と同じように設定する例で、[[GNOME]] が完璧に動作します: |
||
| + | |||
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf| |
{{hc|/etc/X11/xorg.conf.d/10-monitor.conf| |
||
Section "Device" |
Section "Device" |
||
| 455行目: | 560行目: | ||
Screen 0 "Right Screen" 0 0 |
Screen 0 "Right Screen" 0 0 |
||
Option "Xinerama" "0" |
Option "Xinerama" "0" |
||
| − | EndSection |
+ | EndSection |
| + | }} |
||
| − | |||
| − | ===== xrandr による手動の CLI 設定 ===== |
||
| − | |||
| − | 上手くいかない場合、ウィンドウマネージャの[[自動起動]]から {{Pkg|xorg-xrandr}} を利用する方法があります。 |
||
| − | |||
| − | {{ic|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 |
||
| − | |||
| − | コマンドの意味: |
||
| − | |||
| − | * {{ic|--output}} はオプションを設定するモニターを指定します。 |
||
| − | * {{ic|DVI-I-1}} はセカンドモニターの名前です。 |
||
| − | * {{ic|--pos}} はセカンドモニターの相対位置です。 |
||
| − | * {{ic|--mode}} はセカンドモニターの解像度です。 |
||
| − | * {{ic|--rate}} はリフレッシュレート (Hz) です。 |
||
===== TwinView を使って垂直同期 ===== |
===== TwinView を使って垂直同期 ===== |
||
| − | TwinView と垂直同期 ( |
+ | TwinView と垂直同期 ({{ic|nvidia-settings}} の ''Sync to VBlank'' オプション) を使っている場合、モニターの大きさが異なっていると片方の画面だけが同期されます。{{ic|nvidia-settings}} にはどちらの画面を同期させるか設定するオプション (''Sync to this display device'' オプション) が存在しますが、必ずしも機能するとはいいがたいです。起動時に以下の環境変数を追加することで解決します (例: {{ic|/etc/profile}} に追加): |
export __GL_SYNC_TO_VBLANK=1 |
export __GL_SYNC_TO_VBLANK=1 |
||
| 485行目: | 571行目: | ||
export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0 |
export VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE=DFP-0 |
||
| − | {{ic|DFP-0}} は適切な画面に置き換えてください ({{ic|DFP-0}} は DVI 端子で {{ic|CRT-0}} は VGA 端子です)。ディスプレイの識別名は |
+ | {{ic|DFP-0}} は適切な画面に置き換えてください ({{ic|DFP-0}} は DVI 端子で {{ic|CRT-0}} は VGA 端子です)。ディスプレイの識別名は {{ic|nvidia-settings}} の ''X Server XVideoSettings'' セクションで確認できます。 |
===== Twinview を使ってゲームを遊ぶ ===== |
===== Twinview を使ってゲームを遊ぶ ===== |
||
| 491行目: | 577行目: | ||
TwinView を使ってフルスクリーンのゲームを遊ぶ場合、2つの画面が1つの大きな画面としてゲームから認識されることがあります。技術的にこれは正しいのですが (仮想的な X スクリーンの横幅は両方の画面を合わせたサイズになります)、ゲームを遊ぶときは両方の画面を使わないようにしたいときもあるでしょう。 |
TwinView を使ってフルスクリーンのゲームを遊ぶ場合、2つの画面が1つの大きな画面としてゲームから認識されることがあります。技術的にこれは正しいのですが (仮想的な X スクリーンの横幅は両方の画面を合わせたサイズになります)、ゲームを遊ぶときは両方の画面を使わないようにしたいときもあるでしょう。 |
||
| − | SDL のこの挙動を修正するには、次を試して下さい: |
+ | SDL 1.2 のこの挙動を修正するには、次を試して下さい: |
| + | |||
export SDL_VIDEO_FULLSCREEN_HEAD=1 |
export SDL_VIDEO_FULLSCREEN_HEAD=1 |
||
OpenGL の場合、{{ic|xorg.conf}} の {{ic|Device}} セクションに適切な Metamodes を追加して X を再起動してください: |
OpenGL の場合、{{ic|xorg.conf}} の {{ic|Device}} セクションに適切な Metamodes を追加して X を再起動してください: |
||
| + | |||
Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;" |
Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;" |
||
| 501行目: | 589行目: | ||
==== モザイクモード ==== |
==== モザイクモード ==== |
||
| − | 複数のグラフィ |
+ | モザイクモードは、複数のグラフィクカードでコンポジット有りで3つ以上のモニタを使用する唯一の方法です。ウィンドウマネージャは各モニタの違いを認識するかもしれませんし、しないかもしれません。モザイクモードには、有効な SLI 設定が必要です。SLI を使わずにベースモードを使用する場合でも、GPU は依然として SLI 対応/互換でなければなりません。 |
===== ベースモザイク ===== |
===== ベースモザイク ===== |
||
| − | ベースモザイクモードは Geforce 8000 シリーズ以上の GPU で動作します。nvidia-setting の GUI から有効にすることはできません。 |
+ | ベースモザイクモードは Geforce 8000 シリーズ以上の GPU で動作します。nvidia-setting の GUI から有効にすることはできません。''nvidia-xconfig'' コマンドラインプログラムを使用するか {{ic|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" |
||
| + | # 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" |
||
| − | {{Note|ドキュメントには 2x2 のモニター構成が記述されていますが、ドライバーのバージョン304現在、Nvidia はベースモザイクモードで使用できるモニターの数を3台までに絞っています。Quadro カードでは4台以上のモニターを扱えるはずですが、市場に流通しているカードでは、3台までに制限されています。これについては「Windows ドライバーと同じ」という説明があります。しかしながら、2014年9月現在、Windows にはこのようなモニターの数の制限はありません。これはバグではありません。仕様です。}} |
||
| + | |||
| + | {{Note|ドキュメントには 2x2 のモニター構成が記述されていますが、Base Mosaic モードで[https://forums.developer.nvidia.com/t/basemosaic-v295-vs-v310-vs-v325-only-up-to-three-screens/30583#3954733 GeForce カードは人為的にモニタ3台に制限されています]。Quadro カードは4台以上のモニタをサポートしています。2014年9月現在、Windows ドライバはこの人為的な制限を落としましたが、Linux ドライバでは未だに残っています。}} |
||
===== SLI モザイク ===== |
===== SLI モザイク ===== |
||
SLI 構成を使っていて、使用する GPU が Quadro FX 5800 や Quadro Fermi 以降の場合、SLI モザイクモードが利用できます。nvidia-settings の GUI の中から有効化するか、コマンドラインで設定してください: |
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" |
||
| + | # 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" |
||
| − | == Wayland == |
||
| + | == NVswitch == |
||
| − | さらなる情報については [[Wayland#要件]] をご覧ください。 |
||
| + | NVswitch のあるシステム (AWS の H100x8 など) では、以下が必要です。 |
||
| − | さらなる設定オプションについては、それぞれのコンポジタの wiki ページやドキュメントをご覧ください。 |
||
| + | * nvidia-fabricmanager をインストールする。 |
||
| − | XWayland に関しては [[Wayland#XWayland]] をご覧ください。 |
||
| + | * Fabric manager が必要とする、対応するカーネルモジュールをインストールする。 |
||
| + | |||
| + | Fabric manager を使うと、pytorch が GPU が見つからないと報告してきます。 |
||
| + | |||
| + | Fabric マネージャをインストールするには: |
||
| + | |||
| + | # Nvidia から tarball をダウンロードする。[https://developer.download.nvidia.com/compute/cuda/redist/fabricmanager/linux-x86_64/ こちら] |
||
| + | # バージョン 555.42.02 は正しく動作します。 |
||
| + | # インストールスクリプト sbin/fm_run_package_installer.sh を変更してしてインストール先のパスを修正してください。 |
||
| + | |||
| + | 対応するカーネルドライバを入手するには: |
||
| + | |||
| + | # nvidia-beta-dkms と nvidia-utils-beta の AUR リポジトリを git clone してください。 |
||
| + | # PKGBUILD を変更してバージョン 555.42.02 を使用するようにしてください。 |
||
| + | # ビルドし、インストールしてください。 |
||
| + | # 再起動してください。 |
||
| + | |||
| + | 最後に、{{ic|systemctl enable nvidia-fabricmanager}} と {{ic|systemctl start nvidia-fabricmanager}} を実行すれば、pytorch が動くはずです。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
| 529行目: | 635行目: | ||
== トラブルシューティング == |
== トラブルシューティング == |
||
| − | [[NVIDIA/トラブルシューティング]]を参照。 |
+ | [[NVIDIA/トラブルシューティング]] を参照。 |
== 参照 == |
== 参照 == |
||
| + | * [https://forums.developer.nvidia.com/t/current-graphics-driver-releases/28500 Current graphics driver releases in official NVIDIA Forum] |
||
| − | * [https://forums.geforce.com/ NVIDIA ユーザーフォーラム] |
||
| + | * [https://forums.developer.nvidia.com/c/gpu-graphics/linux/148 NVIDIA Developers Forum - Linux Subforum] |
||
| − | * [http://download.nvidia.com/XFree86/Linux-x86/387.22/README/README.txt Official README for NVIDIA drivers, all on one text page. Version 387.22 (2017-10-25)] |
||
| + | |||
| − | * [http://download.nvidia.com/XFree86/Linux-x86/387.22/README/xconfigoptions.html README Appendix B. X Config Options, 387.22 (ダイレクトリンク)] |
||
| + | {{TranslationStatus|NVIDIA|2025-07-07|840164}} |
||
2025年7月7日 (月) 17:51時点における最新版
関連記事
この記事は公式の NVIDIA グラフィックカードドライバをカバーしています。コミュニティによるオープンソースのドライバに関しては、Nouveau を見てください。ハイブリッドグラフックスを搭載しているノートパソコンを使っている場合は、NVIDIA Optimus も見て下さい。
インストール
まず、nouveau wiki のコードネームに関するページで、以下のコマンドで入手した GPU カードのモデル名/公式名に対応するファミリ名を探してください:
$ lspci -k -d ::03xx
次に、使用しているカードに適したドライバをインストールしてください:
| GPU ファミリ | ドライバ | 状態 |
|---|---|---|
| Turing (NV160/TUXXX) 及びそれ以降 | linux には nvidia-open linux-lts には nvidia-open-lts nvidia-open-dkms は任意のカーネルで使えます |
上流で推奨されています。 現行。サポートあり。1 |
| Maxwell (NV110/GMXXX) から Ada Lovelace (NV190/ADXXX) |
linux には nvidia linux-lts には nvidia-lts nvidia-dkms は任意のカーネルで使えます |
現行。サポートあり。1 |
| Kepler (NVE0/GKXXX) | nvidia-470xx-dkmsAUR | レガシー。サポートなし。2,3 |
| Fermi (NVC0/GF1XX) | nvidia-390xx-dkmsAUR | |
| Tesla (NV50/G80-90-GT2XX) | nvidia-340xx-dkmsAUR | |
| Curie (NV40/G70) 及びそれ以前 | パッケージはもはや存在しません。 |
- これらのパッケージが動作しない場合 (たいていはハードウェアが新しいことが原因です)、nvidia-open-betaAUR が、新しいハードウェアをサポートしている新しいドライバのバージョンを提供しているかもしれません。
- Indirect Branch Tracking との互換性が無いため、第11世代及びそれ以降の Intel CPU を搭載しているシステムで Linux 5.18 (及びそれ以降) においてこれらのドライバは動作しない場合があります。Indirect Branch Tracking は、ブートローダーから
ibt=offカーネルパラメータを設定することにより、無効化することができます。ただし、このセキュリティ機能はエクスプロイト手法の一種を緩和する役割があるので注意してください。 - NVIDIA はもはやこれらのカードをアクティブにサポートしておらず、これらのドライバは現在の Xorg バージョンを公式にはサポートしていない場合があります。nouveau ドライバを使うほうが簡単かもしれません。しかし、NVIDIA のレガシーなドライバは依然として利用可能であり、3D パフォーマンスまたは安定性に関して優れているかもしれません。
32ビットアプリケーションのサポートに関しては、対応する lib32 パッケージも multilib リポジトリからインストールしてください (例: lib32-nvidia-utils)。
nvidia-utils パッケージには、再起動後に nouveau モジュールをブラックリスト化するファイルが含まれています。任意で、/etc/mkinitcpio.conf 内の HOOKS 配列から kms を削除し、その後 initramfs を再生成してもよいです。こうすることで、initramfs に nouveau モジュールが含まれないようにして、カーネルがこのモジュールを初期ブート中に読み込めないようにします。
ドライバーをインストールしたら、#Xorg 設定 または #Wayland 設定 へと進んでください。
カスタムカーネル
使用中のカーネルで CONFIG_DRM_SIMPLEDRM=y となっていることを確認してください。そして、CONFIG_DEBUG_INFO_BTF を使用している場合、PKGBUILD で以下が必要です (カーネル 5.16 以降):
install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids
CONFIG_NOVA_CORE を有効化してコンパイルされたカーネルでは、新しい NVIDIA GPU ドライバである Nova がロードされないようにする必要があるかもしれません。nvidia-utils はデフォルトでこのドライバをブラックリストに追加します。systemd-analyze を実行することで、ロードされていないことを確認できます。別のバージョンのドライバをインストールしている場合は、nova_core と nova_drm を手動でブラックリストに登録する必要があるかもしれません。
DRM カーネルモード設定
NVIDIA は KMS の自動遅延読み込みをサポートしていないため、Wayland コンポジタを正しく動作させるには DRM (Direct Rendering Manager) カーネルモード設定を有効化する必要があります。
nvidia-utils 560.35.03-5 から DRM はデフォルトで有効化されています。[1] それより古いドライバにおいては、nvidia_drm モジュールに対して modeset=1 カーネルモジュールパラメータを設定してください。
DRM が本当に有効化されているか調べるには、以下のコマンドを実行してください:
# cat /sys/module/nvidia_drm/parameters/modeset
正しく設定されていれば、このコマンドは N ではなく Y と出力するはずです。
早期ロード
基本的な機能については先のカーネルパラメータを追加するだけで十分でしょう。可能な限り早い時にロードさせたい場合や、スタートアップ時に問題 (nvidia カーネルモジュールがディスプレイマネージャのあとにロードされてしまうなど) が発生する場合には、nvidia、nvidia_modeset、nvidia_uvm そして nvidia_drm を initramfs に追加することができます。initramfs ジェネレータを設定する方法については カーネルモジュール#モジュールの早期ロード を見てください。mkinitcpio を使用している場合、nvidia ドライバの更新時に毎回 initramfs を再生成する必要がある場合があります。これを自動化する方法については #Pacman フック を見てください。
Pacman フック
NVIDIA ドライバをアップグレードした後に initramfs をアップデートすることを忘れないように、以下のような pacman フックを利用することができます:
/etc/pacman.d/hooks/nvidia.hook
[Trigger] Operation=Install Operation=Upgrade Operation=Remove Type=Package # 構成に存在しない Target は省略できます。例えば、nvidia-open のみを使用する場合は、nvidia-lts の Target を省略できます。 Target=nvidia Target=nvidia-open Target=nvidia-lts # 他のカーネルを使う場合は以下を適宜変更してください Target=linux [Action] Description=Updating NVIDIA module in initcpio Depends=mkinitcpio When=PostTransaction NeedsTargets Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P'
ビデオデコードのハードウェアアクセラレーション
VDPAU によるビデオデコードのアクセラレーションは GeForce 8 シリーズ及びそれ以降のカードでサポートされています。NVDEC によるビデオデコードのアクセラレーションは Fermi (~400 シリーズ) 及びそれ以降のカードでサポートされています。詳しくは ハードウェアビデオアクセラレーション をご覧ください。
NVENC によるビデオエンコードのハードウェアアクセラレーション
NVENC は nvidia_uvm モジュールと、関連するデバイスノードが /dev 下に作成されることを要求します。
最新のドライバーパッケージは、自動的にデバイスノードを作成する udev ルールを提供するので、追加の操作は必要ありません。
古いドライバ (例えば、nvidia-340xx-dkmsAUR) を使用している場合、デバイスノードを作成する必要があります。nvidia-modprobe ユーティリティを実行するとデバイスノードが自動的に作成されます。/etc/udev/rules.d/70-nvidia.rules を作成して nvidia-modprobe を自動的に実行させることができます:
/etc/udev/rules.d/70-nvidia.rules
ACTION=="add", DEVPATH=="/bus/pci/drivers/nvidia", RUN+="/usr/bin/nvidia-modprobe -c 0 -u"
Wayland 設定
Xwayland に関しては Wayland#Xwayland を見てください。
その他の設定オプションについては、それぞれのコンポジタの wiki ページやドキュメントを見てください。
基本的なサポート
nvidia_drm モジュールの重要なカーネルパラメータは modeset と fbdev です。nvidia-utils パッケージを使用している場合、これらは両方ともデフォルトで有効化されています。また、NVIDIA は将来のリリースでこれらのパラメータをデフォルトで有効化することを計画しています。
modeset
全ての Wayland 構成において modeset を有効化することは適切に機能させるために必須です。
サポートの無いドライバについては、modeset を手動で有効化する必要があります。詳細は #DRM カーネルモード設定 と Wayland#要件 を見てください。
fbdev
一部の Wayland 構成においては fbdev を有効化する必要があります。
Linux 6.11 以降においてこれは厳しい要件ですが、これが仕様なのかバグなのかは現在明らかになっていません。詳細は [2] を参照してください。
これは modesetting パラメータと同じようにして設定することができます。ただし、以下のコマンドの出力は modesetting と異なります:
# cat /sys/module/nvidia_drm/parameters/fbdev
fbdev が設定されていない場合は、このコマンドは N を出力するのではなく、ファイルが存在しないことを示すエラーが発生します。
サスペンドのサポート
Wayland でのサスペンドは X よりもデフォルトの設定の問題が発生しやすいです。詳細は NVIDIA/ヒントとテクニック#サスペンド後にビデオメモリを保持する を参照してください。
GDM を使用している場合は、GDM#Wayland とプロプライエタリな NVIDIA ドライバ も参照してください。
nvidia-application-profiles-rc.d
一部の wayland コンポジタは GLVidHeapReuseRatio アプリケーションプロファイルキーがアプリケーションのプロセス名に対して適用されていない場合、デフォルトで大量の VRAM を消費します。例えば、以下のように設定すれば niri ではアイドル時で VRAM 消費量を約2.5GiB削減できます:
/etc/nvidia/nvidia-application-profiles-rc.d/50-limit-free-buffer-pool-in-wayland-compositors.json
{
"rules": [
{
"pattern": {
"feature": "procname",
"matches": "niri"
},
"profile": "Limit free buffer pool on Wayland compositors"
}
],
"profiles": [
{
"name": "Limit free buffer pool on Wayland compositors",
"settings": [
{
"key": "GLVidHeapReuseRatio",
"value": 1
}
]
}
]
}
Xorg 設定
プロプライエタリな NVIDIA グラフィックドライバは Xorg サーバの設定ファイルを必要としません。X を起動してみて、Xorg サーバが設定ファイル無しで正しく機能するかを確認することができます。しか、様々な設定を調整するために設定ファイル (/etc/X11/xorg.conf よりも /etc/X11/xorg.conf.d/20-nvidia.conf を優先して使用してください) を作成する必要があるかもしれません。この設定は、NVIDIA Xorg 設定ツールによって生成することができますし、手動で作成することもできます。手動で作成した場合、(Xorg サーバに基本的なオプションのみを与えると言う意味で) 最小の設定にすることができますし、あるいは、Xorg の自動検出されたオプションや事前設定されたオプションをバイパスできる設定を含めることもできます。
自動設定
NVIDIA のパッケージには、Xorg サーバの設定ファイル (xorg.conf) を作成するための自動設定ツールが含まれています。次のコマンドで実行できます:
# nvidia-xconfig
このコマンドは /etc/X11/xorg.conf を自動検出し、現在のハードウェアに応じてそのファイルを作成 (すでに存在する場合は編集) します。
デフォルトの深度、水平同期、垂直リフレッシュ、そして解像度が問題ないか /etc/X11/xorg.conf を二重にチェックしてください。
nvidia-settings
nvidia-settings は CLI または GUI を使って様々なオプションを設定することができるツールです。何もオプションをつけずに nvidia-settings を実行すると GUI が起動します。CLI のオプションについては nvidia-settings(1) を見てください。
nvidia-settings の CLI/GUI は非 root なユーザとして実行でき、nvidia-settings Configuration タブにある Save Current Configuration オプションで設定を ~/.nvidia-settings-rc に保存できます。
現在のユーザで ~/.nvidia-settings-rc をロードするには:
$ nvidia-settings --load-config-only
起動時に毎回このコマンドを実行させるには自動起動を見てください。
手動設定
設定ファイルを編集することで、(自動的に、または nvidia-settingsによって有効化できない) いくつかの微調整をすることができます。変更を適用する前に Xorg サーバーを再起動する必要があります。
その他の詳細やオプションについては NVIDIA Accelerated Linux Graphics Driver README and Installation Guide をご覧ください。
最小設定
20-nvidia.conf (もしくは非推奨の xorg.conf) の基本的な設定ブロックは以下のようになります:
/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
Identifier "NVIDIA Card"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 1050 Ti"
EndSection
起動時のロゴを無効化
古いドライバ (nvidia-340xx-dkmsAUR) を使用している場合、X の起動時に表示される NVIDIA ロゴスプラッシュスクリーンを無効化しておいたほうがいいかもしれません。Device セクション内に "NoLogo" オプションを追加してください:
Option "NoLogo" "1"
モニター検出をオーバーライド
Device セクション内の "ConnectedMonitor" オプションにより、 X サーバーが起動した時にモニター検出をオーバーライドできます。これにより、起動時間を大幅に減らせるかもしれません。利用可能なオプション: アナログ接続用の "CRT"、デジタルモニター用の "DFP"、テレビ用の "TV"。
以下の行は起動時のチェックをバイパスし、モニターを DFP として認識することを NVIDIA ドライバーに強制します:
Option "ConnectedMonitor" "DFP"
輝度調整を有効化
以下をカーネルパラメータに追加してください:
nvidia.NVreg_RegistryDwords=EnableBrightnessControl=1
あるいは、以下を Device セクション内に追加してください:
Option "RegistryDwords" "EnableBrightnessControl=1"
もし、この設定で輝度調整がまだ機能しない場合は、nvidia-bl-dkmsAUR をインストールしてみてください。
SLI を有効化
NVIDIA ドライバーの README 付録 B によると: このオプションは、サポートされている構成で SLI レンダリングの設定を制御します。 "サポートされている構成"とは SLI 認定マザーボードと、2基または3基の SLI 認定 GeForce GPU を搭載しているコンピュータのことです。
lspci を使って1つ目の GPU の PCI Bus ID を調べてください:
# lspci -d ::03xx
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09) 03:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1) 04:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1) 08:00.0 3D controller: NVIDIA Corporation GM108GLM [Quadro K620M / Quadro M500M] (rev a2)
調べた BusID (前述の例では 3) を Device セクション内に追加してください:
BusID "PCI:3:0:0"
希望する SLI レンダリングモードの値を Screen セクション内に追加してください:
Option "SLI" "AA"
以下の表は利用可能なレンダリングモードです。
| 値 | 挙動 |
|---|---|
| 0, no, off, false, Single | レンダリング時にただ1つの GPU を使う。 |
| 1, yes, on, true, Auto | SLI を有効化し、ドライバーが自動的に適切なレンダリングモードを選択することを許可する。 |
| AFR | SLI を有効化し、Alternate Frame Rendering モードを使う。 |
| SFR | SLI を有効化し、Split Frame Rendering モードを使う。 |
| AA | SLI を有効化し、SLI アンチエイリアシングを使う。この値を Full-Scene アンチエイリアシングと一緒に使うと視覚品質が向上します。 |
あるいは、nvidia-xconfig ユーティリティを使って、これらの変更を xorg.conf に追加できます:
# nvidia-xconfig --busid=PCI:3:0:0 --sli=AA
SLI モードが有効化されていることをシェルから確認するには:
$ nvidia-settings -q all | grep SLIMode
Attribute 'SLIMode' (arch:0.0): AA
'SLIMode' is a string attribute.
'SLIMode' is a read-only attribute.
'SLIMode' can use the following target types: X Screen.
以上の設定で機能しない場合は、nvidia-settings で得られる PCI Bus ID を使用する必要があるかもしれません。
$ nvidia-settings -q all | grep -i pcibus
Attribute 'PCIBus' (host:0[gpu:0]): 101. 'PCIBus' is an integer attribute. 'PCIBus' is a read-only attribute. 'PCIBus' can use the following target types: GPU, SDI Input Device. Attribute 'PCIBus' (host:0[gpu:1]): 23. 'PCIBus' is an integer attribute. 'PCIBus' is a read-only attribute. 'PCIBus' can use the following target types: GPU, SDI Input Device.
そして、xorg.d 内の PrimaryGPU オプションをコメントアウトしてください:
/usr/share/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf
...
Section "OutputClass"
...
# Option "PrimaryGPU" "yes"
...
この設定でグラフィカルブートの問題も解決できるかもしれません。
マルチモニター
一般的な情報は マルチディスプレイ を見て下さい。
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"
設定例:
/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
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 1.2 のこの挙動を修正するには、次を試して下さい:
export SDL_VIDEO_FULLSCREEN_HEAD=1
OpenGL の場合、xorg.conf の Device セクションに適切な Metamodes を追加して X を再起動してください:
Option "Metamodes" "1680x1050,1680x1050; 1280x1024,1280x1024; 1680x1050,NULL; 1280x1024,NULL;"
別の X サーバーでゲームを起動する方法もあります。上記の方法と一緒に使うことも可能です。
モザイクモード
モザイクモードは、複数のグラフィクカードでコンポジット有りで3つ以上のモニタを使用する唯一の方法です。ウィンドウマネージャは各モニタの違いを認識するかもしれませんし、しないかもしれません。モザイクモードには、有効な SLI 設定が必要です。SLI を使わずにベースモードを使用する場合でも、GPU は依然として SLI 対応/互換でなければなりません。
ベースモザイク
ベースモザイクモードは 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"
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"
NVswitch
NVswitch のあるシステム (AWS の H100x8 など) では、以下が必要です。
- nvidia-fabricmanager をインストールする。
- Fabric manager が必要とする、対応するカーネルモジュールをインストールする。
Fabric manager を使うと、pytorch が GPU が見つからないと報告してきます。
Fabric マネージャをインストールするには:
- Nvidia から tarball をダウンロードする。こちら
- バージョン 555.42.02 は正しく動作します。
- インストールスクリプト sbin/fm_run_package_installer.sh を変更してしてインストール先のパスを修正してください。
対応するカーネルドライバを入手するには:
- nvidia-beta-dkms と nvidia-utils-beta の AUR リポジトリを git clone してください。
- PKGBUILD を変更してバージョン 555.42.02 を使用するようにしてください。
- ビルドし、インストールしてください。
- 再起動してください。
最後に、systemctl enable nvidia-fabricmanager と systemctl start nvidia-fabricmanager を実行すれば、pytorch が動くはずです。
ヒントとテクニック
NVIDIA/ヒントとテクニック を参照。
トラブルシューティング
NVIDIA/トラブルシューティング を参照。