---
title: Proxmox VE 上の Ubuntu 24.04 VM で Tesla V100 に NVIDIA Driver と CUDA 12.9 を導入する
description: Proxmox VE / Ubuntu 24.04 / NVIDIA CUDA …
url: "https://bestnetllc.co.jp/docs/proxmox-ve-%e4%b8%8a%e3%81%ae-ubuntu-24-04-vm-%e3%81%a7-tesla-v100-%e3%81%ab-nvidia-driver-%e3%81%a8-cuda-12-9-%e3%82%92%e5%b0%8e%e5%85%a5%e3%81%99%e3%82%8b/"
updated: "2026-10-19"
category: Tech Blog / GPU・LLM基盤
---

# Proxmox VE 上の Ubuntu 24.04 VM で Tesla V100 に NVIDIA Driver と CUDA 12.9 を導入する

Proxmox VE / Ubuntu 24.04 / NVIDIA CUDA

# Proxmox VE 上の Ubuntu 24.04 VM で Tesla V100 に NVIDIA Driver と CUDA 12.9 を導入する

Proxmox VE の OVMF 仮想マシンに Tesla V100 を PCIe パススルーし、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
ゲストOS: Ubuntu 24.04 LTS
仮想化: Proxmox VE / KVM
ブート方式: OVMF (UEFI)

## この記事の前提

- Proxmox ホスト側の IOMMU / VFIO 設定は完了している
- GPU をゲストへパススルーできる状態になっている
- ゲストOSは Ubuntu 24.04 LTS
- 本記事では compute 用 VM を想定している

## 検証構成

Hypervisor
Proxmox VE / KVMVM BIOS
OVMF (UEFI)Machine Type
q35GPU
Tesla V100 PCIe 32GBGuest OS
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 を使います。

STEP 1

## Proxmox 側で GPU パススルー向けの VM 設定にする

まずは仮想マシンを GPU パススルー向けの構成にします。
すでに OVMF / q35 / Host 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` は VMID、`65:00` は GPU の PCI アドレス例です。
実環境の値に置き換えてください。

STEP 2

## OVMF 環境では MMIO aperture を拡張する

ここが最大のハマりどころです。OVMF の UEFI VM では、GPU の BAR リソースが十分にマップされず、
`BAR0 is 0M @ 0x0` や
`This PCI I/O region assigned to your NVIDIA device is invalid`
が出ることがあります。その場合は `X-PciMmio64Mb` を追加して
MMIO aperture を広げます。

実際にこの設定を入れることで、Proxmox 上の OVMF 仮想マシンで
`nvidia-smi` が正常動作するようになりました。

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

**ポイント:** 変更後はゲストOSの再起動ではなく、
**VM をいったん完全停止してから起動**します。

STEP 3

## Ubuntu 24.04 側で必須パッケージを入れる

NVIDIA ドライバーと CUDA Toolkit の導入前に、カーネルヘッダやビルド関連ツールを入れておきます。

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

STEP 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
```

STEP 5

## NVIDIA ドライバーを入れる

ドライバーは 580 系で固定してから導入します。V100 は 580 系でもサポート対象です。

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

GUI が不要な compute-only 構成に寄せたい場合は、用途に応じて
`libnvidia-compute` と `nvidia-dkms` ベースの最小構成に
する方法もありますが、まずは `cuda-drivers` で正常動作を確認するのがわかりやすいです。

STEP 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
# 開発ライブラリが必要になったら追加
sudo apt install -y cuda-libraries-dev-12-9
```

STEP 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
```

STEP 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 aperture 不足です。まずは
`qm set 101 --args '-fw_cfg name=opt/ovmf/X-PciMmio64Mb,string=262144'`
を入れ、VM を完全停止してから起動し直してください。

### `nvidia-smi` がドライバーと通信できない

ドライバーのカーネルモジュールがロードできていない可能性があります。
まずは OVMF 側の MMIO 設定を見直し、そのうえでモジュール状態を確認します。

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

### Toolkit のインストール中にディスク不足になる

フル Toolkit は大きいため、空き容量が少ない VM では途中で失敗することがあります。
その場合はいったんキャッシュを掃除し、必要最小限のパッケージ構成に切り替えるのが安全です。

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

## まとめ

Proxmox VE 上の Ubuntu 24.04 VM で Tesla V100 を使う場合、
NVIDIA ドライバーと CUDA Toolkit の導入自体は難しくありません。
ただし、OVMF の仮想マシンでは MMIO aperture が不足して
NVIDIA ドライバーが起動しないことがあるため、
`X-PciMmio64Mb` の設定が実質的なキーポイントになります。

これから同じ構成を組む場合は、**OVMF / q35 / PCIe** と
**MMIO aperture の拡張**を最初からセットで入れておくとスムーズです。

## 参考情報

- [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)
- [KVM/UEFI VM での large BAR 関連既知事象](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)

## 免責事項

本記事は執筆時点の検証環境に基づいて作成しています。記載内容の正確性、完全性、
有用性、特定環境での動作を保証するものではありません。
OS、カーネル、GPU、ファームウェア、BIOS/UEFI、Proxmox VE、
NVIDIA ドライバー、CUDA Toolkit などのバージョン差異や更新状況により、
記載した手順や挙動が異なる場合があります。

- 本記事の手順には、GPU パススルー、カーネルモジュールの導入、起動設定の変更が含まれます。
- 実施前に、必ずバックアップ、スナップショット、メンテナンス計画を用意し、検証環境で十分に確認してください。
- 本記事の内容を利用したことによって生じた不具合、停止、障害、データ消失、その他いかなる損害についても、当社は責任を負いません。
- 実運用環境への適用は、利用者の判断と責任において実施してください。
- 記載している製品名、サービス名、会社名は、各社の商標または登録商標です。
