Written by: algebnaly
Date: 2024-07-04T14:10:55.000Z
基本上是参考Arch Linux Wiki上的PCI passthrough via OVMF
以及Non-Root GPU-passthrough
这两篇Wiki.
但是由于我使用的是QEMU, 而不是libvirt, 因此最后一个步骤不一样, 需要设置命令行参数.
首先, 由于我是AMD CPU, 因此不能使用-device intel_iommu, 但是也不能使用-device amd_iommu(why?).
其次, 需要设置memlock大小, 我根据Wiki的建议对’/etc/security/limits.conf’设置为
algebnaly soft memlock 20000000
algebnaly hard memlock 20000000
最后, 需要设置/dev/vfio/28的权限, 让qemu可以访问它, 我是直接运行命令sudo chgrp algebnaly /dev/vfio/28 && sudo chmod g+rwx /dev/vfio/28完成.
最后, 虚拟机内也需要安装显卡驱动, 我使用的是AMD的显卡, 但是直接使用AMD的驱动安装工具是会报错的, 得直接找到对应版本的显卡驱动直接安装.
最后,贴一下我的qemu命令:
qemu-system-x86_64 \
-boot order=d \
-drive file=/home/algebnaly/.local/srv/virt/pool/win11.qcow2 \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd \
-drive if=pflash,format=raw,file=/home/algebnaly/vms/win11/OVMF_VARS.4m.fd \
-drive file=/home/algebnaly/.local/srv/virt/pool/data.qcow2 \
-m 8G \
-machine q35 -cpu host -smp 6 \
-vga none \
-device qemu-xhci \
-usb -device usb-tablet \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=0c:00.0,bus=root.1,addr=00.0,multifunction=on \
-device vfio-pci,host=0c:00.1,bus=root.1,addr=00.1 \
-vnc :2 \
-enable-kvm