在 Proxmox VE 上的 Ubuntu 24.04 VM 中為 Tesla V100 安裝 NVIDIA Driver 和 CUDA 12.9

在 Proxmox VE 上的 Ubuntu 24.04 VM 中為 Tesla V100 安裝 NVIDIA Driver 和 CUDA 12.9

2 min read

Proxmox VE / Ubuntu 24.04 / NVIDIA CUDA

在 Proxmox VE 的 Ubuntu 24.04 VM 上為 Tesla V100 安裝 NVIDIA Driver 與 CUDA 12.9 #

本文說明如何在 Proxmox VE 上將 Tesla V100 以 PCIe Passthrough 方式直通給 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
Guest OS:Ubuntu 24.04 LTS
虛擬化技術:Proxmox VE / KVM
開機方式:OVMF(UEFI)

本文前提條件 #

  • Proxmox 主機端的 IOMMU / VFIO 設定已完成
  • GPU Passthrough 至客體機已可正常運作
  • Guest OS 為 Ubuntu 24.04 LTS
  • 本文以運算用途的 VM 為前提

驗證環境設定 #

Hypervisor
Proxmox VE / KVM
VM BIOS
OVMF(UEFI)
Machine Type
q35
GPU
Tesla V100 PCIe 32GB
Guest OS
Ubuntu 24.04 LTS
CUDA Toolkit
12.9

為何使用 CUDA 12.9 #

Tesla V100 屬於 Volta 世代的 GPU。自 CUDA 13 起,Volta 架構的離線編譯與
函式庫支援已被移除,因此建議將 V100 開發環境固定
在 CUDA 12.x 系列較為安全。本文使用 CUDA Toolkit 12.9。

STEP 1

在 Proxmox 端設定 VM 以進行 GPU Passthrough #

首先,設定虛擬機以進行 GPU Passthrough。
若 OVMF / q35 / Host PCI 設定已完成,請直接前往下一步。

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 無法正常運作的問題。

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

重點: 變更設定後,請務必進行
完整關機後再重新啟動,而非僅在客體系統內重新開機。

STEP 3

在 Ubuntu 24.04 上安裝所需套件 #

在安裝 NVIDIA 驅動程式與 CUDA Toolkit 之前,請先安裝核心標頭檔與建置相關工具。

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

STEP 4

加入 NVIDIA 官方軟體庫 #

為 Ubuntu 24.04 加入 NVIDIA 官方 APT 軟體庫。

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 系列支援。

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

若希望採用不含 GUI 的純運算設定,也可以
依使用情境切換為以 libnvidia-compute 與 nvidia-dkms 為基礎的精簡安裝,
但建議先以 cuda-drivers 確認一般運作正常後再進行調整。

STEP 6

固定並安裝 CUDA Toolkit 12.9 #

為避免自動追蹤至最新版 CUDA,請使用中介套件 cuda-toolkit-12-9,
鎖定為 12.9 系列。

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

容量不足時:完整 Toolkit 容量相當大,因此也可以
先只安裝執行環境與編譯器。

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

STEP 7

設定 PATH 並重新啟動 #

設定 PATH 與函式庫路徑以方便使用 nvcc,然後重新啟動。

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 編譯器是否可正常使用。

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',
接著完整關機後再重新啟動。

nvidia-smi 無法與驅動程式通訊 #

可能是驅動程式的核心模組尚未載入。請先檢查 OVMF 的 MMIO
設定,再確認模組狀態。

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

安裝 Toolkit 過程中磁碟空間不足 #

完整 Toolkit 容量較大,因此在可用空間有限的 VM 上安裝時可能會中途失敗。
此時請先清除快取,並改用精簡的套件配置以確保安全。

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 擴充。

參考資訊 #

免責聲明 #

本文係依撰寫當下的驗證環境所製作,我們並不保證
內容在特定環境中的正確性、完整性、實用性或運作結果。
依 OS、核心、GPU、韌體、BIOS/UEFI、Proxmox VE、
NVIDIA 驅動程式、CUDA Toolkit 等版本差異或更新狀態不同,本文所述之程序與行為可能有所差異。

  • 本文所述程序包含 GPU Passthrough、核心模組安裝及開機設定變更。
  • 執行前請先準備備份、快照與維運計畫,並於測試環境中充分驗證。
  • 因使用本文內容所導致之任何缺陷、停機、故障、資料遺失或其他損害,我們概不負責。
  • 於正式環境中實施與否,由使用者自行判斷並自負責任。
  • 文中提及之產品名稱、服務名稱及公司名稱,均為各該公司之商標或註冊商標。
Updated on 2026年6月9日

What are your feelings

  • Happy
  • Normal
  • Sad

©2020 BESTNET.LLC . All Rights Reserved.