本指南為實作 GPU 直通(gpu passthrough proxmox)而設,提供從硬體檢查、BIOS 與 kernel 設定,到驅動安裝與效能驗證的可操作步驟與排錯要點,協助您在企業或家庭 server 上達到接近原生的圖形與運算效能。
誰適合閱讀:有 Linux / Proxmox 基本操作經驗的系統管理員或進階使用者;若您是初學者,建議先在非生產環境測試流程並備份資料。
本文能幫您達成:快速檢查硬體相容性、在 BIOS/UEFI 啟用 IOMMU、在 Proxmox 主機上完成 grub/kernel 與 VFIO 設定、建立支援 GPU 的 VM,並在 guest 內安裝與驗證 nvidia drivers 與顯示輸出(monitor / HDMI)。
範例硬體(僅供參考):MSI MAG B660M MORTAR MAX WIFI 主機板與 Intel Core i5-12400F 處理器。此類平台通常支援 VT-d / IOMMU 與常見 BIOS 選項;在實作前請務必確認您系統的 BIOS 條目與韌體版本以確保相容性。
範例 GPU(僅示範流程):我們以 NVIDIA GeForce RTX 5090 作為示範卡來說明直通設定與驗證步驟。若該型號在您查看時尚未上市或不被支援,請改用已被驗證的替代卡(例如 RTX 40 系列、RTX PRO / data-center 系列或 NVIDIA A 系列),並向廠商確認是否支援 vGPU / MIG / SR-IOV。
注意安全事項:在變更 BIOS 或更新韌體前,務必備份主機設定與重要資料(建立快照或備份),以便在遇到啟動或相容性問題時能迅速回滾。
關鍵要點
- 本指南為一套可執行的 gpu passthrough proxmox 部署流程,並附上快速檢查清單與常見錯誤排解步驟;請依您當前的 Proxmox 版本(例如文章示例的 Proxmox VE 8.4.9 需另行確認是否為推薦版本)調整細節。
- 建議使用已知支援 VT-d / IOMMU 的主機板與處理器;在部署前務必於 BIOS 中確認相關選項並更新主機板韌體。
- 示範包含 NVIDIA 顯示卡的直通配置與驅動安裝流程;完成驅動安裝後請使用 nvidia-smi 在 guest 中驗證 nvidia gpu 的運作,並確認實體顯示器(monitor)與 HDMI 線路接法正確。
- 關鍵 kernel 參數(例如 intel_iommu=on / amd_iommu=on)與 grub 設定是確保 IOMMU 與群組隔離正常的要點。
- 快速前置檢查清單(Quick checklist):BIOS 啟用 IOMMU/VT-d、視情況停用 Secure Boot、下載官方 Proxmox 映像並安裝、備份現有系統並建立還原點。
- 若範例 GPU 不適用,考慮 RTX 40 系列或 NVIDIA 資料中心卡,並確認是否支援 vGPU/MIG/SR-IOV,以符合您的用途(AI、渲染或 media 轉碼)。
如果您在硬體選型或相容性驗證上需要協助,加入如果有興趣了解Proxmox, 可以聯絡我們的專家。
系統介紹與使用案例概述
適合對象與技能層級:本文適合具備基本 Linux / Proxmox 操作經驗的系統管理員與進階使用者;若您為初學者,建議先在測試環境練習並完整備份。
在現代資料中心與私有雲環境中,高效能虛擬化能顯著提升資源利用率。Proxmox VE 基於 KVM 與 LXC,支援多種部署模式;當虛擬機需要直接存取實體 GPU 時,常以 GPU 直通(passthrough)達成接近原生的效能。但請注意,像 vGPU / MIG / SR-IOV 等進階功能的支援度會隨 GPU 型號與驅動不同而異,實作前務必確認該卡的支援情況。
透過直通技術,虛擬 machine 可直接存取實體顯示卡,降低虛擬化抽象層造成的延遲,對於視訊轉碼、AI 推論或 GPU 加速渲染等工作能帶來明顯效能提升。
常見使用案例與建議硬體方向(含範例與考量):
- Media server(例如 Plex / Emby):選擇支援硬體編碼/解碼且 NVENC 表現佳的 NVIDIA 卡(範例:RTX 4060 / 4070 系列或官方推薦的伺服器卡)。優先考量 NVENC 編碼效能、硬體轉碼同時數量與實體輸出需求(monitor),若需直接輸出至顯示器請確認 HDMI 連接方式。
- TrueNAS / 儲存 + 轉碼混合節點:以穩定性為首,建議使用中階或企業級 GPU(例如部分 RTX PRO / A 系列)以降低主機驅動限制;同時評估 I/O 與網路帶寬是否為瓶頸。
- AI/ML 開發與推論:若需 CUDA、vGPU 或 MIG,建議採用 NVIDIA 伺服器卡(如 A10 / A30 / A100,視預算與需求而定),並確認 PCIe 通道數、記憶體大小與系統 RAM 足以支援負載。
開始前快速準備(Quick checklist):
- 在 BIOS / UEFI 啟用 VT-d(Intel)或 AMD‑Vi(AMD)與 IOMMU。
- 確認 Proxmox host 已更新到您計畫使用的穩定版本,並檢查 kernel 與驅動相容性。
- 準備 VM 使用的 OVMF(UEFI)韌體映像(對大多數現代顯示卡建議使用 UEFI 而非 SeaBIOS)。
- 建立主機與重要 VM 的備份或快照,以便在變更後快速回滾。
若您需要針對特定工作負載(media / storage / AI)推薦最合適的 GPU 型號或要我們協助驗證硬體相容性,click expand 或直接聯絡我們的團隊(加入如果有興趣了解Proxmox, 可以聯絡我們的專家)。
硬體需求與相容性確認
硬體相容性決定 GPU 直通部署的成敗。選錯主機板、CPU 或 GPU 可能導致 IOMMU 群組(iommu group)混淆、驅動衝突或無法啟用 VFIO,增加後續排錯與 downtime 的成本。
主板、處理器與記憶體要求
基本要求是硬體必須支援虛擬化直通(VT-d / AMD‑Vi)與 IOMMU,並在 BIOS/UEFI 提供必要選項。部署前請務必檢查主機板與 CPU 的技術規格與韌體版本。
- 必需(Must):主機板與處理器支援 VT-d(Intel)或 AMD‑Vi(AMD),且能啟用 IOMMU、Above 4G decoding(對大容量 BAR 分配必要)與 ARI/ACS(如 BIOS 有此選項)。
- 建議(Recommended):採用 Proxmox 社群或廠商已驗證過的主機板與伺服器級處理器;桌機平台請選擇 Z/H 系列或明示支援 IOMMU 的型號。
- 記憶體:建議起始 32GB,AI / ML 或多 VM 並行工作負載請規劃更高容量。
範例(僅示意):本文示範平台為 MSI MAG B660M MORTAR MAX WIFI 與 Intel Core i5-12400F。請在您自己的主機板上確認該型號是否支援 VT-d / IOMMU 與 Above 4G decoding(不同 BIOS 版本的選單名稱或位置可能不同)。
GPU 型號推薦與相容性說明
並非所有 GPU 都適合做直通:部分消費級驅動會在韌體/驅動層限制虛擬化功能(例如 Windows guest 出現 Error 43)。若需 vGPU / MIG / SR-IOV 等功能,務必以官方文件或相容性表為準。
- 驗證來源:參考 NVIDIA 官方產品矩陣(Product Matrix)、Release Notes 與主機板供應商文件,以確認所選 GPU 是否支援 vGPU / MIG / SR-IOV。
- 範例推薦(依用途)Media server:中階桌面或工作站卡(例:RTX 4060 / 4070)— 優點:NVENC 支援良好、成本效益高;注意:部分桌面驅動在虛擬化上有限制。
- 混合 TrueNAS + 轉碼:穩定性為優先,考慮具良好 Linux 驅動支援的企業型卡或驗證過的桌面卡。
- AI / ML:NVIDIA A 系列或資料中心卡(A10 / A30 / A100)— 優點:支援 MIG / vGPU(視型號),提供更強大的 CUDA 與記憶體資源。
- BIOS 與控制器注意:啟用 Above 4G decoding、PCIe ARI(若有),並更新主機板控制器韌體可降低資源重排或 IOMMU group 變動的風險。
每個 PCIe 裝置在啟用 IOMMU 後會被系統分配到各自的 IOMMU 群組。良好的群組隔離(group)是能否安全傳遞裝置給 VM 的關鍵:若 GPU 與不欲傳遞的裝置同組,可能需換插槽、啟用 ACS/ARI 或調整 BIOS 設定以改善隔離。
快速檢查清單(Quick checklist)
- 於 BIOS 中啟用 VT-d / AMD‑Vi、Above 4G decoding 與 ARI(如可用)。
- 更新主機板韌體(BIOS/UEFI)與相關控制器驅動至最新穩定版本。
- 查驗您選用的 GPU 是否支援所需功能(vGPU / MIG / SR-IOV),並參考廠商文件。
- 安裝 Proxmox 前務必備份現有系統;安裝後立即更新並檢查 kernel 與驅動的相容性。
- 在 host 上執行裝置分組檢查以確認 iommu group:例如
- for d in /sys/kernel/iommu_groups/*/devices/*; do lspci -nns ${d##*/}; done
- 並記下目標 GPU 所在的 group(若與其他不欲一併傳遞的裝置同組,請評估插槽或 BIOS 設定調整)。
總結:在開始實作前,請 make sure 主機板、處理器、記憶體與 GPU 在 BIOS、韌體與驅動層面均符合 IOMMU 與 PCIe 直通需求;正確的群組管理(iommu group)與 BIOS 設定能節省大量排錯時間,為穩定的 proxmox gpu passthrough 打下基礎。
若需協助選購或驗證硬體相容性,加入如果有興趣了解Proxmox, 可以聯絡我們的專家。
gpu passthrough proxmox 完整部署流程
以下為實作導向的高階流程,把理論化為可執行的步驟:從主機底層設定到虛擬機驗證,逐步確保 GPU passthrough 在 Proxmox 上能穩定運作。每一步都附上「預期結果」與「失敗時回滾/檢查重點」,方便在排錯時迅速定位問題。
快速流程(5 步)
- BIOS 準備:
- 操作:在 BIOS/UEFI 中啟用 VT-d(Intel)或 AMD‑Vi(AMD),啟用 Above 4G decoding 與 ACS/ARI(若有),視情況停用 Secure Boot,並更新主機板韌體。
- 預期結果:系統開機後可在 kernel log 中看到 IOMMU/DMAR 訊息。
- 若失敗請檢查:是否使用正確的 BIOS 條目、是否需要韌體更新、或是否需先停用 Secure Boot。
- 安裝與更新 Proxmox:
- 操作:以官方映像安裝 Proxmox,安裝後執行 apt update && apt full-upgrade(或依官方文件),並重啟以套用 kernel 更新。
- 預期結果:Proxmox 主機為推薦的穩定版本,kernel 與套件為最新且穩定。
- 若失敗請檢查:apt sources 是否為官方 repo、是否有第三方套件衝突,必要時回到安裝前快照恢復。
- kernel 與 grub 設定:
- 操作:編輯 /etc/default/grub 在 GRUB_CMDLINE_LINUX_DEFAULT 加入對應參數(Intel: intel_iommu=on iommu=pt;AMD: amd_iommu=on iommu=pt),執行 update-grub 並重啟。
- 預期結果:開機後可透過 dmesg | grep -e DMAR -e IOMMU 看到 IOMMU 已啟用的訊息。
- 若失敗請檢查:GRUB 變更是否正確寫入、update-grub 是否成功、以及是否回到 BIOS 確認 IOMMU 已啟用。
- VFIO 與裝置綁定:
- 操作:將必要的 vfio modules 加入 /etc/modules(vfio、vfio_iommu_type1、vfio_pci、vfio_virqfd),將目標 PCI 裝置綁定到 vfio-pci 並在 /etc/modprobe.d/ 建立 vfio.conf 指定 ids,對主機驅動(nouveau/nvidia)做黑名單處理,更新 initramfs 並重啟。
- 預期結果:在 host 上執行 lspci -k -s <PCI> 時,目標裝置的 driver 顯示為 vfio-pci。
- 若失敗請檢查:lspci -k 是否仍顯示主機驅動、/etc/modprobe.d/ 設定與 initramfs 是否已更新,以及 boot log 中是否有 VFIO 錯誤。
- 建立虛擬機並配置 passthrough:
- 操作:建立 VM 並設定 machine=q35、bios=ovmf(UEFI),在 VM config 加入 hostpci(範例:hostpci0: 01:00.0,x-vga=on,pcie=1),啟動 VM 並在 guest 安裝對應驅動,使用 nvidia-smi 等工具驗證。
- 預期結果:guest 能偵測到並載入顯示卡驅動,nvidia-smi 顯示卡資訊且有正常輸出(如需 monitor/HDMI 則有畫面)。
- 若失敗請檢查:VM 的 hostpci 設定是否正確、iommu group 是否允許直通、以及 OVMF 版本與 VM machine 設定(q35)是否正確。
每步檢查重點(示例命令)
- BIOS / IOMMU 驗證:dmesg | grep -e DMAR -e IOMMU
- 列出 PCI 裝置與群組:for d in /sys/kernel/iommu_groups/*/devices/*; do lspci -nns ${d##*/}; done(確認目標 GPU 是否在獨立 iommu group)
- 檢查 VFIO 模組:lsmod | grep vfio;檢查 dmesg VFIO 訊息:dmesg | grep -i vfio
- 驅動黑名單與 initramfs:檢視 /etc/modprobe.d/blacklist.conf 並執行 update-initramfs -u(或發行版相對應指令)
建議遵循順序:BIOS → Proxmox 安裝/更新 → grub/kernel 設定 → VFIO 綁定 → VM 配置,以降低配置衝突。若在任一步驟遇到阻礙,先回到上一階段檢查 BIOS 與 iommu group 分配;若仍無法解決,請參考系統日誌並在 Proxmox 社群或廠商支援中搜尋相同硬體與 proxmox 版本的案例。
如需協助進行 VFIO 綁定或驗證設定,click expand 以獲取我們的專業支援選項;加入如果有興趣了解Proxmox, 可以聯絡我們的專家。
BIOS 設定與固件更新步驟
啟用 VT-d 與 IOMMU 設定
啟用 Intel VT-d 或 AMD‑Vi(依平台而定)是實現 PCIe 裝置直通的前提。通常可在 BIOS/UEFI 的「Advanced」、「CPU Features」或「North Bridge / Chipset」分頁找到相關選項(名稱可能為 Intel VT‑d、VT-d、AMD IOMMU 或相似字樣)。啟用後,作業系統可以開啟 IOMMU 功能並將各 PCIe 裝置分配到獨立的 iommu group,這是資源隔離與安全傳遞的基石。
BIOS 重要設定(常見項目)
- VT-d / AMD‑Vi:必須啟用以開啟 IOMMU 支援。
- Above 4G Decoding:對於大型 GPU 或多卡系統通常必需,以確保 64-bit BAR 能正確分配。
- ACS / ARI 支援:若 BIOS 提供相關選項,啟用可改善 IOMMU 群組隔離(視主機板支援程度而定)。
- PCIe Slot 設定:檢查插槽模式(x16/x8)與通道分配,避免插槽共享導致資源重排。
- Secure Boot:視情況停用可避免驅動或自訂模組簽章問題;若需啟用,需考慮為內核模組簽章或使用受信任的驅動方案。
處理 BIOS 中網路與 PCIe 插槽變動問題
在插入或移動 PCIe 裝置後,主機板可能重新分配資源,導致網路介面名稱改變或驅動行為異常。建議在調整 BIOS/UEFI 設定前先記錄現有設定(拍照或抄錄),以便出問題時快速回復。
- 網路介面名稱變更:檢查 /etc/udev/rules.d 或使用 ip link show、ls /sys/class/net 確認介面對應。
- PCIe 裝置被重排導致無法直通:重新啟動後執行 lspci 與 iommu group 檢查,必要時調整插槽或更新 BIOS。
- Secure Boot 與模組簽章錯誤導致開機失敗:可暫時停用 Secure Boot 或為自訂模組進行簽章;修改前請備份並確認回滾方案。
啟用後的檢查命令(開機後驗證 IOMMU 是否生效)
- 檢查 kernel 開機輸出中的 IOMMU 訊息:dmesg | grep -e DMAR -e IOMMU(若出現 DMAR / IOMMU enabled 訊息,表示 iommu enabled)。
- 列出並檢查 IOMMU 群組:for d in /sys/kernel/iommu_groups/*/devices/*; do lspci -nns ${d##*/}; done(確認每個裝置所屬的 iommu group)。
- 若需更詳細的 kernel log:journalctl -k | grep -i iommu 或 journalctl -b 檢視整體啟動訊息。
小提示:在測試期間可先將 GRUB 的 quiet 移除,或在 kernel 參數加入 debug,以便開機時看到更多診斷訊息;但在生產環境請在完成驗證後恢復較安靜的開機參數。
Proxmox 安裝與系統更新
請務必從官方管道下載 Proxmox 映像(建議使用官方 stable / LTS 版本);若文章範例提到特定版本(例如 Proxmox VE 8.4.9),請在部署前確認該版本在您使用時是否為推薦版本或是否有可用安全更新。安裝完成後第一時間連網並更新系統套件與 kernel 以確保相容性與安全性。
建議的更新步驟與範例指令
- 更新套件索引:apt update
- 升級套件(保守流程):apt upgrade;如需升級 kernel 或做完整升級:apt full-upgrade(依 Proxmox 官方建議執行)。
- 更新完成後重啟以套用新的 kernel 與模組:reboot
升級後的驗證(post-upgrade checks)
- 確認 kernel 與 Proxmox 版本:uname -r、pveversion -v
- 檢視系統日誌是否有錯誤:journalctl -b -p err 或 dmesg | less
- 檢查重要模組是否已載入(例如 vfio):lsmod | grep vfio
維護與風險控管建議
- 在重大升級前建立備份或快照(若使用 ZFS,可建立 dataset snapshot);生產系統建議在維護窗期間執行升級並有明確回滾計畫。
- 鎖定 Proxmox repository 設定,避免使用非官方或不相容的第三方套件來源(檢查 /etc/apt/sources.list.d/)。
- 如升級後出現驅動或模組問題,先回復快照或透過備份還原,再在測試環境逐步排查。
總結:保持 proxmox 主機與其 kernel、驅動與模組為最新且穩定的狀態,能降低在進行 gpu passthrough 時遇到相容性問題。完成升級後,花些 time 做 post-upgrade 驗證(檢查 driver / modules 載入與系統日誌),並在必要時利用快照回滾。
IOMMU 設定與 grub 修改指南
要讓實體硬體能被虛擬機直接掌控,需在開機載入層(kernel boot)啟用 IOMMU 支援。以下說明如何編輯 /etc/default/grub,加入 kernel 參數並更新 grub、重啟後驗證 iommu 是否生效與裝置分組情形。
步驟概覽(Step-by-step)
- 以編輯器開啟 /etc/default/grub,找到 GRUB_CMDLINE_LINUX_DEFAULT 一行。
- 加入對應平台的 IOMMU 參數(Intel 或 AMD),並去除或保留 debug 參數以利偵錯。
- 儲存後執行 update-grub(或發行版相對應命令),然後 reboot。
- 開機後使用 dmesg / journalctl 驗證 IOMMU 是否啟用,並列出 iommu group 以確認分組情形。
編輯 grub:範例與說明
範例(Intel):
GRUB_CMDLINE_LINUX_DEFAULT=”intel_iommu=on iommu=pt”
範例(AMD):
GRUB_CMDLINE_LINUX_DEFAULT=”amd_iommu=on iommu=pt”
- intel_iommu=on / amd_iommu=on:啟用平台對應的 IOMMU 支援。
- iommu=pt 或 iommu=on:iommu=pt 為 pass-through 模式,iommu=on 提供較完整的記憶體映射;請依 kernel 與工作負載測試選擇。
- 測試期間建議移除 quiet 以便在開機時看到更多診斷資訊。
更新 grub 並重啟
(Debian/Proxmox 範例)
update-grub
reboot
若使用其他發行版,請以該系統相對應的 grub 更新命令為準。
開機後的驗證命令與範例輸出
- 檢查 kernel 訊息是否顯示 IOMMU 啟用:dmesg | grep -e DMAR -e IOMMU
- 成功示例(示意):DMAR: IOMMU enabled
- 列出 IOMMU 群組:for d in /sys/kernel/iommu_groups/*/devices/*; do lspci -nns ${d##*/}; done
- 如需更詳細檢查:journalctl -k | grep -i iommu
常見注意事項與建議(default 與 kernel 參數)
- Intel 平台請使用 intel_iommu=on;AMD 平台請使用 amd_iommu=on,切勿混淆。
- 部分系統預設為 iommu=pt 或 iommu=on;請依 kernel 版本與實際 workload 測試哪個選項較穩定。
- 若更新後未見預期的 IOMMU 訊息,請回到 BIOS 確認 IOMMU 是否已啟用,或檢查是否有 ACS/ARI 設定影響群組分配。
完成上述步驟後,系統層面的 IOMMU 應會啟動,並可看到每個 PCIe 裝置被正確歸入各自的 iommu group。這是後續 VFIO 綁定與 GPU passthrough 能穩定運作的關鍵前置步驟。
若需代為驗證您的 Proxmox 版本與 kernel 相容性,或需要專業協助執行上述步驟,加入如果有興趣了解Proxmox, 可以聯絡我們的專家。
PCIe 裝置與 VFIO 驅動配置
當主機與虛擬機競爭硬體資源時,VFIO 可將特定 PCI 裝置完全隔離並交由虛擬機專用。正確的 PCI 管理與 VFIO 綁定,是在 Proxmox host 上穩定實現 gpu passthrough 的核心。
安全前準備(重要)
- 在進行任何變更前請建立主機快照或完整備份(尤其是生產 server)。
- 先以唯讀方式擷取現況以便回報(e.g. lspci -nn > /root/lspci-$(date +%F).txt、uname -r >> /root/system-info.txt)。
- 綁定或解除綁定前務必核對 PCI ID(避免對錯誤裝置執行 write 操作)。
在開機時載入 VFIO modules
確保系統在啟動時載入必要的 VFIO modules。編輯 /etc/modules 並加入:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
完成後重啟,並以 lsmod | grep vfio 或 dmesg | grep -i vfio 驗證模組是否已載入。
綁定裝置到 vfio-pci(步驟與範例)
在確認 IOMMU 已啟用並已取得目標 GPU 的 PCI ID(例如 0000:01:00.0 或 vendor:device 如 10de:2218)後,可依序執行:
- 列出裝置並記下 PCI ID:lspci -nn
- 檢查目前驅動:lspci -k -s 0000:01:00.0
- 臨時解除主機驅動綁定(只針對測試):echo ‘0000:01:00.0’ > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
- 將 vendor:device 加入 vfio-pci 可接受清單(若需要):echo 10de 2218 > /sys/bus/pci/drivers/vfio-pci/new_id
- 綁定裝置到 vfio-pci(臨時):echo ‘0000:01:00.0’ > /sys/bus/pci/drivers/vfio-pci/bind
注意:上述為臨時綁定;要在每次開機自動綁定,請在 /etc/modprobe.d/vfio.conf 中加入:options vfio-pci ids=10de:2218,10de:1aeb(包含 GPU 的 VGA 與 Audio vendor:device),然後更新 initramfs(例如 update-initramfs -u)。
黑名單主機驅動(避免 host 佔用)
為防止主機在啟動時載入 nouveau 或 nvidia 驅動,請在 /etc/modprobe.d/blacklist.conf 加入:
blacklist nouveau
blacklist nvidia
完成後務必更新 initramfs 並重啟,以確保黑名單與 vfio.conf 生效。
常見錯誤與檢查流程(Troubleshooting flow)
若 VFIO 模組已載入但裝置仍被 host 驅動佔用,依序檢查:
- lspci -k -s <PCI>:確認當前 driver。
- 檢視 /etc/modprobe.d/ 的 blacklist 與 vfio.conf 設定是否正確且已被納入 initramfs。
- 重新建立 initramfs:update-initramfs -u(或發行版相對指令),然後重啟。
- 檢查 kernel 日誌:dmesg | grep -i vfio、journalctl -k。
檢查與驗證(在 proxmox host)
- 檢查綁定狀態:lspci -k -s 01:00.0(driver 應顯示 vfio-pci)。
- 列出 vfio 已綁定的裝置:ls -l /sys/bus/pci/drivers/vfio-pci/
- 若變動無效,確認 /etc/modprobe.d/ 設定與 initramfs 是否已更新並已重啟。
PCI 識別與實務細節
在 proxmox host 上以 lspci -nn 取得 vendor:device ID 與 PCI slot。例如:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:2218]
01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:1aeb]
重點:通常 GPU 會有兩個相關裝置(VGA 與 Audio),兩者都應列入綁定清單以避免主機保留其中一項。

建立 vfio.conf 與更新 initramfs(範例)
建立或編輯 /etc/modprobe.d/vfio.conf,加入:
options vfio-pci ids=10de:2218,10de:1aeb
完成後請更新 initramfs(Debian/Proxmox 範例):update-initramfs -u(部分系統可能需指定 kernel:update-initramfs -u -k all)。
重啟後驗證
- 確認主機驅動未載入:lsmod | grep -E ‘nouveau|nvidia’(無輸出表示未載入)。
- 確認 vfio 綁定:lspci -k -s 01:00.0(driver 應為 vfio-pci)。
- 檢查日誌:dmesg | grep -i vfio 或 journalctl -k | grep -i vfio。
IOMMU 群組(iommu group)相關檢查
確認 GPU 是否位於獨立的 iommu group:
for d in /sys/kernel/iommu_groups/*/devices/*; do lspci -nns ${d##*/}; done
如果 GPU 與其他不欲一併傳遞的裝置在同一 group,請考慮更換插槽、啟用 ACS/ARI(若 BIOS 支援)或將整組 iommu group 一起傳遞(如情況允許)。
輸出(monitor / HDMI)驗證提示
完成 guest 內驅動安裝後,請確認顯示輸出正常:連接實體 monitor、檢查 HDMI/DisplayPort 線路,並在 guest 使用 nvidia-smi(或相應工具)驗證 GPU 是否被 guest 偵測並提供預期的 output。
VM 建立與基本設定重點(簡短回顧)
- machine:選擇 q35(較佳 PCIe 支援)。
- bios:使用 OVMF (UEFI)(較適合現代顯示卡)。
- 若 GPU 有音訊元件,請一併傳遞(e.g. hostpci0: 01:00.0,x-vga=on,pcie=1 與 hostpci1: 01:00.1,pcie=1)。
- 若遇到 OVMF 卡住或無法初始化,嘗試更新 OVMF 固件或檢查是否需要指定 romfile / multifunction=on。
常見問題與快速排查清單
- 若 主機仍佔用 GPU:檢查 lspci -k、blacklist 與 vfio.conf 是否已更新並已納入 initramfs,重建 initramfs 並重啟。
- 若 VM 卡在啟動或無法辨識 GPU:檢查 iommu group、hostpci 設定、OVMF 版本與 machine=q35。
- 收集支援用輸出:pveversion -v、uname -r、lspci -nn、iommu group 列表、dmesg | grep -e DMAR -e IOMMU 與 dmesg | grep -i vfio,方便送出給支援團隊。
總結:良好的 PCI 管理與 VFIO 綁定流程,搭配正確的 driver 黑名單、initramfs 更新與 iommu group 檢查,能將目標 GPU 與相關 device 從 host 完全隔離並交付給虛擬機使用,為穩定的 gpu passthrough 環境奠定基礎。
若您希望我們提供指導或遠端協助完成第一次 VFIO 綁定與驗證,加入如果有興趣了解Proxmox, 可以聯絡我們的專家。
驅動程式安裝與功能驗證步驟
驅動程式是讓直通 GPU 在 guest OS 中發揮效能的最後一哩。無論為 Windows 還是 Linux guest,先確認 host 已透過 vfio-pci 將裝置隔離並完成 passthrough,然後再在 guest 內安裝與驗證對應的 drivers。下面分平台說明常見流程、驗證指令與排錯捷徑。

Linux guest(Ubuntu/Debian 範例)- 安裝步驟
在 Ubuntu/Debian 類系統中可先列出可用驅動並更新套件索引:
ubuntu-drivers list
apt update
保守且相容性較高的安裝方式(範例):
apt install nvidia-driver-570
# 或(若 distro 提供)apt install nvidia-driver-570-open
注意:不同發行版與 kernel 版本對 driver 的支援不同,請以您目前的 kernel 與 distro repo 為準。若使用官方 .run 安裝器,請先移除舊驅動並在安裝前關閉圖形介面(依官方指引)。
安裝後的驗證(post-install checks)
- 確認驅動模組已載入:lsmod | grep nvidia
- 檢查 guest 是否偵測到 GPU 並由對應 driver 管理:lspci -k
- 使用監控工具檢查 GPU 狀態:nvidia-smi(顯示 GPU 型號、記憶體使用、process 與 driver version)
- 若需檢查畫面輸出(monitor / HDMI):確保實體顯示器已連接並在 guest OS 中顯示,必要時檢查 host 的 hostpci 與 x-vga 設定。
若 nvidia-smi 未顯示 GPU — 常見原因與處理步驟
| 現象可能原因建議處理 | ||
| nvidia-smi 無輸出或找不到 GPU | host 未正確綁定 vfio / 裝置仍被 host driver 占用 | 回到 host 執行 lspci -k 檢查;確認 /etc/modprobe.d/blacklist.conf 與 vfio.conf 已更新並重新 build initramfs,重啟 host。 |
| driver 模組未載入 | guest 驅動未安裝或版本與 kernel 不相容 | 在 guest 執行相容驅動安裝或更新 guest kernel,然後重啟 guest。 |
| 顯示輸出(monitor / HDMI)無訊號 | 實體輸出未正確連接或 guest driver 未啟動顯示輸出 | 確認實體 HDMI/DP 線路、VM hostpci 設定(x-vga=on)與 guest 顯示設定。 |
驅動版本選擇建議(決策簡表)
| 版本適用情境建議 | ||
| nvidia-driver-570 / 570-open | 較新、含開源變體 | 推薦於伺服器或需相容性的虛擬化環境 |
| nvidia-driver-525 | 專有驅動,效能優化較新 | 桌面/工作站或需特定效能時使用 |
| 較舊版本(如 470) | 舊型 GPU 或特殊相容性需求 | 僅在必要時使用 |
Windows guest 提示
在 Windows guest 中,請從 NVIDIA 官方網站下載對應專有驅動。使用 DDU(Display Driver Uninstaller)完全清除殘留驅動後再安裝新驅動,可降低 Error 43 等問題的機率。若遇到 Error 43,常與 guest 驅動或 VM hostpci 與 iommu group 設定相關,需回到 host 驗證 vfio 綁定。
常見錯誤排解與問題解決
即使照流程執行,gpu passthrough 環境仍可能遇到異常。建立系統化的檢查流程能快速定位問題,以下為優先檢查順序與可拷貝的診斷指令。
優先檢查順序(快速流程)
- 在 host 檢查 IOMMU 是否啟用與 VFIO 綁定(檢查 iommu group 與 lspci -k)。
- 確認 host 的驅動黑名單與 vfio.conf 已更新並包含目標 PCI ID,且已重建 initramfs(如適用)。
- 檢查 VM 設定(machine=q35、bios=ovmf、hostpci 設定與 VMID 是否正確)。
- 在 guest 內確認驅動安裝與載入(Windows: Device Manager / DDU;Linux: lsmod、nvidia-smi、lspci -k)。
- 檢視 host 與 guest 日誌(dmesg / journalctl)尋找錯誤訊息並對照修正步驟。
常用診斷指令(可複製)
- 列出 PCI 裝置與驅動:lspci -k
- 檢查 IOMMU / DMAR:dmesg | grep -e DMAR -e IOMMU
- 列出 iommu groups:for d in /sys/kernel/iommu_groups/*/devices/*; do lspci -nns ${d##*/}; done
- 檢查 vfio 模組:lsmod | grep vfio
- 查看 kernel 與系統日誌:journalctl -k -b 或 dmesg
- guest(Linux)驗證 GPU:nvidia-smi、lsmod | grep nvidia
實例提示:當問題看起來像(looks like) Error 43
若 guest 顯示「looks like 驅動問題」或 Error 43,常表示 guest 驅動未正確運作或 host 裝置仍被占用。處理流程:
- 在 host 確認 vfio 綁定與 blacklist 生效(lspci -k、lsmod)。
- 在 guest 內移除並重新安裝驅動(Windows 使用 DDU;Linux 使用 apt 安裝或 distro 指定版本)。
- 重啟 guest,並再次檢查 nvidia-smi 或 Device Manager。
若持續遇到問題,請收集以下資訊並提交給支援或社群以利診斷:pveversion -v, uname -r, lspci -nn, iommu group 列表, dmesg | grep -e DMAR -e IOMMU, dmesg | grep -i vfio 與 guest 的 nvidia-smi 輸出。
Windows vs Linux 的差異(摘要)
| 項目WindowsLinux | ||
| 驅動安裝 | 官方專有驅動,建議先用 DDU 清除 | 可透過套件管理器(apt/dnf)安裝 |
| 錯誤診斷 | Error 43 與 Device Manager | dmesg / journalctl 與 nvidia-smi |
| 輸出驗證 | 依賴 Device Manager 與外接顯示器 | 以 nvidia-smi 與 lspci -k 檢查 |
實務建議(針對不同角色)
- System administrators:優先在 host 層確認 IOMMU、vfio 綁定、blacklist 與 iommu group,並在每次變更前建立備份或快照。
- Developers / power users:於測試環境反覆驗證 guest 的 driver 版本與性能,記錄 nvidia-smi 結果以便比較。
輸出(monitor / HDMI)驗證提示
安裝驅動後,實體顯示輸出仍需確認:確保 monitor 連接到 GPU 的正確輸出埠,VM 的 hostpci 設定包含 x-vga=on(如需要),並在 guest 中確認解析度與輸出信號。若無 signal,先檢查物理線路與 host 的 vfio 綁定狀態。
總結:穩定的 drivers 管理流程包含在 host 層確保 vfio 與 blacklisting 生效、在 guest 層安裝相容驅動、並以 nvidia-smi / lspci -k / lsmod / dmesg 做完整的 post 驗證。完成這些步驟後,您的 nvidia gpu 應能在 guest 中穩定提供預期的輸出與運算效能。
如需協助處理持續的 Error 43 或 driver 相容性問題,加入如果有興趣了解Proxmox, 可以聯絡我們的專家,我們可提供進一步診斷與支援。
進階設置:SR-IOV 與 MIG 分區技術
超越基本的 GPU passthrough,SR-IOV 與 NVIDIA MIG(Multi-Instance GPU)等進階技術能顯著提升單一實體 hardware 的利用率與彈性。這些功能特別適合需把一張大型 GPU 或高效能 PCIe 裝置分配給多個工作負載或多租戶環境的企業部署。
SR-IOV 與 MIG 的核心概念與適用場景
| 技術核心原理主要優勢適用場景 | |||
| SR-IOV | 在硬體層把一個 PCI 裝置展示為多個虛擬功能(Virtual Function, VF) | 低延遲、高吞吐量、接近原生 PCI 存取 | 需多個 VM 共享同一張高效能網卡或支援 SR-IOV 的裝置(若硬體支援) |
| MIG | 在 NVIDIA 資料中心卡上,將單一 GPU 的運算核心與記憶體在硬體層分割成多個隔離實例 | 硬體級隔離、資源保證(QoS)、適合多租戶 | 多租戶 AI 推論、雲端圖形工作站或需嚴格效能隔離的場景 |
支援性核查(Hardware / BIOS / Driver 三層)
- Hardware:確認您選用的 GPU 是否支援 SR-IOV 或 MIG。MIG 常見於 NVIDIA A100/A30/A10 等資料中心卡,支援情況依型號而異;消費級 RTX 卡通常不支援 SR-IOV。
- BIOS / 主機板:確認 BIOS/UEFI 是否提供並啟用相關選項(Above 4G、ARI/ACS、SR-IOV 等),並更新主機板韌體以改善 VF 隔離能力。
- Driver / 軟體:確認驅動與管理工具(如 NVIDIA vGPU Manager)支援所需功能,部分進階功能需供應商授權或專屬軟體。
如何查詢 GPU 是否支援 MIG / SR-IOV
- 查閱 GPU 型號的官方規格頁(NVIDIA Product Matrix / Release Notes)。
- 在 host 使用廠商提供的工具或驅動資訊查詢功能支援狀況(資料中心卡通常會標示 MIG 支援)。
- 若不確定,向硬體供應商或 Proxmox 社群查詢該型號在 proxmox host 上的實務相容性。
實作與配置建議
- SR-IOV:在 BIOS 與裝置控制器層確認 SR-IOV 已啟用並設定 VF 數量,然後於 host 層建立並分派 VF 給各 VM(或以 passthrough 的方式分配)。
- MIG(NVIDIA):在 driver 與管理工具上建立 MIG 實例,為每個實例分配記憶體與運算資源,並於 Proxmox 中以相應的 vGPU 或 passthrough 方式分配。
- 使用第三方輔助工具(例如 pve-nvidia-vgpu-helper)前,務必確認工具來源可信並在測試環境驗證與您所用的 Proxmox / driver version 相容。
群組(iommu group)與資源分配影響
啟用 SR-IOV 或 MIG 會改變 PCIe 的資源分配與 iommu group 結構;在佈署前請務必確認 iommu group 與插槽分配關係,避免意外的資源共享或分組限制。若需要,可調整插槽配置或啟用 ACS/ARI(若主機板支援)來改善隔離。
結論
透過本 guide,您已掌握在 Proxmox 上實現 gpu passthrough 的關鍵步驟:從硬體與 BIOS 檢查、IOMMU 與 grub 設定、VFIO 綁定與驅動黑名單,到 VM 配置與驅動驗證。遵循這套流程能讓您的 proxmox 環境達到穩定且高效的資源分配。
一頁式快速檢查表(one‑page checklist)
- 備份 / 快照:在主機與 VM 做完整備份或建立 snapshot。
- BIOS:啟用 VT-d / AMD‑Vi、Above 4G decoding,並更新主機板韌體。
- IOMMU:編輯 /etc/default/grub 加入 intel_iommu=on 或 amd_iommu=on,執行 update-grub 並 reboot,確認 iommu enabled。
- VFIO 與黑名單:設定 /etc/modprobe.d/vfio.conf 與 blacklist,更新 initramfs 並重啟。
- VM 設定:machine=q35、bios=ovmf、hostpci 設定正確(確認 VMID 與 config 檔案一致)。
- 驅動驗證:在 guest 執行 nvidia-smi(或 Windows Device Manager)確認 nvidia gpu 被正確識別並載入驅動。
下一步建議:先在非生產 server 上完成一次完整測試部署,確認所有 post‑change 驗證(含 monitor / HDMI 輸出)正常,再將設定推到正式環境。若需要進一步協助或評估 SR-IOV / MIG 的可行性,click expand 或加入如果有興趣了解Proxmox, 可以聯絡我們的專家,我們可提供相容性驗證與顧問服務。
常見問題(FAQ)
部署前,如何確認我的硬體完全相容?
系統已啟用 IOMMU,但裝置仍無法傳遞,該怎麼辦?
若 FAQ 無法解決您的問題,請準備以下支援用資訊:pveversion -v, uname -r, lspci -nn, iommu group 列表, dmesg | grep -e DMAR -e IOMMU, 以及相關 dmesg / journalctl 輸出,然後在 Proxmox 社群或供應商支援提交以獲得更具體協助。

