PVE直通显卡到linux虚拟机

作者头像
袋鼠 本文作者

2025-10-17 阅读 606 约 7分钟读完

评论0

确认宿主机显卡状态已准备好直通 打开pve宿主机的shell,执行`lspci -nn | grep -i nvidia` (默认N卡,其他的请自行更换匹配关键词),根据显示的pci编号执行`lspci -nnk -s 83:00.0`,如果Kernel driver in use后显示**不**是vfio-pci,则需要编辑vfio.conf文件。 查看显卡状态
编辑vfio.conf文件 编辑配置文件: `nano /etc/modprobe.d/vfio.conf` 写入 ID(将你的 ID 替换进去,注意包含显卡核心和音频部分的 ID):`options vfio-pci ids=10de:xxxx,10de:yyyy` 更新 initramfs 并重启:`update-initramfs -u && reboot` ------------
通过内核参数阻止显卡进入休眠,编辑grub文件:`nano /etc/default/grub` 新增一行`GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt vfio-pci.disable_idle_d3=1 pcie_aspm=off"`,保存退出。 (注:如果是 AMD CPU,请将 intel_iommu=on 替换为 amd_iommu=on) 更新GRUB并重启PVE宿主机:`update-grub && sudo reboot` ------------

虚拟机配置中BIOS选择OVMF,机型选择Q35,取消勾选预注册密钥,CPU类型选择host,直通PCI设备选择对应显卡,勾选所有功能、ROM-Bar、PCI-Express

一、在ubuntu虚拟机上进行以下操作:

  1. 卸载现有驱动:

    sudo apt --purge remove nvidia*
    sudo apt autoremove
  2. 通过ubuntu-drivers autoinstall自动安装或从官网下载对应版本驱动

  3. 安装NVIDIA容器工具包,以实现Docker对GPU的调用

    #添加仓库
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
    curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
    #安装工具包,以实现Docker对GPU的调用
    sudo apt-get update
    sudo apt-get install -y nvidia-container-toolkit
    sudo systemctl restart docker
  4. 编辑/etc/docker/daemon.json文件

    {
    "default-runtime": "nvidia",
    "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
    }
    }
  5. 执行sudo systemctl restart docker重启服务

  6. 安装完成后验证:nvidia-smi

二、在Rocky虚拟机上进行以下操作:

  1. 首先启用 EPEL 仓库并安装必要的开发工具和内核头文件:

    #安装 EPEL 仓库
    sudo dnf install epel-release -y
    sudo dnf upgrade -y
    #安装开发工具和内核头文件(编译驱动必需)
    sudo dnf groupinstall "Development Tools" -y
    sudo dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r) dkms -y
  2. 禁用开源的 Nouveau 驱动,因为Nouveau 会与 NVIDIA 的闭源驱动发生冲突

    #将 nouveau 加入黑名单
    echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
    echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf
    #重新生成 initramfs 并重启系统
    sudo dracut --force
    sudo reboot
    #验证,没有输出才说明金庸成功。
    lsmod | grep nouveau
  3. 添加 NVIDIA 官方仓库并安装驱动

    #添加 NVIDIA 官方仓库(针对 RHEL9/Rocky9)
    sudo dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel9/$(uname -i)/cuda-rhel9.repo
    #安装最新的 NVIDIA 驱动模块
    sudo dnf module install nvidia-driver:open-dkms -y
    #重启系统
    sudo reboot
    #验证安装
    nvidia-smi
    上一篇 rocky linux9.8从零编译、部署llama.cpp 下一篇 Ubuntu24.04安装docker compose
    评论
    评论已关闭