参考了很多文章,主要是:KVM GPU passthrough Ubuntu 20.04、virt-install工具创建虚拟机命令介绍(详细)和Virtual machines with PCI passthrough on Ubuntu 20.04, straightforward guide for gaming on a virtual machine。因为我的环境是无GUI的服务器, 所以不能用Virtual Machine Manager安装,必须用virt-install命令,以下主机相关操作全部在命令行以root用户完成,显卡为N卡。
准备环境
首先确认主机BIOS开启了VT/d等虚拟化设置。安装软件包:
apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-clients bridge-utils ovmf
修改“/etc/default/grub”文件,开启IOMMU:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modeset=0 intel_iommu=on"
参考文章里,最简单的方法是在这里后面加上“vfio-pci.ids=显卡所在IOMMU组所有PCI设备的vender ID:device ID,以逗号分隔”,但是很不幸,服务器上有多张同型号的显卡,他们的vender ID和device ID是一样的,这么搞一下就全屏蔽了。
更新grub:
update-grub
确认要给虚拟机分配的显卡的PCI主线ID,一般是一组,比如我这里是4个:显卡本身、音频设备、USB 3.1控制器和Type-C控制器,用
lspci -nn | grep -i NVI