0%

pve直通显卡到ubuntu

在EPYC平台的PVE环境中直通英伟达显卡到Ubuntu虚拟机,需要按照以下步骤进行配置:

一、BIOS设置

首先需要在主板BIOS中开启相关虚拟化功能:
• AMD平台:开启SVM Mode和IOMMU

• Intel平台:开启VT-d

• 确保UEFI启动模式,关闭Legacy boot或CSM

二、PVE宿主机配置

  1. 修改GRUB启动参数
    编辑/etc/default/grub文件,修改GRUB_CMDLINE_LINUX_DEFAULT参数:
    1
    2
    3
    4
    5
    # AMD平台
    GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream"

    # Intel平台
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream"

更新GRUB配置:update-grub

  1. 加载VFIO模块
    编辑/etc/modules文件,添加以下模块:

    1
    2
    3
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
  2. 屏蔽宿主机显卡驱动
    编辑/etc/modprobe.d/pve-blacklist.conf,添加黑名单:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # NVIDIA显卡
    blacklist nvidiafb
    blacklist nouveau
    blacklist nvidia

    # AMD显卡
    blacklist amdgpu
    blacklist radeon

    # Intel集显
    blacklist snd_hda_codec_hdmi
    blacklist snd_hda_intel
    blacklist snd_hda_codec
    blacklist snd_hda_core
  3. 配置vfio-pci绑定
    获取显卡设备ID:

    1
    2
    lspci -nn | grep -i "VGA"
    lspci -nn | grep -i "audio"

创建/etc/modprobe.d/vfio.conf文件:

1
2
3
options vfio-pci ids=10de:1287,10de:0e0f
softdep nouveau pre: vfio-pci
softdep nvidia pre: vfio-pci
  1. 忽略NVIDIA显卡警告
    编辑/etc/modprobe.d/kvm.conf:

    1
    options kvm ignore_msrs=1 report_ignored_msrs=0
  2. 更新内核并重启

    1
    2
    update-initramfs -u -k all
    reboot

三、验证配置

重启后验证IOMMU是否启用:

1
2
dmesg | grep -e DMAR -e IOMMU
dmesg | grep 'remapping'

检查vfio-pci是否接管显卡:

1
lspci -nnk | grep -A3 -E "10de:1287|10de:0e0f"

四、创建Ubuntu虚拟机

  1. 虚拟机配置

• 机型:选择q35

• BIOS:改为UEFI(OVMF)

• CPU类型:设为host(提升性能兼容性)

• 内存:建议8GB及以上

• 磁盘:SCSI控制器选择VirtIO SCSI

  1. 添加显卡设备

在PVE Web界面中:

  1. 选择目标虚拟机 → “硬件”

  2. 点击”添加” → “PCI设备”

  3. 选择目标显卡设备

  4. 重要:勾选”所有功能(All Functions)”和”PCI-Express”

  5. 保存设置

  6. 关闭安全启动

在虚拟机BIOS中关闭Secure Boot,避免驱动安装问题

五、Ubuntu虚拟机内安装驱动

  1. 添加NVIDIA PPA

    1
    2
    sudo add-apt-repository ppa:graphics-drivers/ppa -y
    sudo apt update
  2. 安装推荐驱动
    Manual Driver Search中查看显卡在环境推荐的驱动版本号
    sudo apt install nvidia-driver-xxx

  3. 禁用nouveau驱动

    1
    2
    echo -e "blacklist nouveau\noptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
    sudo update-initramfs -u
  4. 重启并验证

    1
    2
    sudo reboot
    nvidia-smi

六、常见问题排查

  1. 直通成功但nvidia-smi无输出

检查是否在PVE中正确添加了PCI设备,确保勾选了”所有功能”

  1. 驱动安装报错

• 确保关闭了安全启动

• 检查内核版本兼容性

• 尝试安装开源版本驱动(对于50系列显卡)

  1. 性能问题

• 确保CPU类型设置为host

• 启用NUMA支持

• 配置大页内存(可选)

通过以上步骤,您应该能够在EPYC平台的PVE环境中成功直通英伟达显卡到Ubuntu虚拟机,实现接近原生性能的GPU加速功能。