V100在WINDOWS下已经有大神出了脚本,使用开机加载,关机卸载的方式保驱动。
但是我愚昧的认为KVM+虚拟机+DOCKER才是终极解决方案,所以,试着按照AI教程用APT安装,发现还是碰到各种错误,尝试发现用.RUN方式安装成功率更高。
0.环境说明
①宿主机配置如下:
| CPU | E5-2696 v4 |
| RAM | 256G |
| 硬盘 | 2T NVME |
| 网卡 | 直通1个2.5G,其余为虚拟网卡 |
| 操作系统 | PVE9.1.7/DEBIAN 13 |
②虚拟机配置如下:
| CPU | 20 core 虚拟CPU |
| RAM | 80G |
| 硬盘 | 256G RAW |
| 操作系统 | DEBIAN 12 |
③推荐驱动版本:
| 驱动版本 | CUDA版本 |
| 570.195.03 | CUDA12.8 |
| 580.173.02 | CUDA13 |
1.宿主机(PVE9/DEBIAN13下安装)
注:使用root权限操作
①驱动下载:
方法一:
访问官网: 打开 NVIDIA 官方驱动下载页面。
选择参数: 在产品类型中选择 Tesla,产品系列选择 V-Service / V-Series,产品家族选择 Tesla V100。
选择系统与架构: 选择您的实际操作系统(如 Debian 12 64-bit,选择Debian 13找不到对应的驱动)和架构后进行搜索,获取对应的 .run 安装脚本
然后上传到系统目录。
方法二,直接使用wget命令下载:
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/570.86.15/NVIDIA-Linux-x86_64-570.86.15.run
注:这里给出的是cuda12.8版本的下载方法,cuda13的方法把版本改掉即可。
②安装驱动:
修改或增加源,保证写入官方标准的 Debian 软件源(包含 contrib 和 non-free)
cat <<EOF > /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
EOF
更新源索引
apt update
安装内核头文件
apt install build-essential pve-headers-$(uname -r) -y
安装NVIDIA驱动,定位到你刚才下载run文件的目录,执行:
chmod +x NVIDIA-Linux-x86_64-570.86.15.run
./NVIDIA-Linux-x86_64-570.86.15.run --dkms --no-questions --ui=none
重启计算机
reboot
③验证
在命令行输入:
nvidia-smi
显示如下内容,说明驱动已经安装成功:

④卸载:
终端执行
nvidia-uninstall
依次选择:YES,OK,OK
再按③的方法验证时已不能显示显卡具体信息了
lspci | grep -i nvidia #卸载后,使用这条指令仍然能够查看硬件信息
04:00.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100 SXM2 32GB] (rev a1)
2.虚拟机(DEBIAN12下安装)
①修改引导配置 文件(GRUB引导下的宿主机)
打开配置文件:
nano /etc/default/grub
找到 GRUB_CMDLINE_LINUX_DEFAULT="quiet" 这一行,修改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
保存退出(Ctrl+O, Enter, Ctrl+X),然后更新 GRUB:
update-grub
②添加系统内核模块(宿主机):
打开模块配置文件:
nano /etc/modules
在文件末尾添加以下四行内容:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
保存并退出。
③屏蔽 PVE 宿主机驱动(防止宿主机抢占 V100)
为了防止 PVE 宿主机在开机时尝试加载 NVIDIA 开源驱动导致显卡被锁死,必须将其加入黑名单。
打开黑名单配置文件(如果没有会自动创建):
nano /etc/modprobe.d/pve-blacklist.conf
添加以下内容:
blacklist nouveau
blacklist nvidia
blacklist nvidiafb
保存并退出。
④应用配置并重启(宿主机)
执行以下命令更新内核 initramfs 镜像,然后重启 PVE 宿主机:
Bash
update-initramfs -u -k all
reboot
重启连回后,执行以下命令验证 IOMMU 是否成功开启:
Bash
dmesg | grep -i ecap
如果有类似 IOMMU enabled 的大量输出,说明底层环境已经就绪。
⑤在虚拟机中添加 V100 直通设备(PVE面板)
- 登录 PVE 的 Web 浏览器控制台。
- 选择你需要直通 V100 的虚拟机(虚拟机建议使用 Q35 机型,引导方式选择 OVMF (UEFI))。
- 点击虚拟机的 Hardware(硬件) -> Add(添加) -> PCI Device(PCI设备)。
- 在设备下拉菜单中,找到你的 V100 显卡(例如显示为
04:00.0 3D controller: NVIDIA Corporation GV100GL [Tesla V100...])。

非常关键的勾选设置:
- 勾选
All Functions(所有功能)。 - 勾选
ROM-Bar。 - 勾选
PCI-Express(让设备以 PCIe 总线方式接入虚拟机,对 AI 性能很重要)。
点击 Add 保存。
⑥进入虚拟机安装驱动
检查显卡是否直通成功
lspci | grep -i nvidia
安装编译器和核心构建工具包
在终端中执行以下命令,安装 build-essential(它包含了 gcc、g++、make 以及报错里提到的 cc 指针):
sudo apt update
sudo apt install build-essential -y
安装当前内核的头文件(极其重要 ⚠️)
光有编译器还不够,驱动在编译时必须知道你当前虚拟机内核的底层接口定义。必须安装匹配当前内核版本的 linux-headers:
sudo apt install linux-headers-$(uname -r) -y
上传驱动文件.run
执行安装
chmod +x NVIDIA-Linux-x86_64-570.86.15.run
./NVIDIA-Linux-x86_64-570.86.15.run --dkms --no-questions --ui=none
3.其它
①正常使用V100,需要在BIOS里配置开启 Above 4G Decoding ,并使用UEFI启动模式。
②虚拟机创建时以UEFI模式启动,机型配置为Q35以获得更好的支持。
③虚拟机在BIOS里关闭安全启动(Device Manager→Secure Boot Configuration→Attempt Secure Boot,将其从 [X](开启)修改为 [ ])
近期评论