Kvm

如何在 qemu-system 參數和 virt-install 參數之間進行轉換,以便統一部分工作的命令?

  • October 25, 2018

我正在使用 KVM 設置 VFIO。我讓 VFIO 本身工作,因為當我啟動 VM 時,VFIO 的 GPU 會顯示 UEFI shell 螢幕。我還能夠使用 VNC 為圖形創建工作 Windows VM。我的問題是我使用 qemu-system 創建了帶有直通的 VM,而我使用 virt-install 創建了完全啟動的 VM。

我想做的是使用virt-install,但使用與qemu-create傳遞相同的PCI設備,所以我需要弄清楚如何將qemu-system參數轉換為virt-install選項(或virsh編輯xml )

-device vfio-pci,host=42:00.0,multifunction=on \
-device vfio-pci,host=42:00.1 \

進入 virt-install 參數。但是,我用於 virt-install的指令不使用 PCI ID,而是使用域、匯流排和插槽,這些在 lspci 中沒有顯示,我不知道如何檢查。因此,要麼我需要獲取該資訊並在 virt-install 命令中使用它,要麼找到一種將 PCI ID 與 virt-install 一起使用的方法。

這是我的兩個命令:

qem系統:

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-system 正確啟動也可以,但我更喜歡 virt-install,因為它會生成一個方便的 XML 文件,以後可以查看。

我相信您正在尋找 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 \
...

引用自:https://unix.stackexchange.com/questions/477847