You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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映射:

  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:128b10de:0e0f是NVIDIA 730和它自带音频控制器的设备ID,你可以用lspci -nn | grep NVIDIA命令自己确认准确的ID,别直接抄我的)
  2. 执行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」之类的选项,保持默认的直通配置就行

额外的小提醒

如果还是不行,试试这两个小操作:

  1. 把显卡换到主板原生的PCIe插槽(靠近CPU的那个),HP DL360 Gen9的扩展槽可能有优先级限制
  2. 执行apt update && apt upgrade -y把系统和内核更到最新,新内核对vfio的1:1映射支持更完善
  3. 检查BIOS里的Secure Boot是否关闭,它可能会阻止vfio驱动加载显卡的固件

备注:内容来源于stack exchange,提问作者Sub

火山引擎 最新活动