Estou no processo de configuração do VFIO com KVM. Eu tenho o próprio VFIO funcionando, pois a GPU do VFIO exibe a tela do shell UEFI quando inicio a VM. Também sou capaz de criar uma VM do Windows funcional com VNC para gráficos. Meu problema é que eu crio a VM com passthrough usando qemu-system, e aquela que inicializa totalmente eu crio usando virt-install.
O que eu gostaria de fazer é usar virt-install, mas com o mesmo dispositivo PCI que eu passo com qemu-create, então preciso descobrir como traduzir o argumento qemu-system para opções virt-install (ou virsh edit xml )
-device vfio-pci,host=42:00.0,multifunction=on \
-device vfio-pci,host=42:00.1 \
em argumentos virt-install. No entanto, as instruções que uso para virt-install não usam o PCI ID, mas sim o domínio, o barramento e o slot, que não são mostrados no lspci e não tenho certeza de como verificar. Portanto, preciso obter essas informações e usá-las em um comando virt-install ou encontrar uma maneira de usar o ID PCI com 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 a inicialização do sistema qemu corretamente, mas eu gosto mais do virt-install porque ele cria um arquivo XML útil que posso ver mais tarde.
Acredito que você esteja procurando a opção --hostdev para virt-install. Pode levar uma localização de barramento PCI e outros sinalizadores. A lista completa é mostrada com:
As opções necessárias para acima devem se parecer com: