🛠️ Jak skonfigurować passthrough urządzeń PCI do maszyny wirtualnej?
🔍 Czym jest PCI passthrough?
Wirtualizacja pozwala uruchamiać wiele systemów operacyjnych na jednym sprzęcie fizycznym. Jedną z zaawansowanych funkcji w tym środowisku jest PCI passthrough — czyli możliwość przekazania fizycznego urządzenia PCI (np. karta graficzna, sieciowa, kontroler USB) bezpośrednio do wybranej maszyny wirtualnej.
✅ Dzięki PCI passthrough maszyna wirtualna ma bezpośredni dostęp do sprzętu, co zwiększa wydajność i pozwala np. na akcelerację grafiki w środowiskach desktopowych lub pracę z dedykowanymi kartami w środowiskach serwerowych.
🎯 Dlaczego warto stosować PCI passthrough?
Zalety:
- 🎮 Możliwość uruchamiania gier i aplikacji 3D w maszynach wirtualnych (GPU passthrough)
- 🖥️ Dedykacja sprzętu do konkretnych zadań (np. karta sieciowa do firewalla w VM)
- 🔒 Lepsza separacja zasobów i bezpieczeństwo
- 🚀 Zmniejszenie narzutu hypervisora i zwiększenie wydajności

✅ Wymagania wstępne
- Procesor i płyta główna z obsługą IOMMU (Intel VT-d / AMD-Vi)
- BIOS/UEFI z włączonym VT-d lub AMD-Vi
- System operacyjny z obsługą passthrough (np. KVM, Proxmox, VMware ESXi)
- Urządzenie PCI kompatybilne z passthrough (np. karta graficzna lub kontroler)
🧭 Krok po kroku: Konfiguracja passthrough
🟨 Krok 1: Włączenie IOMMU w BIOS/UEFI
- Uruchom komputer i wejdź do BIOS/UEFI
- Włącz opcje:
- Intel VT-d (dla procesorów Intel)
- AMD-Vi (dla AMD)
- Zapisz i zrestartuj maszynę
🟦 Krok 2: Włączenie IOMMU w systemie operacyjnym
📌 Linux (grub)
Dla Intel:
GRUB_CMDLINE_LINUX="intel_iommu=on"
Dla AMD:
GRUB_CMDLINE_LINUX="amd_iommu=on"
Po modyfikacji wykonaj:
update-grub
reboot
🟥 Krok 3: Identyfikacja urządzenia PCI
Użyj polecenia:
lspci -nn
Zidentyfikuj urządzenie, które chcesz przekazać, np. kartę graficzną:
03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] [10de:1c82]
🟩 Krok 4: Izolacja urządzenia przez vfio-pci
Zidentyfikuj identyfikator urządzenia (vendor:device), np. 10de:1c82
Dodaj do pliku /etc/modprobe.d/vfio.conf
:
options vfio-pci ids=10de:1c82
Zrestartuj system.
🟧 Krok 5: Dodanie urządzenia PCI do maszyny wirtualnej
🔧 W KVM/libvirt (plik XML):
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</source>
</hostdev>
🖥️ W Proxmox:
Dodaj do konfiguracji VM w pliku vmID.conf
:
hostpci0: 03:00,pcie=1
🧱 W VMware ESXi:
- W zakładce „Host” wybierz „Advanced Settings” i włącz „DirectPath I/O”
- Dodaj urządzenie PCI do maszyny przez GUI
🧪 Jak sprawdzić, czy passthrough działa?
- Uruchom maszynę wirtualną
- W systemie gościa (VM) sprawdź, czy urządzenie jest widoczne:
- Linux:
lspci
- Windows: „Menedżer urządzeń”
- Linux:
- Zainstaluj sterowniki (np. NVIDIA lub AMD dla GPU)
📊 Praktyczne zastosowania
Urządzenie PCI | Zastosowanie |
---|---|
Karta graficzna (GPU) | Gry, obróbka wideo, AI/ML |
Karta sieciowa (NIC) | Firewall, router, środowisko testowe |
Kontroler USB | Dedykowane porty USB dla VM |
Karta RAID/SAS | Dedykowane magazyny danych dla konkretnej maszyny |
⚠️ Problemy i wskazówki
- ❗ Nie wszystkie urządzenia PCI wspierają passthrough — warto sprawdzić dokumentację producenta
- 💡 Czasami potrzebne są dodatkowe flagi kernelowe (np.
pci-stub
) - 🛑 GPU NVIDIA może wymagać modyfikacji do obejścia „Error 43” w systemach Windows (np. QEMU fake ID)
🧩 Podsumowanie
Passthrough urządzeń PCI to zaawansowana, ale bardzo przydatna funkcja środowisk wirtualnych. Dzięki niej możesz w pełni wykorzystać fizyczne zasoby sprzętowe w maszynach wirtualnych bez rezygnowania z elastyczności, jaką daje wirtualizacja. Jeżeli zależy Ci na wysokiej wydajności i bezpośrednim dostępie do sprzętu, to rozwiązanie jest właśnie dla Ciebie.