CentOS7 KVMでNVIDIAのGPUをWindowsにパススルーする
WindowsのNVIDIAドライバはOSがKVMハイパーバイザー環境で動作していることを検知すると error 43 で動作停止するという仕様のため、回避するために以下の対策が必要。
1. libvirt のドメイン設定でハイパーバイザーのベンダーIDを偽装する
2. libvirt のドメイン設定で hidden state を on にする
詳細は下記 https://wiki.archlinuxjp.org/index.php/OVMF_による_PCI_パススルー 9.1 Windows の仮想マシンに NVIDIA の GPU をパススルーした場合に "Error 43 : Driver failed to load"
上記対策はUEFIモードでインストールしたWindowsのみで有効。
(BIOSモードでインストールしたWindowsではエラーが出る)
UEFIモードでインストールできるようにするために、OVMF(Open Virtual Machine Firmware)のインストール・設定を行う。
・OVMFのインストール
# vi /etc/yum.repos.d/kraxel.repo include=https://www.kraxel.org/repos/firmware.repo # yum install edk2.git-ovmf-x64
・virt-installの設定
vert-install で --boot uefi オプションを指定できるようにするために、下記設定を追加する # /usr/local/etc/libvirt/qemu.conf nvram = [ "/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd", "/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw" ]
・virt-install で UEFI を指定してインストール
# virt-install \ --boot uefi \ <省略> ※virt-manager でインストールする場合はファームウェアの指定でUEFIを選択する ※OVMFは virtioで接続したディスクからOS起動できないため、IDE もしくは virtio-scsi での接続が必要