KVMを使用してVFIOを設定しています。 VMを起動すると、VFIOのGPUがUEFIシェル画面を表示するため、VFIO自体が正常に動作します。また、グラフィックス用のVNCを使用して動作するWindows VMを作成することもできました。私の問題は、qemu-systemを使用してパススルー機能を持つVMを作成し、virt-installを使用して完全に起動したVMを作成することです。
私がしたいのは、virt-installを使用することですが、qemu-createを介して渡したのと同じPCIデバイスを使用することですので、qemu-systemパラメータをvirt-installオプション(またはvirsh edit xml)に変換する方法を理解する必要があります。
-device vfio-pci,host=42:00.0,multifunction=on \
-device vfio-pci,host=42:00.1 \
virt-install パラメーターを入力します。しかし、私の指示は仮想インストール用PCI ID を使用せず、ドメイン、バス、スロットを使用してください。 lspciには表示されず、確認方法がわかりません。したがって、その情報を取得してvirt-installコマンドで使用するか、virt-installでPCI IDを使用する方法を見つける必要があります。
私の2つのコマンドは次のとおりです。
qemuシステム:
sudo qemu-system-x86_64 \
-name $vmname,process=$vmname \
-machine type=q35,accel=kvm \
-cpu EPYC,kvm=off \
-smp 4,sockets=1,cores=2,threads=2 \
-m 16G \
-balloon none \
-rtc clock=host,base=localtime \
-vga none \
-nographic \
-serial none \
-parallel none \
-device vfio-pci,host=42:00.0,multifunction=on \
-device vfio-pci,host=42:00.1 \
-drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/usr/share/OVMF/OVMF_VARS.fd \
-boot order=dc \
#-drive id=disk0,if=virtio,cache=none,format=raw,file=/dev/nvme-tank/ntfs-zvol-part1 \
-drive file=/media/big-tank-8TB/OSISOS/Windows/WindowsOct2018.iso,index=1,media=cdrom \
-drive file=/media/big-tank-8TB/OSISOS/Windows/virtio-win-0.1.160.iso,index=2,media=cdrom
仮想インストール
virt-install \
--name myWINVM1 \
--ram 4096 \
--disk path=/dev/nvme-tank/ntfs-zvol-part1 \
--cpu core2duo \
--vcpus 4 \
--os-type windows \
--os-variant win10 \
--network bridge=virbr0 \
--graphics vnc \
--console pty,target_type=serial \
--disk /media/big-tank-8TB/OSISOS/Windows/WindowsOct2018.iso,device=cdrom,bus=ide \
--disk /media/big-tank-8TB/OSISOS/Windows/virtio-win-0.1.160.iso,device=cdrom,bus=ide
qemuシステムを正しく起動する方法を見つけることも効果的ですが、後で見ることができる便利なXMLファイルを生成するので、virt-installを好みます。
答え1
私はあなたがvirt-installの--hostdevオプションを探していると思います。 PCIバスの位置とその他のフラグを使用できます。完全なリストは次のように表示されます。
virt-install --hostdev=?
上記の必須オプションは次のとおりです。
virt-install \
--name myWINVM1 \
--ram 4096 \
--hostdev 42:00.0,address.type=pci,address.multifunction=on \
--hostdev 42:00.1,address.type=pci \
...