Ubuntu 22.04下N卡2080Ti解锁VGpu实战:从驱动安装到KVM虚拟机配置全流程
Ubuntu 22.04下NVIDIA 2080Ti显卡VGpu虚拟化全流程指南在Linux环境下实现NVIDIA显卡的虚拟化共享一直是个技术难点尤其是对于消费级显卡用户而言。本文将详细介绍如何在Ubuntu 22.04系统中为NVIDIA GeForce RTX 2080Ti显卡解锁VGpu功能并配置KVM虚拟机完整使用流程。1. 准备工作与环境配置在开始之前我们需要确保系统环境满足基本要求。Ubuntu 22.04 LTS是最佳选择因为它提供了长期支持且内核版本较新。我的测试平台配置如下CPU: Intel Core i7-10700K主板: Z490芯片组内存: 32GB DDR4 3200MHz显卡: NVIDIA GeForce RTX 2080Ti 11GB系统: Ubuntu 22.04.3 LTS首先更新系统并安装必要的工具包sudo apt update sudo apt full-upgrade -y sudo apt install -y git build-essential dkms unzip python3-pip mdevctl jq注意建议在执行完整系统更新后重启一次确保所有更新生效。2. 驱动准备与补丁应用NVIDIA官方对消费级显卡的VGpu功能进行了锁定我们需要通过社区开发的补丁来解锁这一限制。2.1 获取必要工具和补丁git clone https://github.com/VGPU-Community-Drivers/vGPU-Unlock-patcher.git -b 525.105 --recursive git clone https://github.com/mbilker/vgpu_unlock-rs.git2.2 下载特定版本驱动我们需要两个特定版本的NVIDIA驱动GRID驱动用于VGpu功能标准驱动用于补丁合并wget https://github.com/justin-himself/NVIDIA-VGPU-Driver-Archive/releases/download/525.105.14/NVIDIA-Linux-x86_64-525.105.14-vgpu-kvm.run wget https://download.nvidia.com/XFree86/Linux-x86_64/525.105.17/NVIDIA-Linux-x86_64-525.105.17.run将下载的驱动文件移动到vGPU-Unlock-patcher目录下。2.3 应用补丁进入vGPU-Unlock-patcher目录执行chmod x patch.sh ./patch.sh general-merge此操作会生成一个合并后的驱动目录NVIDIA-Linux-x86_64-525.105.17-vgpu-kvm-merge-patched。3. 系统配置与驱动安装3.1 启用IOMMU和VFIO编辑/etc/default/grub文件根据CPU类型添加相应参数Intel处理器GRUB_CMDLINE_LINUX_DEFAULTintel_iommuon iommuptAMD处理器GRUB_CMDLINE_LINUX_DEFAULTamd_iommuon iommupt更新grub并重启sudo update-grub sudo reboot3.2 禁用Nouveau驱动echo blacklist nouveau | sudo tee /etc/modprobe.d/disable-nouveau.conf echo options nouveau modeset0 | sudo tee -a /etc/modprobe.d/disable-nouveau.conf sudo update-initramfs -u3.3 安装合并后的驱动进入生成的补丁驱动目录执行sudo ./nvidia-installer --dkms安装过程中保持默认选项即可。4. VGpu解锁与配置4.1 编译并安装vgpu_unlockcd ../vgpu_unlock-rs cargo build --release sudo cp ./target/release/libvgpu_unlock_rs.so /usr/local/lib4.2 配置系统服务创建服务配置文件sudo mkdir -p /etc/systemd/system/nvidia-{vgpu-mgr,vgpud}.service.d echo [Service] EnvironmentLD_PRELOAD/usr/local/lib/libvgpu_unlock_rs.so | sudo tee /etc/systemd/system/nvidia-{vgpu-mgr,vgpud}.service.d/vgpu_unlock-rs.conf /dev/null启用服务sudo systemctl enable nvidia-{vgpu-mgr,vgpud}.service sudo systemctl start nvidia-{vgpu-mgr,vgpud}.service5. 创建虚拟GPU设备5.1 查看可用VGpu类型mdevctl types输出示例nvidia-262 Available instances: 1 Device API: vfio-pci Name: GRID RTX6000-12Q Description: num_heads4, frl_config60, framebuffer12288M, max_resolution7680x4320, max_instance25.2 创建并定义MDEV设备UUID$(uuidgen) mdevctl start -u $UUID -p 0000:01:00.0 --type nvidia-262 mdevctl define -a -u $UUID提示0000:01:00.0需要替换为你的显卡实际PCI地址可通过lspci | grep NVIDIA查看。6. KVM虚拟机配置6.1 安装KVM及相关工具sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager sudo usermod -aG libvirt $(whoami) sudo usermod -aG kvm $(whoami)6.2 创建虚拟机并添加VGpu使用virt-manager图形界面创建虚拟机时在添加硬件中选择MDEV Host Device然后选择之前创建的设备UUID。或者使用virsh命令行hostdev modesubsystem typemdev modelvfio-pci source address uuid67b12fbc-dd76-4dd5-9bc4-f216190801d6/ /source /hostdev6.3 安装虚拟机驱动在虚拟机中安装从GRID驱动包中提取的Guest_Drivers路径通常为NVIDIA-Linux-x86_64-525.105.14-vgpu-kvm.run/Grid_15.2/Guest_Drivers7. 高级配置与优化7.1 帧率限制解除默认情况下VGpu会限制帧率为60FPS可以通过以下命令解除echo frame_rate_limiter0 | sudo tee /sys/bus/mdev/devices/$UUID/nvidia/vgpu_params7.2 显卡超频设置在宿主机上可以对显卡进行超频设置nvidia-settings -a [gpu:0]/GPUGraphicsClockOffset[4]260 nvidia-settings -a [gpu:0]/GPUMemoryTransferRateOffsetAllPerformanceLevels2000 nvidia-smi --lock-gpu-clocks300,18757.3 授权服务器配置虽然NVIDIA官方要求使用授权服务器但社区提供了替代方案docker run --name dls -d -e DLS_URL192.168.122.1 -e DLS_PORT1234 -p 1234:443 makedie/fastapi-dls docker update --restartalways dls在虚拟机中将获取的token文件放置在C:\Program Files\NVIDIA Corporation\vGPU Licensing\ClientConfigToken然后重启NvContainerLocalSystem服务。