LinuxでGPUをパススルーする方法は、探すと幾つか検索にひっかかる

 

GPUパススルーって?

 

Linux上のKVMでWindowsなどの別OSを動かす場合、GPUはホストOSのLinuxが利用しているので
KVM上のクライアントOSではGPUは利用出来無い
KVM上のクライアントOSがWindowsの場合、GPUが存在しない場合、3Dのゲームは起動しない
なので、KVM上のクライアントOSでGPUを利用出来るようにするのと、LinuxではGPUを使わないようにする事をGPUパススルーって言うみたい

 

なぜKVMの上でWindowsを動かすの?

 

CPUが3世代と古く、TPMがマザーボードに存在せず、Windows11がインストール出来ないので
KVMをマザーボードの代わりにすることで、Windows11が未加工で動作するようになる
(セキュアブートとTPMをクリアすると、クリーンインストールでは古いCPUでもインストール可)
あとメモリが沢山積んであると、KVMがSSDやHDDにアクセスする時、キャッシュしてくれているようで、アクセス速度が無茶苦茶速くなる

 

調べた結果・・・

 

iommuの有効化とnouveauの無効化とを行うとGPUパススルーが出来ると記述がほとんどですが、
CentOSやUbuntu、Debianなどで設定が違うし、CentOS8の記述の設定をしてもパススルーは出来ませんでした

 

分かった事!

 

他のLinuxではどうかわかりませんが、AlmaLinuxやRedHatではLinuxがGPUを利用しないという設定(デタッチ)が必要という事がわかりました。

 

ではどのように設定する?

 

グラフィックボードの情報を集める
lspci -Dnn | grep -i NVIDIA
0000:01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK208B [GeForce GT 710] [10de:128b] (rev a1)
0000:01:00.1 Audio device [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)

 

GRUBを編集する
(GRUB_CMDLINE_LINUXに、nouveauから後ろを追加)
vi /etc/default/grub
GRUB_CMDLINE_LINUX=”〜省略 nouveau.modeset=0 modprobe.blacklist=nouveau intel_iommu=on pci-stub.ids=10de:128b,10de:0e0f”

 

修正したGRUBを反映して再起動
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

 

nouveauは、nvidia用のLinuxの独自ドライバの事で、利用しないようにする
intel_iommuは、GPUパススルーをする
pci-stub.idsは、LinuxがGPUを利用しないようにする(デタッチする)

 

pci-stub.idsは、GPUパススルーに関する検索では出てこなかった
これをしないと、KVM上のクライアントがGPUを利用出来無い

 

まだ分からない事

 

GT-710をGPUパススルーした時、クライアントOSではGT-710を認識し、GeForceのドライバをクライアントOSにインストール出来た
1、マウスとキーボードがクライアントOSで認識されず、操作出来無い・・
2、CPUにもGPUがあるので、クライアントOSをシャットダウンしたときは、HDMIを切り替えてCPUのGPUを利用しLinuxの画面を出したい

 

今は2台のマシンでSSHやVNCを利用し、ターゲットのマシンを操作しているのですが、1つのマシンですべて操作したいのでまだまだ調査は必要です

 

調べると、TPMの付いた3世代用のマザーボードもあるみたいなので、今の構成をそのまま使うのであれば、マザーボードを変えるのもありかも?(GA-B75M-D3H/A)

 

後から分かった事

 

1、マウスとキーボードは、ハードウェアの追加でUSBを選択し、マウスとキーボードを追加すると解決する
2、HDMIを切り替えて1台のマシンで操作したい件ですが、自分が使っているマザーボードにはグラボの優先設定があって、iGPUを優先にすると、AlmaLinuxはCPU内のGPUよりマザーボードからのHDMIから出力され、クライアントを起動するとGT710に接続したHDMIに出力されるようになった

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です