VFIO-Bindung
Damit bestimmte Geräte (z. B. GPU, Netzwerkkarte, USB-Controller) vom Host nicht verwendet und stattdessen exklusiv an die VM durchgereicht werden können, müssen sie an den vfio-pci
-Treiber gebunden werden.
1. Geräte-IDs herausfinden
Zuerst die PCI-Adressen und Hersteller-IDs der betroffenen Geräte ermitteln:
lspci -nn
Achte auf eine Zeile wie:
03:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller X540-AT2 [8086:1528]
Wichtiger Teil: 8086:1528
ist die Geräte-ID.
2. VFIO-Konfigurationsdatei anlegen
sudo nano /etc/modprobe.d/vfio.conf
Beispiel-Inhalt für GPU und Netzwerkkarte:
options vfio-pci ids=10de:2705,10de:22bb,8086:1528
3. Treiberkonflikte vermeiden
Folgende Blacklist-Dateien können erstellt werden, um zu verhindern, dass der Host diese Treiber lädt:
sudo nano /etc/modprobe.d/blacklist-nvidia.conf
Inhalt:
blacklist nouveau
blacklist nvidia
Analog z. B. für Intel-Netzwerk:
sudo nano /etc/modprobe.d/blacklist-ixgbe.conf
Inhalt:
blacklist ixgbe
4. Initramfs neu erstellen
sudo mkinitcpio -P
5. Reboot
sudo reboot
6. Prüfung nach Neustart
Nach dem Reboot:
lspci -nnk | grep -A 3 '03:00'
Die Ausgabe sollte z. B. enthalten:
Kernel driver in use: vfio-pci
Wenn stattdessen weiterhin ein anderer Treiber steht, ist die Bindung noch nicht korrekt.
Tipps
- IDs genau prüfen, vor allem bei Geräten mit mehreren Funktionen.
- Auch Audio-Devices bei GPUs mit HDMI-Sound nicht vergessen (z. B.
10de:22bb
). vfio-pci.ids
in der GRUB-Konfiguration ist nicht nötig, wenn korrekt per modprobe gebunden.
Weiter mit: Gerätezuweisung