私のシステムには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に別の座席を持つ複数の座席構成を楽しむことができます。