如何让虚拟机用上宿主机的显卡,一般情况需要两个显卡,大部分人都会有一个CPU集显和一张独立的显卡,这种环境就可以使用以下方法 。原理:把整块显卡完整分配给虚拟机,宿主机无法再使用这张显卡。所以为了保证物理机上能正常显示使用,我把宿主机显示接到集成显卡,而虚拟机则使用独立显卡GTX 750Ti。
前提条件
一、BIOS/UEFI 必须先改
重启进 BIOS,把这些打开:
- VT-x / VT-d(Intel 虚拟化、IOMMU 直通,开启enable)
- Primary Display / 首选显卡:设为 iGPU / 集成显卡
- 如有:CSM = 关闭、Secure Boot = 关闭
显示器现在就要插到主板的视频口(HDMI/DP),不要插在 GTX750Ti 上。
步骤
宿主机开启 IOMMU
- Intel CPU:

sudo vim /etc/default/grub
# 修改 GRUB_CMDLINE_LINUX_DEFAULT 为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt"
- AMD CPU:
sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on iommu=pt"
#更新 GRUB 并重启:sudo update-grub
sudo reboot
获取显卡的 PCIe 地址
lspci | grep -E 'VGA|3D controller'
# 输出类似
swper@Mt:~$ lspci | grep -E 'VGA|3D controller'
0000:00:02.0 VGA compatible controller: Intel Corporation Alder Lake-S GT1 [UHD Graphics 730] (rev 0c)
0000:01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
需要记住前面的ID,如我的机器:0000:00:02.0为CPU集显,0000:01:00.0为GTX 750Ti显卡ID,下边添加时用到。
在 virt-manager 中直通显卡
关闭虚拟机,虚拟机设置 → 添加硬件 → PCI 主机设备 → 选择你的显卡(01:00.0)

同时添加显卡对应的音频设备(如 01:00.1 Audio device)
启动虚拟机,安装对应驱动即可。
同时配置一下显卡Virtio,去掉3D加速。

显示协议Spice ,选择地址,所有接口,不钩OpenGL

这样就把物理显卡GTX 750Ti给到虚拟机使用了,虚拟机上要使用这张显卡就像平常一样安装相应的驱动即可。