Nouveau

提供: ArchWiki
2022年11月30日 (水) 14:36時点におけるAshMyzk (トーク | 投稿記録)による版 ("feature matrix" => "機能表")
ナビゲーションに移動 検索に移動

関連記事

この記事では NVIDIA カードのオープンソースドライバー Nouveau のインストールと設定を説明しています。プロプライエタリドライバーの情報は NVIDIA を見てください。

使用中のカードのコードネームを見つけてください(より詳細なリストは Wikipedia にあります)。サポートされている機能の機能表と比較してください。

インストール

mesa パッケージをインストールしてください。これは 3D アクセラレーションのための DRI ドライバを提供します。

  • 32ビットアクセラレーションサポートが必要な場合は、multilib リポジトリから lib32-mesa パッケージもインストールしてください。
  • (Xorg で 2D アクセラレーションを提供する) DDX ドライバが必要な場合、xf86-video-nouveau パッケージをインストールしてください。

ハードウェアビデオアクセラレーション も見てください。

ロード

システムの起動時に Nouveau のカーネルモジュールは自動的にロードされるはずです。ロードされない場合は:

  • カーネルパラメータnomodesetvga= を設定していないことを確認してください。Nouveau はカーネルモードセッティングを要求します。
  • また、/etc/modprobe.d//usr/lib/modprobe.d/ の中で modprobe のブラックリストによって Nouveau が無効になっていないことを確認してください。
  • 上記全てを確認しても nouveau がロードされない場合は dmesg で opcode エラーが起こってないか確認してください。nouveau.config=NvBios=PRAMINカーネルパラメータに追加することでモジュールのアンロードを防ぐことができます [1]
  • /etc/X11/xorg.conf が存在し、nvidia ドライバを参照しているかどうかを確認してください。おそらく、このファイルの名前を変更したほうが良いでしょう。

早期 KMS を有効化する

ヒント: 解像度に問題がある場合、Kernel Mode Setting#モードの強制と EDID をチェックしてください。

Nouveau ドライバーを使うには Kernel Mode Setting (KMS) が必要です。デフォルトで、他のカーネルモジュールがロードされた後に KMS が行われます。"Loading modules" というテキスト表示され、テキストの大きさが変化するでしょう。ちらつきが発生するかもしれません。詳細は Nouveau KernelModeSetting のページ を見て下さい。

initramfs がロードされた時に、ブートプロセス中の可能な限り早い段階で KMS を起動させることもできます。

nouveau/etc/mkinitcpio.confMODULES 行に追加して下さい(モジュールの名前は半角スペースで区切られます):

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 の改善を得るには:

デュアルディスプレイ

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"

ソース:

Optimus

ラップトップで Optimus (ラップトップに2つの GPU を載せている場合はハイブリッドグラフィック) を使う方法は2つあります: bumblebeePRIME

垂直同期

Xorg コンポジタは Nouveau で問題が起きやすくなっています。他のコンポジタと異なり、Picom はちらつきを起こさないようにするためのオプションが多数存在します。上手く動作する設定例:

$ picom -b --unredir-if-possible --backend xr_glx_hybrid --vsync --use-damage --glx-no-stencil
ヒント: コンポジタを使う場合、デスクトップ環境のウィンドウマネージャ (KWin など) のコンポジット機能をオフにしてください。

トラブルシューティング

drm.debug=14log_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

ソース: https://web.archive.org/web/20170118202740/http://gentoo-en.vfose.ru/wiki/Nouveau#Phantom_and_unpopulated_output_connector_issues

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
翻訳ステータス: このページは en:Nouveau の翻訳バージョンです。最後の翻訳日は 2022-11-30 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。