---
title: 在 Proxmox VE 上的 Ubuntu 24.04 虚拟机中为 Tesla V100 安装 NVIDIA 驱动和 CUDA 12.9
description: "Proxmox VE / Ubuntu 24.04 / NVIDIA CUDA # 在 Proxmox VE 上的 Ubuntu 24.04 虚拟机中为 Tesla V100 安装 NVIDIA 驱动和 CUDA 12.9 本文介绍如何将 Tesla V100 通过 PCIe 直通到 Proxmox VE 上的 OVMF 虚拟机，并在 Ubuntu 24.04 一侧安装 NVIDIA 驱动和 CUDA…"
url: "https://bestnetllc.co.jp/zh-hans/docs/%e5%9c%a8-proxmox-ve-%e4%b8%8a%e7%9a%84-ubuntu-24-04-%e8%99%9a%e6%8b%9f%e6%9c%ba%e4%b8%ad%e4%b8%ba-tesla-v100-%e5%ae%89%e8%a3%85-nvidia-%e9%a9%b1%e5%8a%a8%e5%92%8c-cuda-12-9/"
updated: "2026-06-08"
category: Tech Blog / GPU与LLM基础设施
---

# 在 Proxmox VE 上的 Ubuntu 24.04 虚拟机中为 Tesla V100 安装 NVIDIA 驱动和 CUDA 12.9

Proxmox VE / Ubuntu 24.04 / NVIDIA CUDA

# 在 Proxmox VE 上的 Ubuntu 24.04 虚拟机中为 Tesla V100 安装 NVIDIA 驱动和 CUDA 12.9

本文介绍如何将 Tesla V100 通过 PCIe 直通到 Proxmox VE 上的 OVMF 虚拟机，并在
Ubuntu 24.04 一侧安装 NVIDIA 驱动和 CUDA Toolkit 12.9。
同时也包含针对 OVMF 环境中常见的 `BAR0 is 0M @ 0x0` /
`This PCI I/O region assigned to your NVIDIA device is invalid`
问题的解决方法。

目标 GPU：Tesla V100
客户机操作系统：Ubuntu 24.04 LTS
虚拟化方式：Proxmox VE / KVM
启动方式：OVMF（UEFI）

## 本文前提条件

- Proxmox 宿主机侧的 IOMMU / VFIO 设置已完成
- GPU 直通到客户机已可正常工作
- 客户机操作系统为 Ubuntu 24.04 LTS
- 本文假定用于计算用途的虚拟机

## 验证环境配置

虚拟化平台
Proxmox VE / KVM虚拟机 BIOS
OVMF（UEFI）机器类型
q35GPU
Tesla V100 PCIe 32GB客户机操作系统
Ubuntu 24.04 LTSCUDA Toolkit
12.9

## 为何使用 CUDA 12.9

Tesla V100 是 Volta 架构的 GPU。从 CUDA 13 及更高版本开始，官方已经取消了对 Volta 架构
离线编译和库的支持，因此将 V100 的开发环境固定在 CUDA 12.x 系列会更安全。本文使用
CUDA Toolkit 12.9。

步骤 1

## 在 Proxmox 侧配置虚拟机以实现 GPU 直通

首先，配置虚拟机以实现 GPU 直通。
如果 OVMF / q35 / 主机 PCI 设置已经完成，请直接进入下一步。

```bash
qm stop 101
qm set 101 --bios ovmf
qm set 101 --machine q35
qm set 101 --hostpci0 65:00,pcie=1
qm start 101
```

**注意：**`101` 是虚拟机 ID 的示例，`65:00` 是 GPU PCI 地址的示例。
请根据实际环境的值进行替换。

步骤 2

## 在 OVMF 环境中扩大 MMIO 地址空间

这是最大的坑点。在 OVMF UEFI 虚拟机中，GPU 的 BAR 资源往往不能被充分映射，
从而导致出现 `BAR0 is 0M @ 0x0` 或
`This PCI I/O region assigned to your NVIDIA device is invalid`。
这种情况下，可以添加 `X-PciMmio64Mb` 参数来
扩大 MMIO 地址空间。

添加此设置实际上解决了在 Proxmox 的
OVMF 虚拟机上 `nvidia-smi` 无法正常工作的问题。

```bash
qm stop 101
qm set 101 --args '-fw_cfg name=opt/ovmf/X-PciMmio64Mb,string=262144'
qm start 101
```

**要点：**更改后请
**完全关闭虚拟机后再重新启动**，而不是仅仅重启客户机操作系统。

步骤 3

## 在 Ubuntu 24.04 上安装所需软件包

在安装 NVIDIA 驱动和 CUDA Toolkit 之前，请先安装内核头文件和构建相关工具。

```bash
sudo apt update
sudo apt install -y linux-headers-$(uname -r) gcc g++ make wget pciutils
```

步骤 4

## 添加 NVIDIA 官方仓库

为 Ubuntu 24.04 添加 NVIDIA 官方 APT 仓库。

```bash
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
```

步骤 5

## 安装 NVIDIA 驱动

安装前请将驱动固定为 580 系列。V100 目前仍受 580 系列支持。

```bash
sudo apt install -y nvidia-driver-pinning-580
sudo apt install -y cuda-drivers
```

如果希望采用不含 GUI 的纯计算配置，也可以根据需要
切换为基于精简版 `libnvidia-compute` 和 `nvidia-dkms` 的方案，
但建议先用 `cuda-drivers` 确认可以正常工作，思路会更清晰。

步骤 6

## 固定版本并安装 CUDA Toolkit 12.9

为了避免自动追踪最新的 CUDA 版本，请使用元软件包 `cuda-toolkit-12-9` 来
锁定在 12.9 系列。

```bash
sudo apt install -y cuda-toolkit-12-9
```

**如果磁盘空间紧张：**完整的 Toolkit 体积相当大，因此可以先
仅安装运行时和编译器。

```bash
sudo apt install -y cuda-runtime-12-9 cuda-compiler-12-9
# Add development libraries later if needed
sudo apt install -y cuda-libraries-dev-12-9
```

步骤 7

## 设置 PATH 并重启

为了让 `nvcc` 更易于使用，请设置 PATH 和库路径，然后重启。

```bash
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
sudo reboot
```

步骤 8

## 验证运行情况

重启后，请验证 GPU 是否可见、驱动是否正常加载，
以及 CUDA 编译器是否可用。

```bash
source ~/.bashrc
uname -r
lspci | grep -i nvidia
nvidia-smi
nvidia-smi -L
nvcc --version
dmesg -T | grep -E 'NVRM|BAR0|nvidia'
```

如果安装正确，`nvidia-smi` 将会显示 Tesla V100，
而 `nvcc --version` 将会显示 CUDA 12.9。

## 故障排查

### 出现 `BAR0 is 0M @ 0x0`

这几乎可以肯定是 OVMF 的 MMIO 地址空间不足所致。请先应用
`qm set 101 --args '-fw_cfg name=opt/ovmf/X-PciMmio64Mb,string=262144'`，
完全关闭虚拟机后再重新启动。

### `nvidia-smi` 无法与驱动通信

驱动内核模块可能未被加载。请先检查 OVMF 的 MMIO
设置，然后再检查模块状态。

```bash
lsmod | grep -E 'nvidia|nouveau'
sudo journalctl -k -b | grep -Ei 'nvidia|nouveau|secure|module verification'
```

### 安装 Toolkit 过程中磁盘空间耗尽

完整的 Toolkit 体积较大，因此在可用空间有限的虚拟机上安装可能会中途失败。
此时请清理缓存，并切换为精简的软件包配置以确保安全。

```bash
df -h /
sudo apt clean
sudo apt autoremove -y
sudo apt --fix-broken install
```

## 总结

在 Proxmox VE 上的 Ubuntu 24.04 虚拟机中，为 Tesla V100 安装 NVIDIA 驱动和
CUDA Toolkit 本身并不困难。但是在 OVMF 虚拟机上，MMIO 地址空间不足
可能导致 NVIDIA 驱动无法启动，因此配置
`X-PciMmio64Mb` 成为一个实用的关键点。

今后在搭建相同配置时，建议从一开始就同时配置好
**OVMF / q35 / PCIe** 以及
**MMIO 地址空间扩展**。

## 参考信息

- [CUDA Installation Guide for Linux](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/)
- [NVIDIA Driver Installation Guide for Ubuntu](https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/ubuntu.html)
- [Known Issues with Large BAR in KVM/UEFI VM](https://docs.nvidia.com/vgpu/latest/known-issues/bug-200719557-vgpu-graphics-driver-fails-to-load-linux-kvm-vm.html)
- [Proxmox VE PCI(e) Passthrough](https://pve.proxmox.com/wiki/PCI%28e%29_Passthrough)

## 免责声明

本文是基于撰写时的验证环境编写的。我们不对文中所述内容的
准确性、完整性、实用性，或在特定环境下的运行情况做任何保证。
文中所述的步骤和行为，可能会因操作系统、内核、GPU、固件、BIOS/UEFI、Proxmox VE、
NVIDIA 驱动、CUDA Toolkit 等的版本差异或更新状态而有所不同。

- 本文中的步骤包括 GPU 直通、内核模块安装以及启动配置的变更。
- 实施前请准备好备份、快照及维护计划，并在测试环境中充分验证。
- 因使用本文内容而导致的任何缺陷、宕机、故障、数据丢失或其他损失，我们概不负责。
- 在生产环境中的实施，由用户自行判断并承担相应责任。
- 文中提及的产品名称、服务名称及公司名称，均为其各自公司的商标或注册商标。
