Skip to main content

Proxmox GPU Passthrough with GTX 1050 Ti

這篇文章完整記錄在 Proxmox VE PVE 上,將 NVIDIA GTX 1050 Ti 透過 PCI Passthrough 直通給 VM,並在 VM 內成功啟用 NVIDIA Driver + CUDA 的實務流程。

內容以實際踩過的路為基礎,目標是「可重現、可維護、一次成功」。


架構與前提

  • Host:Proxmox VE
  • GPU:NVIDIA GeForce GTX 1050 Ti Pascal
  • VM:Linux Ubuntu Server
  • 用途:CUDA、AI、Docker GPU

限制說明:

  • GTX 1050 Ti 無 SR-IOV,一張卡只能給一台 VM
  • Passthrough 後,Host 無法再使用該 GPU

一 啟用 IOMMU

BIOS 設定

AMD 平台請確認:

  • SVM Enabled
  • IOMMU Enabled

GRUB 設定

編輯

/etc/default/grub

設定

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

更新並重開

update-grub
reboot

驗證

dmesg | grep -e IOMMU -e AMD-Vi

看到 IOMMU detected 即成功。


二 綁定 GPU 到 vfio-pci

找出 GPU PCI ID

lspci -nn | grep -E "VGA|Audio"

範例輸出

08:00.0 VGA compatible controller NVIDIA GTX 1050 Ti [10de:1c82]
08:00.1 Audio device NVIDIA HDMI Audio [10de:0fb9]

設定 vfio

/etc/modprobe.d/vfio.conf

內容

options vfio-pci ids=10de:1c82,10de:0fb9 disable_vga=1

Blacklist NVIDIA Driver on Host

/etc/modprobe.d/blacklist-nvidia.conf
blacklist nouveau
blacklist nvidia
blacklist nvidiafb

更新 initramfs

update-initramfs -u -k all
reboot

驗證

lspci -nnk -d 10de:

必須看到

Kernel driver in use: vfio-pci

三 VM 設定

基本設定

  • Machine:q35
  • BIOS:OVMF UEFI
  • Display:none

加入 PCI Device

Add PCI Device

  • Device:08:00.0
  • 勾選
    • All Functions
    • Primary GPU
    • PCI-Express

不要加入 AMD 主機板音效裝置。


四 Console 行為說明

設定 Primary GPU + Display none 後:

  • noVNC 無法使用
  • SPICE 無法使用
  • Failed to run vncproxy 為正常現象

顯示輸出只會走實體 GPU。

Linux CLI VM 可使用:

  • SSH
  • xterm.js Serial Console

五 VM 內安裝 NVIDIA Driver

建議版本

GTX 1050 Ti 建議使用

  • nvidia-driver-535

原因:

  • Pascal 完整支援
  • 與 CUDA 12.x 相容
  • 穩定性最佳

安裝

sudo apt update
sudo apt install -y nvidia-driver-535
sudo reboot

驗證

nvidia-smi

看到 GPU 即成功。

nvidia-smi.png


六 CUDA Runtime 與 Toolkit 差異

nvidia-smi 顯示的 CUDA Version 代表:

  • CUDA runtime 可用

但不代表:

  • nvcc 已安裝

nvcc 屬於 CUDA Toolkit。


七 安裝 CUDA Toolkit(官方版本)

如果要安裝 Container 版本可以忽略
如果要安裝 Container 版本可以忽略
如果要安裝 Container 版本可以忽略

Kubernetes 可以使用 helm 安裝 GPU-Operator (https://docs.rke2.io/add-ons/gpu_operators?GPUoperator=v25.10.x)

不要使用

apt install nvidia-cuda-toolkit

該版本過舊,容易造成版本衝突。

加入官方 Repo

Ubuntu 22.04 範例

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

安裝 Toolkit

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

環境變數

echo 'export PATH=/usr/local/cuda-12.2/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

驗證

nvcc --version
/usr/local/cuda-12.2/extras/demo_suite/deviceQuery

看到 Result PASS 即完成。


八 成功狀態總結

完成後系統應具備:

  • Proxmox GPU Passthrough
  • NVIDIA Driver 535
  • CUDA Runtime 12.2
  • CUDA Toolkit 12.2

可直接使用於:

  • PyTorch
  • TensorFlow
  • Docker GPU
  • FFmpeg NVENC

九 常見問題

Failed to run vncproxy

正常行為,代表 GPU 已接管顯示。

nvcc not found

代表 Toolkit 未安裝,runtime 仍可用。

為什麼 driver 是 non-free

代表授權不符合自由軟體定義,並非收費或不安全。


結語

GTX 1050 Ti 雖然是舊卡,但在 Passthrough + CUDA 場景下仍具備極高 CP 值。

這套流程已在實際環境完整驗證,可作為內部 GPU VM 標準範本使用。