GPUドライバは*実際に* Linuxでどのように機能しますか?

GPUドライバは*実際に* Linuxでどのように機能しますか?

注:私の考えではしなければならないディストリビューションとは関係ありませんが、そうであれば、KDE ​​Plasma 5とSDDMでArch Linuxを使用しています。

短く保ち、絶対に関連する詳細だけを維持しようとします。

Arch Linuxを新しくインストールし、Optimus / Prime機能用にBumblebeeを設定したいと思います(Optimus Notebook - Asus X550Vがあります)。 Bumblebeeを使用するといくつかの問題があり、次の実験でこれを解決しながらxorgとグラフィックドライバがどのように機能するかをまだ理解していないことに気づきました。考えるハイブリッドグラフィックカードの多重化なしのソリューションがあります。少なくともBIOSでアクティブカードを変更することはできません。

私が考える仕組み:

1) 専用ドライバがインストールされていない場合、システムはデフォルトで intel を使用して intel ドライバと nouveau ドライバの両方をロードし、DRI_PRIME=1 をコマンドに渡すと nouveau をロードします。

2) 専用ドライバがインストールされている場合、xorg 設定がここで説明されているように設定されていないと、システムはそのドライバをロードしません。https://wiki.archlinux.org/index.php/NVIDIA_Optimus- 「Nvidiaの使用」セクション)。

3) 専用ドライバがインストールされ、正しいxorg設定が設定されている場合、システムはnvidiaドライバとnvidia GPUを使用しようとしますが、nvidia GPUがモニタに接続されていないため、黒い画面が表示されます。 - ~/ xorgにアンインストールを使用するように指示するには、ディスプレイマネージャ構成ファイルに.xinitrc(startxを使用している場合)または2つのxrandr行が必要です。

実際に起こるもの:

Bumblebeeの問題を調査するために、nvidiaまたはbumblebeeに関連するすべてのものを削除し、nvidiaドライバのみをインストールしました。

驚いたことに、起動時にSDDMは表示されませんでした。無料のttyに切り替えてsddmを終了し(sudo systemctl stop sddm)、startxを使用しました(.xinitrcはexec startkdeに設定されましたが、いいえ2つのxrandrラインを含む)。驚いたことに(もう一度)KDEが始まりました。私のフォントは小さいか解像度が低いようですが、それ以外は大丈夫です。 glxinfo | grep NVIDIAは私がnvidiaを使用していることを確認します。

その後、2つのxrandr行を/usr/share/sddm/scripts/Xsetupに追加し、SDDMが問題なく起動し、Plasmaにログインできました。フォントはまだ不都合ですが、nvidiaでは動作します。

質問:

  • xorg.confファイルがまったくないのに、システムがNvidiaドライバを使用するのはなぜですか? (xorg.conf.dも空白で、キーボードファイルを保存します。)デフォルトでNvidiaドライバを使用すると、なぜどこでも(Arch Wiki、Nvidiaドキュメント)nvidiaドライバ用のxorg.confファイルを生成するように求められます(必要な場合)それを書く?さらに重要なのは、Bumblebeeをインストールした後にシステムが基本的にIntelを使用するのはなぜですか? /etc/X11 フォルダはどちらの場合も同じ内容を持ちます。いいえxorg.confファイル。あるいは、組み込み PRIME アプレットを使用する場合、Ubuntu でも同じことが起こります。 NVIDIAに切り替えるとxorg.confファイルが使用されますが、Intelを使用するとxorg.confは無効になります。それでは、なぜNVIDIAを使用しないのですか?私の場合はNVIDIAを使用していますが、xorg に NVIDIA を使用するよう指示する xorg.conf ファイルはありません。

  • NVIDIAでプラズマを実行できますが、startxにxrandrラインがないのはなぜですか? SDDMにのみ問題があります。 startxを使用して実行できます。この行が存在する場合にのみ削除を実行する必要があると思いますか?

答え1

仕組みは、対応するディストリビューションによって異なります。説明する実際の動作はほとんどのディストリビューションと一致しますが、Gentoo(専用ドライバをロードするにはカーネルドライバを手動でブラックリストに追加する必要があります)などの奇妙な場合があります。ここではこれを行いません。

についてはなぜどのように機能するかは、最新のXサーバーが言及した構成ファイルなしでほとんどの項目を自動的に正しく検出することです。実際、現在のベストプラクティスは明示的にいいえ自動検出で設定が正しく機能しない限り、これらのプロファイルを保持してください。したがって、周辺ハードウェアを変更しても(たとえば、他のグラフィックカードの取り付けなど)、X構成は破損しません。多くの文書がまだこれについて扱っていないことにも注目する価値があり、Archは特に望ましい動作を得るためにこれらのファイルを持つことをお勧めします(最善の選択肢でもそうでないかもしれません)。ここで重要なのは

これは次の質問を提起します。なぜカーネルがnouveauの代わりに排他的なドライバをロードしているのですか?正確な設定に関する多くの情報がないと何が起こるのか正確には言えませんが、Archの現在の動作はほとんどのディストリビューションと一致し、Not nouveauよりも独自のドライバを好むと確信しています。このような場合を考えると、ブートローダのカーネルコマンドラインに以下を追加して、nouveauを強制的に使用することができます。

modules_blacklist=nvidia

これにより、独自のドライバがロードされるのを防ぐことができます(同様のツールを使用して明示的に指示する場合でもmodprobe -f)、これによりnouveauがロードされます。

関連情報