カーネルモジュールのビデオドライバが特定のグラフィックカードデバイスを検出できないようにする方法

カーネルモジュールのビデオドライバが特定のグラフィックカードデバイスを検出できないようにする方法

私のシステムには2つのNvidiaカードがあります。私が達成したいのは、1つのカードがnouveauドライバによって駆動され、もう1つのカードがnvidia公式のblobドライバによって駆動されることです。

特定のnvidiaドライバオプション "nvidia_340.NVreg_AssignGpus = 0:02:00"を使用して起動時にnvidiaドライバが自動的に起動すると、両方のドライバが正常に共存します。ドライバが特定のデバイスのみを検出できるようにし、nouveauドライバの手動起動を使用して他の未modprobe使用デバイスを検出します。

nouveau起動時に両方のモジュールをロードしてそれを自動化したいのですが、まだ両方のグラフィックカードのうちの1つだけをスキャンするようにドライバに指示していません。モジュールのロード順序は未定義のようです。 nouveauモジュールがnvidiaモジュールの前にロードされると、両方のモジュールが調査され、公式のnvidiaが他のモジュールにアクセスするのを防ぎます。

起動ステップ(nvidiaモジュールをロードした後は正常に動作します)中にsystemdサービスタスクを実行できることを知っていますが、modprobe nouveauこれを行うより良い方法があることを願っています。考えはしてみましたが、udev知っていることがあまりないので、この道が合うかどうかはよくわかりません。

この問題を処理する正しい方法は何ですか?

答え1

だから解決策を見つけるのは簡単ではありませんでしたが、解決策自体は驚くほど簡単でした。

installアイデアは、設定ファイルでこのディレクティブを使用して、/etc/modprobe.d/nvidiaドライバがmodprobeを介して実行される方法を上書きすることです。ファイルに以下を設定しました/etc/modprobe.d/nvidia-with-nouveau.conf

install nvidia_340 /sbin/modprobe --ignore-install nvidia_340; /sbin/modprobe nouveau

nvidiaモジュールを起動する方法をカーネルに指示します(私のモジュールは340です)。このコマンドを使用すると、最初にnvidiaを起動してから、nouveauを起動するように指示します。--ignore-installカーネルがnvidiaモジュールを起動するためにインストールコマンドを再利用するのを防ぐ必要があります。これはある種の無限ループを引き起こす可能性があると思います。

install設定ファイルで利用可能な他のディレクティブは/etc/modprobe.dでよく説明されていますman modprode.d

ヌーボードライバーが自分で起動しないようにブラックリストに保存することが重要です。 Ubuntuでは、Nvidiaドライバは、公式のUbuntuリポジトリのdebパッケージを介してインストールすると、インストールファイルを介してnouveauモジュールをブラックリストに追加します/etc/modprobe.d/nvidia-340_hybrid.conf (この方法は私にはうまくいきましたが、他のオペレーティングシステムとドライバのバージョンでは異なる場合があります)。

ファイルには次の内容が含まれています。

blacklist nouveau
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

次の行はnouveauのエイリアスを生成し、コメントアウトする必要がありoffます。

#alias nouveau off
#alias lbm-nouveau off

最後に、これらの変更を考慮してinitramfsを更新する必要があると思います。

sudo update-initramfs -u

これで、nouveauにある座席、nvidia-driverに別の座席を持つ複数の座席構成を楽しむことができます。

関連情報