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를 도입하기

3 min read

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 / 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 측에서 GPU 패스스루용 VM 설정하기 #

먼저 가상머신을 GPU 패스스루에 적합한 구성으로 설정합니다.
이미 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

포인트: 변경 후에는 게스트OS의 재시작이 아닌,
VM을 완전히 정지한 후 다시 시작합니다.

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가 불필요한 compute-only 구성으로 전환하고 싶은 경우, 용도에 따라
libnvidia-computenvidia-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
# 개발 라이브러리가 필요하면 추가
sudo apt install -y cuda-libraries-dev-12-9

STEP 7

PATH를 설정하고 재부팅 #

nvcc를 사용하기 쉽도록 PATH와 라이브러리 경로를 추가한 후 재부팅합니다.

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'
를 입력하고, VM을 완전히 종료한 후 다시 시작하십시오.

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 패스스루, 커널 모듈 도입, 부팅 설정 변경이 포함됩니다.
  • 실시 전에 반드시 백업, 스냅샷, 유지보수 계획을 준비하고, 검증 환경에서 충분히 확인하시기 바랍니다.
  • 본 문서의 내용을 이용함으로써 발생한 오작동, 중단, 장애, 데이터 손실 및 기타 어떠한 손해에 대해서도 당사는 책임을 지지 않습니다.
  • 실제 운영 환경에 대한 적용은 사용자의 판단과 책임 하에 실시하시기 바랍니다.
  • 기재된 제품명, 서비스명, 회사명은 각 사의 상표 또는 등록상표입니다.
Updated on 2026年6月9日

What are your feelings

  • Happy
  • Normal
  • Sad