ProxmoxでGPUをパススルーして使いたくて仕方ない人へ

力、欲しがち
ここで記載してるEmbedding用サーバを構築するにあたって、GPUをパススルーで使えるように設定する必要があったので、やったことを書いておきます。
うちはIntelのCPUとNvidiaのGPUだったので、そんな環境における手順になります。
はじめに
Intel VT-dという機能にマザーボードおよびCPUが対応していないとパススルーできません。
BIOS/UEFIの設定で探して、有効にしましょう。
CPU関連、セキュリティのとこにありがちです。
Geminiくんによれば、SR-IOV[1]、Above 4G Decoding[2]も有効にしとくといいらしい。
Proxmoxの設定
Proxmoxのシェルにログインし、設定ファイルを編集しましょう。
IOMMUの有効化
/etc/default/grub を開き、GRUB[3]の起動引数を編集します。
# これ記載する
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
編集後、update-grubを実行したのち、再起動します。
上がってきたら、dmesgを実行しましょう。
# dmesg | grep -i virtualization
[*.******] DMAR: Intel(R) Virtualization Technology for Directed I/O
VT-dが出てたらOK。
カーネルモジュールの追加
/etc/modulesに以下の4行を追記します。
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
GPUをホストから切り離す
GPUのIDを確認し、Proxmoxがドライバをロードしないようにしましょう。
lspci -nn | grep -i nvidiaを実行するとGPUの情報がどばっと出るので、ID(例: [10de:2484])をメモしておきましょう。
/etc/modprobe.d/vfio.conf を作成し、以下を記述します。
options vfio-pci ids=メモしたID1,メモしたID2
※映像と音声の2つのIDがある場合が多い。
Proxmox上の仮想マシン設定
GPUをパススルーさせたい仮想マシンを作成します。
設定
- Machine : q35
- BIOS : OVMF (UEFI)
- Processor Type: host
- Memory: 「Ballooning Device」を無効
で作るのがよいらしい。
Hardware > Add > EFI Diskも追加しときましょう。(OVMFを選択すると必要っぽい?)
そして満を持して、Hardware > Add > PCI DeviceのRaw Devicesのとこに刺してるGPUが出てくるはずなので、All Functions, ROM-Bar, Primary GPUを有効にして追加しましょ。
ここまでできれば、直接GPUぶっ刺してるのと同じ状態で仮想マシンが上がってくることになります。やったね。
ドライバのインストール
Ubuntuでの手順を書きます。
NVIDIA公式リポジトリの追加
Ubuntu標準のドライバよりも、最新のCUDAを追える公式リポジトリを推奨します。
# 既存のドライバを削除
sudo apt-get purge nvidia* -y
# 依存パッケージとリポジトリ設定(Ubuntu 22.04/24.04共通)
sudo apt update
sudo apt install build-essential ubuntu-drivers-common -y
# 推奨ドライバの確認
ubuntu-drivers devices
出力結果の例↓。
# ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:1c.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002488sv00001462sd00003902bc03sc00i00
vendor : NVIDIA Corporation
model : GA104 [GeForce RTX 3070 Lite Hash Rate]
driver : nvidia-driver-570 - third-party non-free
driver : nvidia-driver-580-open - distro non-free recommended
driver : nvidia-driver-580-server-open - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : nvidia-driver-565 - third-party non-free
driver : nvidia-driver-565-open - third-party non-free
driver : nvidia-driver-535-open - distro non-free
driver : nvidia-driver-470 - third-party non-free
driver : nvidia-driver-580 - distro non-free
driver : nvidia-driver-570-open - third-party non-free
driver : nvidia-driver-535 - distro non-free
driver : nvidia-driver-580-server - distro non-free
driver : nvidia-driver-570-server - distro non-free
driver : nvidia-driver-570-server-open - distro non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
Nvidiaドライバのインストール
通常は、推奨(recommended)と出たものを入れればOKですが、-openと名前についてるバージョンは罠です。 同じバージョンの-open抜きのものを選択しましょう。
↓参考(お世話になりました)
# インストール
sudo apt install nvidia-driver-580 -y
インストールが終わったら再起動します。
動作確認
再起動後、nvidia-smiを実行しましょう。
# nvidia-smi
Thu Jan 15 18:09:16 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.95.05 Driver Version: 580.95.05 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3070 Off | 00000000:01:00.0 Off | N/A |
| 0% 31C P8 11W / 240W | 2415MiB / 8192MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 1407 G /usr/lib/xorg/Xorg 4MiB |
| 0 N/A N/A 1796 C /opt/conda/bin/python 2384MiB |
+-----------------------------------------------------------------------------------------+
このように、GPUの名前と、メモリ使用状況が表示されれば成功です!
お疲れさまでした。



