我正在尝试设置 VGA 直通。目前正在 Ubuntu 16.04 下尝试此操作(但由于不相关的挫败感,我几乎要回滚到原始 Debian)。我主要尝试遵循本指南,但我无法理解 IOMMU 分组,因为显然我的机器不想分组。
我在内核命令行上设置了 intel_iommu=on,并且可以通过“cat /prod/cmdline”进行验证。但是,“find /sys/kernel/iommu_groups/ -type l”没有找到任何内容,“ls /sys/kernel/iommu_groups”显示一个空目录。尽管我在 Google 上搜索过,但我没有找到太多关于如何从这里解决这个问题的指导,而且在此之前,我还没有尝试过那么多愚蠢的硬件技巧,因此对 PCI 总线进行故障排除对我来说是新鲜事。
就硬件而言,这台机器在华硕 X99 E-WS 主板上配备英特尔 E5-1650 v3、一块 Nvidia Quadro K4000 和一块 GTX 970。我试图将 970 留给主机使用,将 K4000 专用于虚拟机。如果有帮助的话,很乐意提供 lspci 或 virsh ondedev-list 输出,但最初不把它放在这里,因为它很长,而且我认为我甚至还没有到它有用的地步;据我所知,关于 iommu 已打开的说法是谎话。
编辑:因此报告如下:
$ dmesg | grep -e DMAR -e IOMMU
[ 0.000000] DMAR: IOMMU enabled
[ 0.000000] DMAR: IOMMU enabled
我甚至更加迷茫了;如果它没有被启用,那可能是我的 grub 或内核模块出了什么愚蠢的错误。但我真的不清楚它虽然启用了,但却没有按照其他资源所说的那样运行,该怎么办。
答案1
我知道这已经很晚了,但根据您使用的 UEFI Bios,检查 VT-d 是否已启用可能会很棘手。对于我的华硕 X99A USB 3.1 主板,VT-x 和 VT-d 的设置位于不同的位置。
对于 VT-d:高级 => 系统代理配置 => Intel VT for Directed I/O (VT-d)
在我的系统上,它被设置为禁用,即使 VT-x(在高级 => CPU 配置 => 英特尔虚拟化技术下)已启用。
确保两者都已启用
答案2
我也遇到了同样的问题,我检查了我的 BIOS 设置,发现室性心动过速已被禁用。我启用了该选项并解决了问题。也许你可以查阅主板或芯片组手册,看看你的机器是否支持英特尔 vt-d。
答案3
我在 Ubuntu Linux 22 上遇到了这个问题,我也在我的 UEFI BIOS 中找到了这个问题的解决方案。我使用的是 AMD 3950x,所以依靠 AMD-V 而不是 VT-d。我的主板是 Asrock X570 Phantom Gaming X,在 UEFI 中有 (3) 个位置需要检查虚拟化和 IOMMU 是否启用,如下所示:
1.) 高级 > CPU 配置 > PSS 支持 > 已启用 //默认启用
2.) 高级 > 板载设备配置 > SR-IOV 支持 > 启用 //默认禁用
3.) 高级 > 超级 IO 配置 > IOMMU > 启用 //默认禁用
保存并退出,我找不到已填充的 IOMMU 组。