「Nouveau」の版間の差分
(同期) |
|||
2行目: | 2行目: | ||
[[Category:X サーバー]] |
[[Category:X サーバー]] |
||
[[en:Nouveau]] |
[[en:Nouveau]] |
||
+ | [[de:Nouveau]] |
||
[[es:Nouveau]] |
[[es:Nouveau]] |
||
− | [[ |
+ | [[fr:Nouveau]] |
− | [[ru:Nouveau]] |
||
− | [[zh-hans:Nouveau]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|NVIDIA}} |
{{Related|NVIDIA}} |
||
12行目: | 11行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
− | この記事は NVIDIA カードのオープンソースドライバー [https://nouveau.freedesktop.org/ Nouveau] のインストールと設定を説明しています。 |
+ | この記事では NVIDIA カードのオープンソースドライバー [https://nouveau.freedesktop.org/ Nouveau] のインストールと設定を説明しています。プロプライエタリドライバーの情報は [[NVIDIA]] を見てください。 |
+ | |||
+ | 使用中のカードの[https://nouveau.freedesktop.org/wiki/CodeNames コードネーム]を見つけてください(より詳細なリストは [[Wikipedia:Comparison of Nvidia Graphics Processing Units|Wikipedia]] にあります)。サポートされている機能の [https://nouveau.freedesktop.org/wiki/FeatureMatrix/ feature matrix] と比較してください。 |
||
== インストール == |
== インストール == |
||
+ | {{Pkg|mesa}} パッケージを[[インストール]]してください。これは 3D アクセラレーションのための DRI ドライバを提供します。 |
||
− | 先に進む前に、あなたの使っているカードの [https://nouveau.freedesktop.org/wiki/CodeNames コードネーム] (もっと詳しいリストが [[Wikipedia:Comparison of Nvidia Graphics Processing Units|Wikipedia]] にあります) を確認して [https://nouveau.freedesktop.org/wiki/FeatureMatrix/ feature matrix] を見てあなたのグラフィックカードでサポートされている機能をチェックしてください。また、[[Xorg]] が正しくインストールされているか確認してください。 |
||
− | + | * 32ビットアクセラレーションサポートが必要な場合は、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージもインストールしてください。 |
|
+ | * ([[Xorg]] で 2D アクセラレーションを提供する) DDX ドライバが必要な場合、{{Pkg|xf86-video-nouveau}} パッケージを[[インストール]]してください。 |
||
− | + | [[ハードウェアビデオアクセラレーション]] も見てください。 |
|
− | * (Xorg における 2D アクセラレーションを提供する) DDX ドライバーは {{Pkg|xf86-video-nouveau}} パッケージで[[pacman|インストール]]してください。 |
||
− | |||
− | [[ハードウェアビデオアクセラレーション]]も見てください。 |
||
− | |||
− | {{Note|3D ドライバーのバグを報告する前に [https://nouveau.freedesktop.org/wiki/MesaDrivers Nouveau MesaDrivers page] を見て下さい。}} |
||
== ロード == |
== ロード == |
||
− | システムの起動時に Nouveau のカーネルモジュールは自動的にロードされ |
+ | システムの起動時に Nouveau のカーネルモジュールは自動的にロードされるはずです。ロードされない場合は: |
+ | * [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} を設定して'''いない'''ことを確認してください。Nouveau はカーネルモードセッティングを要求します。 |
||
− | ロードされない場合: |
||
+ | * また、{{ic|/etc/modprobe.d/}} や {{ic|/usr/lib/modprobe.d/}} の中で modprobe のブラックリストによって Nouveau が無効になっていないことを確認してください。 |
||
+ | * 上記全てを確認しても nouveau がロードされない場合は [[dmesg]] で opcode エラーが起こってないか確認してください。{{ic|1=nouveau.config=NvBios=PRAMIN}} を[[カーネルパラメータ]]に追加することでモジュールのアンロードを防ぐことができます [https://nouveau.freedesktop.org/wiki/TroubleShooting/#index10h3]。 |
||
+ | * {{ic|/etc/X11/xorg.conf}} が存在し、{{ic|nvidia}} ドライバを参照しているかどうかを確認してください。おそらく、このファイルの名前を変更したほうが良いでしょう。 |
||
+ | === 早期 KMS を有効化する === |
||
− | * [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} を設定して'''いない'''ことを確認してください。Nouveau を正しく動かすためにはカーネルモードセッティングが必要です (下を参照)。 |
||
− | * また、{{ic|/etc/modprobe.d/}} や {{ic|/usr/lib/modprobe.d/}} の中で modprobe のブラックリストによって Nouveau が無効になっていないか確認してください。 |
||
− | * 上記全てを確認しても nouveau がロードされない場合は dmesg で opcode エラーが起こってないか確認してください。{{ic|1=nouveau.config=NvBios=PRAMIN}} を[[カーネルパラメータ]]に追加することでモジュールのアンロードを防ぐことができます [https://nouveau.freedesktop.org/wiki/TroubleShooting/#index10h3]。 |
||
− | |||
− | === KMS === |
||
{{Tip|解像度に問題がある場合、[[Kernel Mode Setting#モードの強制と EDID]] をチェックしてください。}} |
{{Tip|解像度に問題がある場合、[[Kernel Mode Setting#モードの強制と EDID]] をチェックしてください。}} |
||
− | Nouveau ドライバーを使うには [[Kernel Mode Setting]] (KMS) が必要です。 |
+ | Nouveau ドライバーを使うには [[Kernel Mode Setting]] (KMS) が必要です。デフォルトで、他のカーネルモジュールがロードされた後に KMS が行われます。"Loading modules" というテキスト表示され、テキストの大きさが変化するでしょう。ちらつきが発生するかもしれません。詳細は [https://nouveau.freedesktop.org/wiki/KernelModeSetting Nouveau KernelModeSetting のページ] を見て下さい。 |
− | |||
− | {{Note|ブートプロセスの間に見苦しい解像度変更がないため early start の方が好ましいかもしれません。}} |
||
− | |||
− | ==== Late start ==== |
||
− | |||
− | この方法では他のカーネルモジュールがロードされた後に KMS を起動します。"Loading modules" の文字が表示されてテキストのサイズが変わります。ちらつきが発生するかもしれません。 |
||
− | |||
− | ==== Early start ==== |
||
− | + | [[initramfs]] がロードされた時に、ブートプロセス中の可能な限り早い段階で KMS を起動させることもできます。 |
|
− | {{ic|nouveau}} を {{ic|/etc/mkinitcpio.conf}} の {{ic|MODULES}} 行に追加して下さい: |
+ | {{ic|nouveau}} を {{ic|/etc/mkinitcpio.conf}} の {{ic|MODULES}} 行に追加して下さい(モジュールの名前は半角スペースで区切られます): |
− | MODULES= |
+ | MODULES=(... nouveau ...) |
カスタム EDID ファイルを使っている場合、同じように initramfs に埋め込む必要があります: |
カスタム EDID ファイルを使っている場合、同じように initramfs に埋め込む必要があります: |
||
62行目: | 50行目: | ||
2=FILES="/lib/firmware/edid/your_edid.bin"}} |
2=FILES="/lib/firmware/edid/your_edid.bin"}} |
||
− | + | 最後に [[Initramfs を再生成する|Initramfs を再生成]]してください。 |
|
− | |||
− | # mkinitcpio -p <kernel preset; e.g. ''linux''> |
||
− | |||
− | Nouveau に問題が発生してテスト目的に nouveau-drm を複数回リビルドする場合、initramfs に {{ic|nouveau}} は追加しないでください。initramfs を再生成するのは忘れやすいためテストするのが面倒くさくなります。システムが安定したと確証を得るまでは "Late start" を使いましょう。(通常は推奨されない) カスタムファームウェアが必要な場合、initramfs で問題が別に発生することもあります。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
72行目: | 56行目: | ||
=== NVIDIA ドライバーをインストールしたままにしておく === |
=== NVIDIA ドライバーをインストールしたままにしておく === |
||
− | プロプライエタリの NVIDIA ドライバーを |
+ | プロプライエタリの NVIDIA ドライバーをインストールしたままにしておきたいが、Nouveau ドライバーも使いたい(そして OpenGL を使用していない)場合、{{ic|/etc/modprobe.d/nouveau_blacklist.conf}} や {{ic|/usr/lib/modprobe.d/nvidia.conf}}、{{ic|/usr/lib/modprobe.d/nvidia-dkms.conf}} 内の nouveau のブラックリストを以下のように修正してコメントアウトしてください: |
#blacklist nouveau |
#blacklist nouveau |
||
93行目: | 77行目: | ||
そしてカーネルメッセージを見て正しくロードされていることを確認してください: |
そしてカーネルメッセージを見て正しくロードされていることを確認してください: |
||
− | + | # dmesg |
|
=== 最新の開発パッケージをインストールする === |
=== 最新の開発パッケージをインストールする === |
||
+ | 最新の Nouveau の改善を得るには: |
||
− | AUR を通して、最新の -git パッケージをインストールすることができます: |
||
− | * |
+ | *{{AUR|linux-git}} PKGBUILD で、パッケージをゼロから作成せずに https://github.com/skeggsb/linux/ の Nouveau ツリーを使用できます。 |
+ | *{{AUR|libdrm-git}} |
||
− | * {{AUR|linux-mainline}} などのパッケージを使って新しいカーネルバージョンをインストールすることで、Nouveau DRM コードのパフォーマンスが向上するかもしれません。 |
||
+ | *{{AUR|lib32-libdrm-git}} |
||
− | * 最新の Nouveau を使うには、AUR の {{AUR|linux-git}} パッケージを使用して、PKGBUILD を編集し Nouveau のカーネルリポジトリ (現在は git://anongit.freedesktop.org/git/nouveau/xf86-video-nouveau にあります) を使う必要があります。 |
||
+ | *{{AUR|lib32-mesa-git}} |
||
− | |||
+ | *{{AUR|mesa-git}} |
||
− | 上流のドライバーソースは [https://nouveau.freedesktop.org/wiki/Source Nouveau Source のページ] にあります。 |
||
+ | *{{AUR|xf86-video-nouveau-git}} |
||
− | |||
− | === ティアリングフリーのコンポジット === |
||
− | |||
− | {{ic|/etc/X11/xorg.conf.d/20-nouveau.conf}} を編集して、以下を {{ic|Device}} セクションに追加して下さい: |
||
− | |||
− | Section "Device" |
||
− | Identifier "nvidia card" |
||
− | Driver "nouveau" |
||
− | Option "GLXVBlank" "true" |
||
− | EndSection |
||
=== デュアルディスプレイ === |
=== デュアルディスプレイ === |
||
− | + | [[Wikipedia:RandR|RandR]] を使用してマルチモニタのセットアップする方法は [[マルチディスプレイ#RandR]] を見てください。 |
|
− | |||
− | 以下は dual head モードで2つのモニターを動かすための {{ic|/etc/X11/xorg.conf.d/20-nouveau.conf}} の完全なサンプルです。GNOME Control Center の Display パネル ({{ic|gnome-control-center display}}) などグラフィカルツールを使ってモニタの設定をすることも可能です。 |
||
− | |||
− | {{bc| |
||
− | # the right one |
||
− | Section "Monitor" |
||
− | Identifier "NEC" |
||
− | Option "PreferredMode" "1280x1024_60.00" |
||
− | EndSection |
||
− | |||
− | # the left one |
||
− | Section "Monitor" |
||
− | Identifier "FUS" |
||
− | Option "PreferredMode" "1280x1024_60.00" |
||
− | Option "LeftOf" "NEC" |
||
− | EndSection |
||
− | |||
− | Section "Device" |
||
− | Identifier "nvidia card" |
||
− | Driver "nouveau" |
||
− | Option "Monitor-DVI-I-1" "NEC" |
||
− | Option "Monitor-DVI-I-2" "FUS" |
||
− | EndSection |
||
− | |||
− | Section "Screen" |
||
− | Identifier "screen1" |
||
− | Monitor "NEC" |
||
− | DefaultDepth 24 |
||
− | SubSection "Display" |
||
− | Depth 24 |
||
− | Virtual 2560 2048 |
||
− | EndSubSection |
||
− | Device "nvidia card" |
||
− | EndSection |
||
− | |||
− | Section "ServerLayout" |
||
− | Identifier "layout1" |
||
− | Screen "screen1" |
||
− | EndSection}} |
||
=== コンソールの解像度を設定する === |
=== コンソールの解像度を設定する === |
||
− | {{ |
+ | {{ic|1=video=}} カーネルラインオプションを使うことで nouveau に解像度を渡すことができます([[Kernel Mode Setting]] を参照してください)。 |
− | |||
− | また、{{ic|1=video=}} カーネルラインオプションを使うことで nouveau に解像度を渡すことができます ([[Kernel Mode Setting|KMS]] を参照してください)。 |
||
=== 電源管理 === |
=== 電源管理 === |
||
168行目: | 102行目: | ||
nouveau ドライバーには正しい電源管理機能が実装されていないため、グラフィックカードの周波数は低い状態でロックされてパフォーマンスが思うほど出ない場合があります。カードによっては GPU のオーバークロックが実験的にサポートされています ([https://nouveau.freedesktop.org/wiki/PowerManagement Nouveau の電源管理についてのページ] を見てください)。カーネル 4.5 から {{ic|/sys/kernel/debug/dri/*/pstate}} の debugfs インターフェイスを使って制御できるようになっています。 |
nouveau ドライバーには正しい電源管理機能が実装されていないため、グラフィックカードの周波数は低い状態でロックされてパフォーマンスが思うほど出ない場合があります。カードによっては GPU のオーバークロックが実験的にサポートされています ([https://nouveau.freedesktop.org/wiki/PowerManagement Nouveau の電源管理についてのページ] を見てください)。カーネル 4.5 から {{ic|/sys/kernel/debug/dri/*/pstate}} の debugfs インターフェイスを使って制御できるようになっています。 |
||
− | 例えば、 |
+ | 例えば、システム上の1番目のカードで利用可能な電源状態と現在の設定を確認するには、以下を実行してください: |
# cat /sys/kernel/debug/dri/0/pstate |
# cat /sys/kernel/debug/dri/0/pstate |
||
− | + | インターフェイスに書き込むことで特定の電源状態を手動で設定/強制することもできます: |
|
# echo ''pstate'' > /sys/kernel/debug/dri/0/pstate |
# echo ''pstate'' > /sys/kernel/debug/dri/0/pstate |
||
− | {{Warning| |
+ | {{Warning|再クロッキングのサポートは実験的です。システムがフリーズしたり、カードがオーバーヒットして破壊される可能性があります。}} |
==== ファンの制御 ==== |
==== ファンの制御 ==== |
||
+ | カードで実装されていれば、{{ic|/sys}} を使ってファンの制御を設定できます: |
||
− | {{Warning|設定は自己責任です。カードを過熱しすぎないように注意してください。}} |
||
− | |||
− | {{ic|/sys}} を使ってファンの制御を設定できる場合があります: |
||
$ find /sys -name pwm1_enable |
$ find /sys -name pwm1_enable |
||
190行目: | 122行目: | ||
{{ic|pwm1_enable}} は 0, 1, 2 に設定できます。それぞれ NONE, MANUAL, AUTO を意味します。ファン制御を手動で設定する場合、{{ic|pwm1}} を設定する必要があります。例えば 40 にすれば速度が 40% になります。 |
{{ic|pwm1_enable}} は 0, 1, 2 に設定できます。それぞれ NONE, MANUAL, AUTO を意味します。ファン制御を手動で設定する場合、{{ic|pwm1}} を設定する必要があります。例えば 40 にすれば速度が 40% になります。 |
||
+ | |||
+ | {{Warning|設定は自己責任です。カードを過熱しすぎないように注意してください。}} |
||
udev ルールを使って設定することもできます: |
udev ルールを使って設定することもできます: |
||
196行目: | 130行目: | ||
ソース: |
ソース: |
||
− | * |
+ | * https://floppym.blogspot.de/2013/07/fan-control-with-nouveau.html |
− | * https://kalgan.cc/blog/posts/Controlling_nVidia_cards_fans_with_nouveau_in_Debian/ |
+ | * https://web.archive.org/web/20141031191559/https://kalgan.cc/blog/posts/Controlling_nVidia_cards_fans_with_nouveau_in_Debian/ |
=== Optimus === |
=== Optimus === |
||
− | ラップトップで [[NVIDIA Optimus|Optimus]] (ラップトップに2つの GPU を載せているハイブリッドグラフィック) を使う方法は2つあります: [[bumblebee]] と [[PRIME]] |
+ | ラップトップで [[NVIDIA Optimus|Optimus]] (ラップトップに2つの GPU を載せている場合はハイブリッドグラフィック) を使う方法は2つあります: [[bumblebee]] と [[PRIME]] |
=== 垂直同期 === |
=== 垂直同期 === |
||
Xorg コンポジタは Nouveau で問題が起きやすくなっています。他のコンポジタと異なり、[[Picom]] はちらつきを起こさないようにするためのオプションが多数存在します。上手く動作する設定例: |
Xorg コンポジタは Nouveau で問題が起きやすくなっています。他のコンポジタと異なり、[[Picom]] はちらつきを起こさないようにするためのオプションが多数存在します。上手く動作する設定例: |
||
+ | |||
− | picom -b --paint-on-overlay --unredir-if-possible --backend xr_glx_hybrid --vsync drm --glx-swap-method -1 --glx-no-stencil |
||
+ | $ picom -b --unredir-if-possible --backend xr_glx_hybrid --vsync --use-damage --glx-no-stencil |
||
+ | |||
{{Tip|コンポジタを使う場合、デスクトップ環境のウィンドウマネージャ (KWin など) のコンポジット機能をオフにしてください。}} |
{{Tip|コンポジタを使う場合、デスクトップ環境のウィンドウマネージャ (KWin など) のコンポジット機能をオフにしてください。}} |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
+ | |||
{{ic|1=drm.debug=14}} や {{ic|1=log_buf_len=16M}} を[[カーネルパラメータ]]に追加してビデオデバッグを有効にしてください。 |
{{ic|1=drm.debug=14}} や {{ic|1=log_buf_len=16M}} を[[カーネルパラメータ]]に追加してビデオデバッグを有効にしてください。 |
||
218行目: | 155行目: | ||
$ modinfo -p video |
$ modinfo -p video |
||
− | ===MSI の無効化=== |
+ | === MSI の無効化 === |
+ | |||
モジュールがロードされなかったり X サーバーが起動しない場合、[[カーネルパラメータ]]に {{ic|1=nouveau.config=NvMSI=0}} を追加してみてください。 |
モジュールがロードされなかったり X サーバーが起動しない場合、[[カーネルパラメータ]]に {{ic|1=nouveau.config=NvMSI=0}} を追加してみてください。 |
||
ソース: https://bugs.freedesktop.org/show_bug.cgi?id=78441 |
ソース: https://bugs.freedesktop.org/show_bug.cgi?id=78441 |
||
− | ===間違った出力端子が検出される問題=== |
+ | === 間違った出力端子が検出される問題 === |
nouveau ドライバーでは"幻影"の出力端子が検出されることがあります。例えば、LVDS-1 しか存在しないのに VGA-1 と LVDS-1 が接続されていると表示されることがあります。 |
nouveau ドライバーでは"幻影"の出力端子が検出されることがあります。例えば、LVDS-1 しか存在しないのに VGA-1 と LVDS-1 が接続されていると表示されることがあります。 |
||
231行目: | 169行目: | ||
==== カーネルパラメータ ==== |
==== カーネルパラメータ ==== |
||
− | ブートローダーのカーネル |
+ | ブートローダーの[[カーネルパラメータ]]で問題の出力端子 (以下の例では VGA-1) を無効化することで解決できます。以下のように追加してください: |
video=VGA-1:d |
video=VGA-1:d |
||
237行目: | 175行目: | ||
'''d''' = disable です。 |
'''d''' = disable です。 |
||
− | nouveau カーネルモジュールには TV 出力の検知を無効化するオプションがあります: |
+ | nouveau カーネルモジュールには TV 出力の検知を無効化するオプションがあります[https://nouveau.freedesktop.org/wiki/KernelModuleParameters/#tv_disable]: |
+ | |||
tv_disable = 1 |
tv_disable = 1 |
||
==== Xorg の設定 ==== |
==== Xorg の設定 ==== |
||
+ | |||
{{ic|/etc/X11/xorg.conf.d/20-nouveau.conf}} に以下を追加することで [[Xorg]] で幻影の出力端子を無効化することもできます: |
{{ic|/etc/X11/xorg.conf.d/20-nouveau.conf}} に以下を追加することで [[Xorg]] で幻影の出力端子を無効化することもできます: |
||
248行目: | 188行目: | ||
EndSection |
EndSection |
||
− | ソース: http://gentoo-en.vfose.ru/wiki/Nouveau#Phantom_and_unpopulated_output_connector_issues |
+ | ソース: https://web.archive.org/web/20170118202740/http://gentoo-en.vfose.ru/wiki/Nouveau#Phantom_and_unpopulated_output_connector_issues |
− | ==== Xrandr |
+ | ==== Xrandr ==== |
− | [[Xrandr]] で |
+ | [[Xrandr]] で出力端子を無効化することができます: |
− | $ xrandr --output VGA-1 --off |
||
+ | $ xrandr --output VGA-1 --off |
||
− | {{Tip|この設定を [[xinit]] に記述することもできます。}} |
||
+ | この設定を [[xinit]] に記述することもできます。 |
||
− | ===カーネルのエラーメッセージを吐いてフリーズする=== |
||
+ | === カーネルのエラーメッセージを吐いてランダムにフリーズする === |
||
− | 特定の Nvidia チップを Nouveau で使用するとシステムがランダムにフリーズして大量のカーネルメッセージを吐くことがあります。メッセージは ''dmesg'' で確認できます。その場合、{{ic|1=nouveau.noaccel=1}} [[カーネルパラメータ]]を追加してみてください。詳しくは [https://fedoraproject.org/wiki/Common_kernel_problems#Systems_with_nVidia_adapters_using_the_nouveau_driver_lock_up_randomly] を参照。 |
||
+ | |||
+ | 特定の Nvidia チップを Nouveau で使用するとシステムがランダムにフリーズして大量のカーネルメッセージを吐くことがあります。メッセージは ''dmesg'' で確認できます。その場合、{{ic|1=nouveau.noaccel=1}} [[カーネルパラメータ]]を追加してみてください。詳しくは [[Fedora:Common kernel problems#Systems with nVidia adapters using the nouveau driver lock up randomly]] を参照。 |
||
{{ic|1=QT_XCB_FORCE_SOFTWARE_OPENGL=1}} [[環境変数]]を使って Qt アプリケーションの OpenGL アクセラレーションを無効化するという方法もあります。 |
{{ic|1=QT_XCB_FORCE_SOFTWARE_OPENGL=1}} [[環境変数]]を使って Qt アプリケーションの OpenGL アクセラレーションを無効化するという方法もあります。 |
||
− | ===Flat Panel Table Invalid=== |
+ | === Flat Panel Table Invalid === |
最新のチップセットを使用する NVIDIA グラフィックカードは起動時に問題を起こすことがあります。例えば X11 が起動しなかったり lspci が永遠にフリーズします [https://bugzilla.redhat.com/show_bug.cgi?id=1425253][https://bbs.archlinux.org/viewtopic.php?id=192532][https://stackoverflow.com/questions/28062458/nouveau-error-while-booting-arch][https://bbs.archlinux.org/viewtopic.php?id=207602][https://unix.stackexchange.com/questions/207895/how-do-i-install-antergos-with-a-gtx-970]。 |
最新のチップセットを使用する NVIDIA グラフィックカードは起動時に問題を起こすことがあります。例えば X11 が起動しなかったり lspci が永遠にフリーズします [https://bugzilla.redhat.com/show_bug.cgi?id=1425253][https://bbs.archlinux.org/viewtopic.php?id=192532][https://stackoverflow.com/questions/28062458/nouveau-error-while-booting-arch][https://bbs.archlinux.org/viewtopic.php?id=207602][https://unix.stackexchange.com/questions/207895/how-do-i-install-antergos-with-a-gtx-970]。 |
||
279行目: | 220行目: | ||
modprobe nouveau |
modprobe nouveau |
||
+ | これでシステムが正しく動作するはずです。 |
||
− | 他の Nvidia グラフィックカードを持っていて、問題のカードを無効化したい場合: |
||
+ | 他の Nvidia グラフィックカードを持っていて、念の為に問題のカードを無効化したい場合: |
||
$ echo 1 > /sys/bus/pci/devices/[card device id]/remove |
$ echo 1 > /sys/bus/pci/devices/[card device id]/remove |
||
− | |||
− | [[NVIDIA]] のプロプライエタリドライバーはいまのところ問題なく動作します (バージョン 381)。 |
2022年7月21日 (木) 22:35時点における版
この記事では NVIDIA カードのオープンソースドライバー Nouveau のインストールと設定を説明しています。プロプライエタリドライバーの情報は NVIDIA を見てください。
使用中のカードのコードネームを見つけてください(より詳細なリストは Wikipedia にあります)。サポートされている機能の feature matrix と比較してください。
インストール
mesa パッケージをインストールしてください。これは 3D アクセラレーションのための DRI ドライバを提供します。
- 32ビットアクセラレーションサポートが必要な場合は、multilib リポジトリから lib32-mesa パッケージもインストールしてください。
- (Xorg で 2D アクセラレーションを提供する) DDX ドライバが必要な場合、xf86-video-nouveau パッケージをインストールしてください。
ハードウェアビデオアクセラレーション も見てください。
ロード
システムの起動時に Nouveau のカーネルモジュールは自動的にロードされるはずです。ロードされない場合は:
- カーネルパラメータに
nomodeset
やvga=
を設定していないことを確認してください。Nouveau はカーネルモードセッティングを要求します。 - また、
/etc/modprobe.d/
や/usr/lib/modprobe.d/
の中で modprobe のブラックリストによって Nouveau が無効になっていないことを確認してください。 - 上記全てを確認しても nouveau がロードされない場合は dmesg で opcode エラーが起こってないか確認してください。
nouveau.config=NvBios=PRAMIN
をカーネルパラメータに追加することでモジュールのアンロードを防ぐことができます [1]。 /etc/X11/xorg.conf
が存在し、nvidia
ドライバを参照しているかどうかを確認してください。おそらく、このファイルの名前を変更したほうが良いでしょう。
早期 KMS を有効化する
Nouveau ドライバーを使うには Kernel Mode Setting (KMS) が必要です。デフォルトで、他のカーネルモジュールがロードされた後に KMS が行われます。"Loading modules" というテキスト表示され、テキストの大きさが変化するでしょう。ちらつきが発生するかもしれません。詳細は Nouveau KernelModeSetting のページ を見て下さい。
initramfs がロードされた時に、ブートプロセス中の可能な限り早い段階で KMS を起動させることもできます。
nouveau
を /etc/mkinitcpio.conf
の MODULES
行に追加して下さい(モジュールの名前は半角スペースで区切られます):
MODULES=(... nouveau ...)
カスタム EDID ファイルを使っている場合、同じように initramfs に埋め込む必要があります:
/etc/mkinitcpio.conf
FILES="/lib/firmware/edid/your_edid.bin"
最後に Initramfs を再生成してください。
ヒントとテクニック
NVIDIA ドライバーをインストールしたままにしておく
プロプライエタリの NVIDIA ドライバーをインストールしたままにしておきたいが、Nouveau ドライバーも使いたい(そして OpenGL を使用していない)場合、/etc/modprobe.d/nouveau_blacklist.conf
や /usr/lib/modprobe.d/nvidia.conf
、/usr/lib/modprobe.d/nvidia-dkms.conf
内の nouveau のブラックリストを以下のように修正してコメントアウトしてください:
#blacklist nouveau
そして以下の内容で /etc/X11/xorg.conf.d/20-nouveau.conf
ファイルを作成して Xorg に nvidia の代わりに nouveau をロードするよう指定してください:
Section "Device" Identifier "Nvidia card" Driver "nouveau" EndSection
既に NVIDIA ドライバーを使用していて、再起動せずに Nouveau をテストしたい場合、'nvidia' モジュールをアンロードしてください:
# rmmod nvidia
次に 'nouveau' モジュールをロードしてください:
# modprobe nouveau
そしてカーネルメッセージを見て正しくロードされていることを確認してください:
# dmesg
最新の開発パッケージをインストールする
最新の Nouveau の改善を得るには:
- linux-gitAUR PKGBUILD で、パッケージをゼロから作成せずに https://github.com/skeggsb/linux/ の Nouveau ツリーを使用できます。
- libdrm-gitAUR
- lib32-libdrm-gitAUR
- lib32-mesa-gitAUR
- mesa-gitAUR
- xf86-video-nouveau-gitAUR
デュアルディスプレイ
RandR を使用してマルチモニタのセットアップする方法は マルチディスプレイ#RandR を見てください。
コンソールの解像度を設定する
video=
カーネルラインオプションを使うことで nouveau に解像度を渡すことができます(Kernel Mode Setting を参照してください)。
電源管理
nouveau ドライバーには正しい電源管理機能が実装されていないため、グラフィックカードの周波数は低い状態でロックされてパフォーマンスが思うほど出ない場合があります。カードによっては GPU のオーバークロックが実験的にサポートされています (Nouveau の電源管理についてのページ を見てください)。カーネル 4.5 から /sys/kernel/debug/dri/*/pstate
の debugfs インターフェイスを使って制御できるようになっています。
例えば、システム上の1番目のカードで利用可能な電源状態と現在の設定を確認するには、以下を実行してください:
# cat /sys/kernel/debug/dri/0/pstate
インターフェイスに書き込むことで特定の電源状態を手動で設定/強制することもできます:
# echo pstate > /sys/kernel/debug/dri/0/pstate
ファンの制御
カードで実装されていれば、/sys
を使ってファンの制御を設定できます:
$ find /sys -name pwm1_enable /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon1/pwm1_enable $ readlink /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/driver ../../../../bus/pci/drivers/nouveau
pwm1_enable
は 0, 1, 2 に設定できます。それぞれ NONE, MANUAL, AUTO を意味します。ファン制御を手動で設定する場合、pwm1
を設定する必要があります。例えば 40 にすれば速度が 40% になります。
udev ルールを使って設定することもできます:
$ cat /etc/udev/rules.d/50-nouveau-hwmon.rules ACTION=="add", SUBSYSTEM=="hwmon", DRIVERS=="nouveau", ATTR{pwm1_enable}="2"
ソース:
- https://floppym.blogspot.de/2013/07/fan-control-with-nouveau.html
- https://web.archive.org/web/20141031191559/https://kalgan.cc/blog/posts/Controlling_nVidia_cards_fans_with_nouveau_in_Debian/
Optimus
ラップトップで Optimus (ラップトップに2つの GPU を載せている場合はハイブリッドグラフィック) を使う方法は2つあります: bumblebee と PRIME
垂直同期
Xorg コンポジタは Nouveau で問題が起きやすくなっています。他のコンポジタと異なり、Picom はちらつきを起こさないようにするためのオプションが多数存在します。上手く動作する設定例:
$ picom -b --unredir-if-possible --backend xr_glx_hybrid --vsync --use-damage --glx-no-stencil
トラブルシューティング
drm.debug=14
や log_buf_len=16M
をカーネルパラメータに追加してビデオデバッグを有効にしてください。
Xorg の詳細ログを作成する:
$ startx -- -logverbose 9 -verbose 9
ロードされているビデオモジュールのパラメータと値を見る:
$ modinfo -p video
MSI の無効化
モジュールがロードされなかったり X サーバーが起動しない場合、カーネルパラメータに nouveau.config=NvMSI=0
を追加してみてください。
ソース: https://bugs.freedesktop.org/show_bug.cgi?id=78441
間違った出力端子が検出される問題
nouveau ドライバーでは"幻影"の出力端子が検出されることがあります。例えば、LVDS-1 しか存在しないのに VGA-1 と LVDS-1 が接続されていると表示されることがあります。
ディスプレイに影響して画面が崩れたり、ノートパソコンで蓋を閉じた時にスリープされない問題が生じます。
カーネルパラメータ
ブートローダーのカーネルパラメータで問題の出力端子 (以下の例では VGA-1) を無効化することで解決できます。以下のように追加してください:
video=VGA-1:d
d = disable です。
nouveau カーネルモジュールには TV 出力の検知を無効化するオプションがあります[2]:
tv_disable = 1
Xorg の設定
/etc/X11/xorg.conf.d/20-nouveau.conf
に以下を追加することで Xorg で幻影の出力端子を無効化することもできます:
Section "Monitor" Identifier "VGA-1" Option "Ignore" "1" EndSection
Xrandr
Xrandr で出力端子を無効化することができます:
$ xrandr --output VGA-1 --off
この設定を xinit に記述することもできます。
カーネルのエラーメッセージを吐いてランダムにフリーズする
特定の Nvidia チップを Nouveau で使用するとシステムがランダムにフリーズして大量のカーネルメッセージを吐くことがあります。メッセージは dmesg で確認できます。その場合、nouveau.noaccel=1
カーネルパラメータを追加してみてください。詳しくは Fedora:Common kernel problems#Systems with nVidia adapters using the nouveau driver lock up randomly を参照。
QT_XCB_FORCE_SOFTWARE_OPENGL=1
環境変数を使って Qt アプリケーションの OpenGL アクセラレーションを無効化するという方法もあります。
Flat Panel Table Invalid
最新のチップセットを使用する NVIDIA グラフィックカードは起動時に問題を起こすことがあります。例えば X11 が起動しなかったり lspci が永遠にフリーズします [3][4][5][6][7]。
ライブディストリビューションやインストールメディアが壊れることもあります。問題は lspci を実行するか systemd のジャーナルをチェックすることで確認できます:
nouveau E[ DRM]Pointer to flat panel table invalid
以下のカーネルパラメータを使って Nouveau ドライバーを無効化することで起動するようになるかもしれません:
modprobe.blacklist=nouveau
起動したら以下のコマンドで Nouveau ドライバーをロードしてください:
modprobe nouveau
これでシステムが正しく動作するはずです。 他の Nvidia グラフィックカードを持っていて、念の為に問題のカードを無効化したい場合:
$ echo 1 > /sys/bus/pci/devices/[card device id]/remove