目录
收集必要信息
记下开头XX:XX
PCI 地址,如上方输出中的02:00
和81:00
。
记下XXXX:XXXX
形式的 Vendor ID 和 Device ID,有多个显卡的话都要记录但同款显卡通常相同(如上例)
修改系统配置
为显卡开启 vfio
编辑 /etc/modprobe.d/vfio.conf
,写入以下内容,其中^
标注部分替换成上方记录的 ID,用逗号分隔
调整内核模块
编辑 /etc/modprobe.d/blacklist.conf
,写入:
编辑 /etc/modprobe.d/kvm.conf
,写入:
编辑 /etc/modprobe.d/iommu_unsafe_interrupts.conf
,写入:
修改 /etc/modules
,写入:
应用以上更改
修改 GRUB
编辑 /etc/default/grub
,将 CMDLINE_DEFAULT_GRUB
一行修改为:
执行
Tricky Workaround
编辑 /root/fix_gpu_pass.sh
写入:
并设置此脚本开机运行:
在打开的编辑器中修改文件,在文件末尾加入这一行:
重启 Proxmox VE 宿主机
验证修改生效
- 运行此命令
如果输出中包含形如以下内容,则 IOMMU 成功启用。
- 运行此命令
根据输出确认 GPU 处于单独的 IOMMU 分组,例如:
配置虚拟机
⚠️ 以下内容仅适用于 Linux 虚拟机。Windows 虚拟机理论上可行,但我没有需求,故未曾尝试。
FYI:参考资料中的 3os.org 有较为详细的相关教程。
按照正常流程新建 QEMU 虚拟机,但需要注意以下配置:
- BIOS 设置为
SeaBIOS
(默认)
- 机型 设置为
q35
- 创建完成后不要开机,先到
硬件 - 添加 - PCI设备
添加显卡
- “设备”选择带显卡名称的项目
- 勾选
所有功能
和 PCI-Express
完成
接下来你可以启动虚拟机,安装系统和显卡驱动,然后开始使用。
参考资料