Proxmox VE 8 PCI/PCIE パススルーの重要な調整、修正、および回避策

Proxmox Ve 8 Pci Pcie Pasusuruno Zhong Yaona Diao Zheng Xiu Zheng Oyobi Hui Bi Ce



近年、新しいハードウェアでは PCI/PCIE (つまり GPU パススルー) のサポートが大幅に改善されました。それで、通常の Proxmox VE PCI/PCIE および GPU パススルー ガイド ほとんどの新しいハードウェアで動作するはずです。それでも、Proxmox VE 仮想マシン上の GPU やその他の PCI/PCIE デバイスを通過する際に、多くの問題に直面する可能性があります。 Proxmox VE GPU および PCI/PCIE パススルーに関する一般的な問題の一部には、多くの調整/修正/回避策があります。

この記事では、Proxmox VE PCI/PCIE パススルーおよび GPU パススルーに関する最も一般的な問題のいくつかと、それらの問題を解決するために実行できる手順について説明します。









目次

  1. IOMMU 割り込み再マッピングがサポートされていない場合はどうすればよいですか?
  2. 私の GPU (または PCI/PCIE デバイス) が独自の IOMMU グループに属していない場合はどうすればよいですか?
  3. Proxmox VE で AMD GPU ドライバーをブラックリストに登録するにはどうすればよいですか?
  4. Proxmox VE で NVIDIA GPU ドライバーをブラックリストに登録するにはどうすればよいですか?
  5. Proxmox VE で Intel GPU ドライバーをブラックリストに登録するにはどうすればよいですか?
  6. GPU (または PCI/PCIE デバイス) が Proxmox VE で VFIO ドライバーを使用しているかどうかを確認するにはどうすればよいですか?
  7. AMU GPU ドライバーをブラックリストに登録しましたが、それでも GPU は VFIO ドライバーを使用しません。どうすればよいですか?
  8. NVIDIA GPU ドライバーをブラックリストに登録しましたが、それでも GPU は VFIO ドライバーを使用しません。どうすればよいですか?
  9. Intel GPU ドライバーをブラックリストに登録しましたが、それでも GPU は VFIO ドライバーを使用しません。どうすればよいですか?
  10. 単一の GPU では VFIO ドライバーが使用されましたが、2 番目の GPU を構成すると機能しませんでした。なぜですか?
  11. GPU の VGA アービトレーションを無効にする理由とその方法
  12. VFIO を構成した後でも GPU がまだ VFIO ドライバーを使用していない場合はどうすればよいですか?
  13. GPU パススルーではエラーは表示されませんでしたが、Proxmox VE VM に渡された GPU に接続されているモニターに黒い画面が表示されます。なぜですか?
  14. AMDベンダーリセットバグとは何ですか?そしてその解決方法は何ですか?
  15. Proxmox VE 仮想マシン上で渡された GPU に vBIOS を提供するにはどうすればよいですか?
  16. 一部のアプリが Proxmox VE Windows 仮想マシンをクラッシュさせた場合はどうすればよいですか?
  17. Proxmox VE Linux 仮想マシンでの HDMI オーディオの音割れ/壊れた問題を解決する方法。
  18. Proxmox VE initramfs を更新するにはどうすればよいですか?
  19. Proxmox VE GRUB ブートローダーを更新するにはどうすればよいですか?
  20. 結論
  21. 参考文献



IOMMU 割り込み再マッピングがサポートされていない場合はどうすればよいですか?

PCI/PCIE パススルーの場合、IOMMU 割り込みの再マッピングは不可欠です。





プロセッサーが IOMMU 割り込み再マッピングをサポートしているかどうかを確認するには、以下のコマンドを実行します。

$ dmesg | grep -i 再マップ



プロセッサーが IOMMU 割り込み再マッピングをサポートしている場合は、割り込み再マッピングが有効であることを確認する何らかの出力が表示されます。それ以外の場合、出力は表示されません。

IOMMU 割り込みの再マッピングがプロセッサーでサポートされていない場合は、Proxmox VE 仮想マシン上の PCI/PCIE デバイスをパススルーするように、Proxmox VE サーバー上で安全でない割り込みを構成する必要があります。

Proxmox VE で安全でない割り込みを構成するには、新しいファイルを作成します iommu_unsafe_interrupts.conf の中に /etc/modprobe.d ディレクトリを開き、次のように nano テキスト エディタで開きます。

$ nano /etc/modprobe.d/iommu_unsafe_interrupts.conf

次の行を iommu_unsafe_interrupts.conf ファイルして押します + バツ に続く そして そして <入力> ファイルを保存します。

オプション vfio_iommu_type1allow_unsafe_interrupts=1

完了したら、次のことを行う必要があります Proxmox VE サーバーの initramfs を更新します

私の GPU (または PCI/PCIE デバイス) が独自の IOMMU グループに属していない場合はどうすればよいですか?

サーバーに複数の PCI/PCIE スロットがある場合は、GPU を別の PCI/PCIE スロットに移動し、GPU が独自の IOMMU グループにあるかどうかを確認できます。

これが機能しない場合は、Proxmox VE で ACS オーバーライド カーネル パッチを有効にしてみてください。

Proxmox VE で ACS オーバーライド カーネル パッチを有効にしてみるには、 /etc/default/grub nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/default/grub

カーネルブートオプションを追加する pcie_acs_override=ダウンストリーム の終わりに GRUB_CMDLINE_LINUX_DEFAULT

完了したら、 を押します + バツ に続く そして そして <入力> ファイルを保存して、必ず Proxmox VE GRUB ブートローダーを更新する 変更が有効になるまで。

Proxmox VE サーバーが起動すると、IOMMU のグループ化が改善されるはずです。

GPU にまだ独自の IOMMU グループがない場合は、次のステップを実行できます。 pcie_acs_override=ダウンストリーム、多機能 その代わり。 IOMMU のグループ化がさらに適切になるはずです。

もし pcie_acs_override=ダウンストリーム、多機能 その結果、IOMMU のグループ化が改善され、 pcie_acs_override=ダウンストリーム では、なぜ使用するのか pcie_acs_override=ダウンストリーム まったく?

PCIE ACS オーバーライドの目的は、カーネルをだまして、PCIE デバイスが実際には分離されていないのに分離されていると思わせることです。そのため、PCIE ACS オーバーライドにはセキュリティと安定性の問題が伴います。そのため、あまり積極的ではない PCIE ACS オーバーライド オプションを使用してみる必要があります。 pcie_acs_override=ダウンストリーム まず問題が解決したかどうかを確認してください。もし pcie_acs_override=ダウンストリーム は機能しません。その場合のみ、より積極的なオプションを使用する必要があります pcie_acs_override=ダウンストリーム、多機能

Proxmox VE で AMD GPU ドライバーをブラックリストに登録するにはどうすればよいですか?

Proxmox VE 仮想マシン上で AMD GPU をパススルーする場合は、AMD GPU ドライバーをブラックリストに登録し、代わりに VFIO ドライバーを使用するようにする必要があります。

まず、 /etc/modprobe.d/blacklist.conf nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/modprobe.d/blacklist.conf

AMD GPU ドライバーをブラックリストに登録するには、次の行を /etc/modprobe.d/blacklist.conf ファイルして押します + バツ に続く そして そして <入力> ファイルを保存します。

ブラックリストのラデオン

ブラックリストamdgpu

完了したら、次のことを行う必要があります Proxmox VE サーバーの initramfs を更新します 変更が有効になるまで。

Proxmox VE で NVIDIA GPU ドライバーをブラックリストに登録するにはどうすればよいですか?

Proxmox VE 仮想マシン上で NVIDIA GPU をパススルーする場合は、NVIDIA GPU ドライバーをブラックリストに登録し、代わりに VFIO ドライバーを使用するようにする必要があります。

まず、 /etc/modprobe.d/blacklist.conf nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/modprobe.d/blacklist.conf

NVIDIA GPU ドライバーをブラックリストに登録するには、次の行を /etc/modprobe.d/blacklist.conf ファイルして押します + バツ に続く そして そして <入力> ファイルを保存します。

ブラックリストヌーボー

ブラックリストNVIDIA

ブラックリストnvidiafb

nvidia_drm のブラックリスト

完了したら、次のことを行う必要があります Proxmox VE サーバーの initramfs を更新します 変更が有効になるまで。

Proxmox VE で Intel GPU ドライバーをブラックリストに登録するにはどうすればよいですか?

Proxmox VE 仮想マシン上で Intel GPU をパススルーする場合は、Intel GPU ドライバーをブラックリストに登録し、代わりに VFIO ドライバーを使用するようにする必要があります。

まず、 /etc/modprobe.d/blacklist.conf nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/modprobe.d/blacklist.conf

Intel GPU ドライバーをブラックリストに登録するには、次の行を /etc/modprobe.d/blacklist.conf ファイルして押します + バツ に続く そして そして <入力> ファイルを保存します。

ブラックリスト snd_hda_intel

ブラックリスト snd_hda_codec_hdmi

ブラックリスト i915

完了したら、次のことを行う必要があります Proxmox VE サーバーの initramfs を更新します 変更が有効になるまで。

GPU (または PCI/PCIE デバイス) が Proxmox VE で VFIO ドライバーを使用しているかどうかを確認するにはどうすればよいですか?

GPU または目的の PCI/PCIE デバイスが VFIO ドライバーを使用しているかどうかを確認するには、次のコマンドを実行します。

$ lspci -v

GPU または PCI/PCIE デバイスが VFIO ドライバーを使用している場合は、次の行が表示されます。 使用中のカーネルドライバー: vfio-pci 以下のスクリーンショットでマークされているように。

AMU GPU ドライバーをブラックリストに登録しましたが、それでも GPU は VFIO ドライバーを使用しません。どうすればよいですか?

場合によっては、AMD GPU ドライバーをブラックリストに登録するだけでは十分ではなく、VFIO ドライバーの後にロードされるように AMD GPU ドライバーを構成する必要もあります。

これを行うには、 /etc/modprobe.d/vfio.conf nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/modprobe.d/vfio.conf

AMD GPU ドライバーが VFIO ドライバーの後に読み込まれるように設定するには、次の行を /etc/modprobe.d/vfio.conf ファイルして押します + バツ に続く そして そして <入力> ファイルを保存します。

Softdep Radeon 前: vfio-pci

Softdep amdgpu 前: vfio-pci

完了したら、次のことを行う必要があります Proxmox VE サーバーの initramfs を更新します 変更が有効になるまで。

NVIDIA GPU ドライバーをブラックリストに登録しましたが、それでも GPU は VFIO ドライバーを使用しません。どうすればよいですか?

場合によっては、NVIDIA GPU ドライバーをブラックリストに登録するだけでは十分ではなく、VFIO ドライバーの後に読み込まれるように NVIDIA GPU ドライバーを構成する必要もあります。

これを行うには、 /etc/modprobe.d/vfio.conf nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/modprobe.d/vfio.conf

NVIDIA GPU ドライバーが VFIO ドライバーの後に読み込まれるように構成するには、次の行を /etc/modprobe.d/vfio.conf ファイルして押します + バツ に続く そして そして <入力> ファイルを保存します。

Softdep の新しい以前: vfio-pci

Softdep Nvidia 用: vfio-pci

Softdep nvidiafb 用: vfio-pci

Softdep nvidia_drm 前: vfio-pci

Softdep DRM 前: vfio-pci

完了したら、次のことを行う必要があります Proxmox VE サーバーの initramfs を更新します 変更が有効になるまで。

Intel GPU ドライバーをブラックリストに登録しましたが、それでも GPU は VFIO ドライバーを使用しません。どうすればよいですか?

場合によっては、Intel GPU ドライバーをブラックリストに登録するだけでは十分ではなく、VFIO ドライバーの後に読み込まれるように Intel GPU ドライバーを構成する必要もあります。

これを行うには、 /etc/modprobe.d/vfio.conf nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/modprobe.d/vfio.conf

VFIO ドライバーの後に読み込まれるように Intel GPU ドライバーを構成するには、次の行を /etc/modprobe.d/vfio.conf ファイルして押します + バツ に続く そして そして <入力> ファイルを保存します。

Softdep snd_hda_intel 前: vfio-pci

Softdep snd_hda_codec_hdmi 前: vfio-pci

Softdep i915 前: vfio-pci

完了したら、次のことを行う必要があります Proxmox VE サーバーの initramfs を更新します 変更が有効になるまで。

単一の GPU では VFIO ドライバーが使用されましたが、2 番目の GPU を構成すると機能しませんでした。なぜですか?

の中に /etc/modprobe.d/vfio.conf ファイルに、VFIO ドライバーを使用するすべての PCI/PCIE デバイスの ID を 1 行で追加する必要があります。 1 行に 1 つのデバイスは機能しません。

たとえば、VFIO ドライバーを使用するように構成する 2 つの GPU がある場合、それらの ID を次の行に 1 行で追加する必要があります。 /etc/modprobe.d/vfio.conf 次のようにファイルします。

オプション vfio-pci ids=,,,

別の GPU をリストに追加したい場合は、既存の GPU の末尾に追加するだけです。 vfio-pci の行 /etc/modprobe.d/vfio.conf 次のようにファイルします。

オプション vfio-pci ids=,,,,,

決してこれを行わないでください。見た目はかなりすっきりしましたが、実際には機能しません。この方法で PCI/PCIE ID を指定できればいいのにと思います。

オプション vfio-pci ids=,

オプション vfio-pci ids=,

オプション vfio-pci ids=,

GPU の VGA アービトレーションを無効にする理由とその方法

GPU をパススルーする Proxmox VE 仮想マシンで UEFI/OVMF BIOS を使用している場合は、VGA アービトレーションを無効にすることができ、これにより起動中に必要なレガシー コードが削減されます。

GPU の VGA アービトレーションを無効にするには、次を追加します 無効化_vga=1 の終わりに vfio-pci オプション の中に /etc/modprobe.d/vfio.conf 以下に示すようなファイル:

options vfio-pci ids=,,, disable_vga=1

VFIO を構成した後でも GPU がまだ VFIO ドライバーを使用していない場合はどうすればよいですか?

すべてを正しく実行した後でも、GPU がまだ VFIO ドライバーを使用しない場合は、ビデオ フレーム バッファーを無効にするカーネル オプションを使用して Proxmox VE を起動してみる必要があります。

Proxmox VE 7.1 以前では、 nofb nomodeset video=vesafb:off video=efifb:off video=simplefb:off カーネル オプションにより、Proxmox VE サーバーの GPU フレームバッファが無効になります。

Proxmox VE 7.2 以降では、 initcall_blacklist=sysfb_init カーネル オプションは、Proxmox VE サーバーの GPU フレームバッファを無効にする際に、より適切に機能します。

GRUB ブートローダー構成ファイルを開きます /etc/default/grub nano テキスト エディタで次のコマンドを使用してファイルを編集します。

$ nano /etc/default/grub

カーネルオプションを追加する initcall_blacklist=sysfb_init の終わりに GRUB_CMDLINE_LINUX_DEFAULT

完了したら、 を押します + バツ に続く そして そして <入力> ファイルを保存して、必ず Proxmox VE GRUB ブートローダーを更新する 変更が有効になるまで。

GPU パススルーではエラーは表示されませんでしたが、Proxmox VE VM に渡された GPU に接続されているモニターに黒い画面が表示されます。なぜですか?

GPU を Proxmox VE 仮想マシンに渡したら、必ず デフォルト 仮想マシンを起動する前のグラフィックス カード。これにより、Proxmox VE Web 管理 UI から仮想マシンの表示にアクセスし、仮想マシンに GPU ドライバー インストーラーをダウンロードして、仮想マシンにインストールできるようになります。

仮想マシンに GPU ドライバーがインストールされると、仮想マシンに渡した GPU に接続されたモニターに仮想マシンの画面が表示されます。

仮想マシンに GPU ドライバーがインストールされ、GPU に接続されているモニターに仮想マシンの画面が表示されたら(仮想マシンに渡されます)、仮想マシンをパワーオフして、 ディスプレイグラフィックカード 仮想マシンの なし

一度設定すると、次回仮想マシンをパワーオンしたとき、仮想マシンの画面は GPU に接続された (仮想マシンに渡された) モニターにのみ表示され、Proxmox VE Web には何も表示されません。管理UI。こうすることで、仮想マシンを使用している場合でも、実際のコンピューターを使用しているのと同じエクスペリエンスを得ることができます。

覚えておいてください、決して使用しないでください SPICE、VirtIO GPU、および VirGL GPU ディスプレイ グラフィック カード 失敗する可能性が高いため、GPU パススルー用に構成している Proxmox VE 仮想マシン上で実行してください。

AMDベンダーリセットバグとは何ですか?そしてその解決方法は何ですか?

AMD GPUには「ベンダーリセットバグ」と呼ばれる有名なバグがあります。 AMD GPU が Proxmox VE 仮想マシンに渡され、この仮想マシンをパワーオフすると、別の Proxmox VE 仮想マシンで AMD GPU を使用できなくなります。その結果、Proxmox VE サーバーが応答しなくなることがあります。これは、AMD GPU の「ベンダー リセット バグ」と呼ばれます。

この問題が発生する理由は、AMD GPU が仮想マシンに渡された後に自身を正しくリセットできないためです。この問題を解決するには、AMD GPU を適切にリセットする必要があります。 Proxmox VE への AMD ベンダー リセットのインストールの詳細については、 この記事を読む そして Proxmox VE フォーラムのこのスレッドを読んでください 。また、 ベンダーリセット GitHub ページを確認してください

Proxmox VE 仮想マシン上で渡された GPU に vBIOS を提供するにはどうすればよいですか?

マザーボードの最初のスロットに GPU を取り付けている場合、デフォルトでは Proxmox VE 仮想マシンの GPU をパススルーできない可能性があります。一部のマザーボードは、デフォルトで最初のスロットにインストールされている GPU の vBIOS をシャドウします。これが、それらのマザーボードの最初のスロットにインストールされている GPU を仮想マシンに渡すことができない理由です。

この問題の解決策は、マザーボードの 2 番目のスロットに GPU を取り付け、GPU の vBIOS を抽出し、マザーボードの 1 番目のスロットに GPU を取り付け、抽出されたファイルとともに GPU を Proxmox VE 仮想マシンにパススルーすることです。 GPUのvBIOS。

GPU の vBIOS を抽出する方法については、 この記事を読む

GPU の vBIOS を取得したら、vBIOS ファイルを次の場所に保存する必要があります。 /usr/share/kvm/ Proxmox VE サーバーのディレクトリにアクセスしてアクセスします。

GPU の vBIOS ファイルが /usr/share/kvm/ ディレクトリを使用するには、仮想マシンを構成する必要があります。現在、Proxmox VE Web 管理 UI から Proxmox VE 仮想マシンの PCI/PCIE デバイスの vBIOS ファイルを指定する方法はありません。したがって、Proxmox VE シェル/コマンドラインからすべてを実行する必要があります。

Proxmox VE 仮想マシン構成ファイルは次の場所にあります。 /etc/pve/qemu-server/ Proxmox VE サーバーのディレクトリ。各 Proxmox VE 仮想マシンには、このディレクトリに次の形式の構成ファイルが 1 つあります。 .conf

たとえば、仮想マシン ID 100 の Proxmox VE 仮想マシン構成ファイル (編集用) を開くには、次のコマンドを実行する必要があります。

$ nano /etc/pve/qemu-server/100.conf

仮想マシン構成ファイルに、次の内容を追加する必要があります。 romfile= の中に ホストPCIX 仮想マシン上の GPU を渡す役割を担う行。

たとえば、GPU の vBIOS ファイル名が次の場合、 ギガバイト-nvidia-1050ti.bin 、仮想マシンの最初のスロット (スロット 0) に GPU を渡しました ( ホストPCI0 )、次に、 100.conf ファイルの行は次のようになります。

hostpci0: ,x-vga=on,romfile=gigabyte-nvidia-1050ti.bin

完了したら、 を押して仮想マシン構成ファイルを保存します。 + バツ に続く そして そして <入力> 、仮想マシンを起動し、GPU パススルーが機能しているかどうかを確認します。

一部のアプリが Proxmox VE Windows 仮想マシンをクラッシュさせた場合はどうすればよいですか?

GeForce Experience、Passmark などの一部のアプリは、Proxmox VE Windows 仮想マシンをクラッシュさせる可能性があります。 Proxmox VE Windows 仮想マシンで突然のブルー スクリーン (BSOD) が発生する場合もあります。この問題が発生する理由は、Windows 仮想マシンが実際には利用できないモデル固有レジスタ (MSR) にアクセスしようとする可能性があり、ハードウェアによる MSR 要求の処理方法によっては、システムがクラッシュする可能性があるためです。

この問題の解決策は、Proxmox VE サーバー上の MSR メッセージを無視することです。

Proxmox VE サーバーで MSR を構成するには、 /etc/modprobe.d/kvm.conf nano テキスト エディタを使用して次のようにファイルを作成します。

$ nano /etc/modprobe.d/kvm.conf

Proxmox VE サーバー上の MSR を無視するには、次の行を /etc/modprobe.d/kvm.conf ファイル。

オプション kvmignore_msrs=1

MSR が無視されると、dmesg システム ログに大量の MSR 警告メッセージが表示されることがあります。これを回避するには、代わりに次の行を追加して、MSR を無視し、MSR 警告メッセージのログ記録を無効にすることができます。

オプション kvmignore_msrs=1 report_ignored_msrs=0

完了したら、 を押します + バツ に続く そして そして <入力> を保存するために /etc/modprobe.d/kvm.conf ファイルと Proxmox VE サーバーの initramfs を更新します 変更が有効になるまで。

Proxmox VE Linux 仮想マシンでの HDMI オーディオのパチパチ音や壊れた問題を解決する方法?

GPU を Linux Proxmox VE 仮想マシンに渡し、仮想マシンのオーディオ品質が低下する場合は、Proxmox VE 仮想マシン上のオーディオ デバイスに対して MSI (メッセージ信号割り込み) を有効にする必要があります。

Linux Proxmox VE 仮想マシンで MSI を有効にするには、 /etc/modprobe.d/snd-hda-intel.conf 次のコマンドを使用して、仮想マシン上の nano テキスト エディターでファイルを編集します。

$ sudo nano /etc/modprobe.d/snd-had-intel.conf

次の行を追加し、 を押してファイルを保存します。 + バツ に続く そして そして <入力>

オプション snd-hda-intel Enable_msi=1

変更を有効にするには、次のコマンドを使用して Linux 仮想マシンを再起動します。

$sudo再起動

仮想マシンが起動したら、次のコマンドを使用して、オーディオ デバイスに対して MSI が有効になっているかどうかを確認します。

$ sudo lspci -vv

仮想マシン上のオーディオ デバイスに対して MSI が有効になっている場合は、オーディオ デバイス情報にマークされた行が表示されます。

Proxmox VE initramfs を更新するにはどうすればよいですか?

ファイルに変更を加えるたびに、 /etc/modules-load.d/ そして /etc/modprobe.d/ ディレクトリにある場合は、次のコマンドを使用して Proxmox VE 8 インストールの initramfs を更新する必要があります。

$ update-initramfs -u -k all

Proxmox VE initramfs が更新されたら、Proxmox VE サーバーを再起動して変更を有効にします。

$再起動

Proxmox VE GRUB ブートローダーを更新するにはどうすればよいですか?

Proxmox VE GRUB ブート構成ファイルを更新するたび /etc/default/grub 、変更を有効にするには、GRUB ブートローダーを更新する必要があります。

Proxmox VE GRUB ブートローダーを新しい構成で更新するには、次のコマンドを実行します。

$ update-grub2

GRUB ブートローダーが新しい構成で更新されたら、Proxmox VE サーバーを再起動して変更を有効にします。

$再起動

結論

この記事では、Proxmox VE PCI/PCIE パススルーおよび GPU パススルーに関する最も一般的な問題のいくつかと、それらの問題を解決するために実行できる手順について説明しました。

参考文献

  1. [チュートリアル] – Proxmox VE 8 での PCI/GPU パススルー: インストールと構成 | Proxmox サポート フォーラム
  2. Proxmox GPU パススルーに関する究極の初心者ガイド
  3. Linux でのモデル固有のレジスタの読み取りと書き込み
  4. MSI ドライバー ガイド HOWTO — Linux カーネル ドキュメント