V100 LINUX/Docker下驱动安装 CUDA12.8/CUDA13

V100在WINDOWS下已经有大神出了脚本,使用开机加载,关机卸载的方式保驱动。

但是我愚昧的认为KVM+虚拟机+DOCKER才是终极解决方案,所以,试着按照AI教程用APT安装,发现还是碰到各种错误,尝试发现用.RUN方式安装成功率更高。

0.环境说明

①宿主机配置如下:

CPUE5-2696 v4
RAM256G
硬盘2T NVME
网卡直通1个2.5G,其余为虚拟网卡
操作系统PVE9.1.7/DEBIAN 13

②虚拟机配置如下:

CPU20 core 虚拟CPU
RAM80G
硬盘256G RAW
操作系统DEBIAN 12

③推荐驱动版本:

驱动版本CUDA版本
570.195.03CUDA12.8
580.173.02CUDA13

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 软件源(包含 contribnon-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面板)

  1. 登录 PVE 的 Web 浏览器控制台。
  2. 选择你需要直通 V100 的虚拟机(虚拟机建议使用 Q35 机型,引导方式选择 OVMF (UEFI))。
  3. 点击虚拟机的 Hardware(硬件) -> Add(添加) -> PCI Device(PCI设备)
  4. 在设备下拉菜单中,找到你的 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(它包含了 gccg++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](开启)修改为 [ ]

发表回复

Your email address will not be published.