チラシの裏

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

Cover Image for ProxmoxでGPUをパススルーして使いたくて仕方ない人へ
uboakun
uboakun
Created: 2026/01/15

力、欲しがち

https://blog.uboakun.com/posts/what-is-this-site
ここで記載してる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 DeviceRaw 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抜きのものを選択しましょう。

↓参考(お世話になりました)
https://qiita.com/y-vectorfield/items/72bfb66d8ec85847fe2f

# インストール
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の名前と、メモリ使用状況が表示されれば成功です!
お疲れさまでした。

脚注
  1. 1つの物理PCIeデバイス(NICなど)を複数の仮想マシン(VM)が直接共有・利用できるようにするハードウェア仮想化技術、らしい。 ↩︎

  2. PCI Expressデバイスが4GB以上のメモリ領域を利用できるようにする機能。 ↩︎

  3. GRUBが何かと言うと……BIOS/UEFIの次の段階のやつ? OSを起動するえらいやつっぽい。 ↩︎

関連記事

Cover Image for 何なんこのサイト
2026/01/15

何なんこのサイト

このサイトについての説明をしています。

uboakun
uboakun
Cover Image for これまで私があなたをどう扱ってきたのかを画像にしてください
2026/01/22

これまで私があなたをどう扱ってきたのかを画像にしてください

巷で流行っている「これまで私があなたをどう扱ってきたのかを画像にしてください」をやってみた。

uboakun
uboakun
Cover Image for Zenn Markdown記法のテスト
2024/12/24

Zenn Markdown記法のテスト

ZennのMarkdown記法が正しく動作するかテストする記事です。コードブロック、引用、リスト、テーブルなど様々な記法を試します。

テストユーザー
テストユーザー