Ubuntu 24.04 KVM GPU直通报错:Firmware要求设备使用1:1 IOMMU映射
Ubuntu 24.04 KVM GPU直通报错:Firmware要求设备使用1:1 IOMMU映射
兄弟,我太懂你试了20多份教程还卡壳的崩溃感了!你遇到的这两个报错核心原因其实是HP DL360 Gen9的硬件固件限制——这块NVIDIA 730显卡被固件强制要求必须用1:1的IOMMU映射(也就是Identity Mapping),而常规的KVM直通配置根本没满足这个要求,所以vfio驱动直接拒绝接手设备了。
咱们一步步来解决:
第一步:先搞定BIOS层面的关键设置(最核心!)
HP的服务器固件对PCIe设备的IOMMU映射管得特别严,必须先在BIOS里开启1:1映射的选项:
- 重启服务器,进HP的iLO或者本地BIOS设置界面
- 找到「PCIe设置」或者「IOMMU设置」的板块
- 开启1:1 IOMMU Mapping(有些BIOS里叫「Identity Mapping」「Direct I/O Mapping」或者「1:1 PCIe地址映射」,找类似的选项就行)
- 保存设置后重启服务器
第二步:调整系统的GRUB配置
接下来要给系统内核传递正确的参数,确保它配合BIOS的1:1映射:
- 编辑
/etc/default/grub文件,找到GRUB_CMDLINE_LINUX这一行,把它改成类似这样:
(注意:这里的GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt pci=nocrs vfio-pci.ids=10de:128b,10de:0e0f"10de:128b和10de:0e0f是NVIDIA 730和它自带音频控制器的设备ID,你可以用lspci -nn | grep NVIDIA命令自己确认准确的ID,别直接抄我的) - 执行
update-grub更新GRUB配置,然后重启系统
第三步:验证驱动加载情况
重启后咱们检查一下配置是否生效:
- 用
dmesg | grep -i vfio查看日志,如果看到类似「vfio-pci 0000:11:00.0: vfio_ecap_init: hiding ecap 0x19@0x270」的内容,说明vfio驱动已经正确接手设备了 - 再用
lspci -k | grep -A 3 NVIDIA检查,确保设备的驱动显示是vfio-pci,而不是nvidia或者nouveau
第四步:调整VM的直通配置
最后给虚拟机加PCI设备的时候,注意两个细节:
- 添加PCI设备时,一定要勾选「PCI-Express」选项(GPU需要原生PCIe直通支持)
- 不要额外勾选「ROM Bar」之类的选项,保持默认的直通配置就行
额外的小提醒
如果还是不行,试试这两个小操作:
- 把显卡换到主板原生的PCIe插槽(靠近CPU的那个),HP DL360 Gen9的扩展槽可能有优先级限制
- 执行
apt update && apt upgrade -y把系统和内核更到最新,新内核对vfio的1:1映射支持更完善 - 检查BIOS里的Secure Boot是否关闭,它可能会阻止vfio驱动加载显卡的固件
备注:内容来源于stack exchange,提问作者Sub




