Estou no processo de configuração do VFIO com o KVM. Eu tenho o próprio VFIO funcionando, em que a GPU do VFIO exibe a tela do shell UEFI quando inicio a VM. Eu também sou capaz de criar uma VM do Windows com VNC para gráficos. Meu problema é que eu crio a VM com repasse usando o qemu-system, e aquele que inicia completamente eu crio usando virt-install.
O que eu gostaria de fazer é usar virt-install, mas com o mesmo dispositivo PCI que eu passo com o qemu-create, então preciso descobrir como traduzir o argumento qemu-system para as opções virt-install (ou virsh editar xml)
-device vfio-pci,host=42:00.0,multifunction=on \
-device vfio-pci,host=42:00.1 \
em argumentos do virt-install. No entanto, as instruções que eu usando para virt-install não usam o ID PCI, mas sim domínio, barramento e slot, que não são mostrados no lspci e não sei como verificar.
Então, eu preciso obter essa informação e usá-lo em um comando virt-install, ou encontrar uma maneira de usar o ID PCI com o virt-install.
Aqui estão meus dois comandos:
sistema 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
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
Também seria bom descobrir como fazer o boot do qemu-system corretamente, mas eu gosto do virt-install melhor porque ele faz um arquivo XML útil que eu posso ver depois.