Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
vfio [Le 08/02/2022, 16:47] lyondif02 [Pré-Requis] typo. |
vfio [Le 12/09/2022, 09:09] (Version actuelle) 82.65.161.11 typo |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | |||
{{tag> Virtualisation qemu dexter74 vfio}} | {{tag> Virtualisation qemu dexter74 vfio}} | ||
---- | ---- | ||
- | ====== VFIO PASSTHROUGH ====== | + | ====== -=[ VFIO PASSTHROUGH ]=- ====== |
Le VFIO ((Virtual Function Input/Output)) PASSTHROUGH consiste à décharger le pilote d’un matériel – carte graphique, USB, souris… – pour l’assigner, par exemple, à une machine virtuelle. | Le VFIO ((Virtual Function Input/Output)) PASSTHROUGH consiste à décharger le pilote d’un matériel – carte graphique, USB, souris… – pour l’assigner, par exemple, à une machine virtuelle. | ||
- | Cette technique suppose des pré-requis. Elle nécessite du matériel plus ou moins facile à réaliser. FIXME Indiquer où il faut le fabriquer ? | + | Cette technique suppose des pré-requis. Elle nécessite du matériel plus ou moins facile à réaliser. FIXMEIndiquer où il faut le fabriquer ? |
L’intérêt du //passthrough// est notamment de pouvoir bénéficier de l’accélération 3D d’une carte graphique sur la machine virtuelle, ou encore d’une meilleure gestion d’une souris ou d’un clavier spécifique sur cette machine virtuelle. | L’intérêt du //passthrough// est notamment de pouvoir bénéficier de l’accélération 3D d’une carte graphique sur la machine virtuelle, ou encore d’une meilleure gestion d’une souris ou d’un clavier spécifique sur cette machine virtuelle. | ||
Ligne 19: | Ligne 18: | ||
- | ===== Pré-Requis ===== | + | ===== Pré-requis ===== |
* Avoir activé la fonction **IOMMU**((Input/Output Memory Management Unit)) du BIOS – donc au niveau du matériel. Activer le mode « 64 bits » s’il est disponible dans le BIOS. | * Avoir activé la fonction **IOMMU**((Input/Output Memory Management Unit)) du BIOS – donc au niveau du matériel. Activer le mode « 64 bits » s’il est disponible dans le BIOS. | ||
Ligne 28: | Ligne 27: | ||
* Disposer des caractéristiques techniques de son matériel. En l’occurrence, connaitre la référence des deux GPU disponibles. | * Disposer des caractéristiques techniques de son matériel. En l’occurrence, connaitre la référence des deux GPU disponibles. | ||
- | ===== Obtentions des Informations Matériels ===== | + | ===== Obtention des informations sur le matériel ===== |
- | Il existe 2 Types d'adresse : | + | Il existe deux types d’adresse : |
- | * L'adresse de l'emplacement du matériel sur la carte-mère. | + | * l’adresse de l’emplacement du matériel sur la carte mère ; |
- | * L'adresse ** VendorID**:**DeviceID ** ou plus souvent appelée ** vendeur**:**périphérique ** . Celle-ci est composée de deux parties séparées par deux points **:** | + | * l’adresse **VendorID:DeviceID**, ou plus souvent appelée **vendeur:périphérique**. Celle-ci est composée de deux parties séparées par deux points « : ». |
==== Étape 1: Vérification de la prise en charge de IOMMU / Virtualisation processeur ==== | ==== Étape 1: Vérification de la prise en charge de IOMMU / Virtualisation processeur ==== | ||
Ligne 44: | Ligne 43: | ||
<code bash>dmesg | grep "AMD-Vi\|Intel VT-d" </code> | <code bash>dmesg | grep "AMD-Vi\|Intel VT-d" </code> | ||
- | Vous devriez obtenir | + | Vous devriez obtenir |
<code>AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40 </code> | <code>AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40 </code> | ||
Qui indique que le module IOMMU a bien été trouvé | Qui indique que le module IOMMU a bien été trouvé | ||
Ligne 51: | Ligne 50: | ||
L'interruption de l'assignement du matériel est activée (Enable), sans ce paramètre on ne pourra pas faire le VFIO. | L'interruption de l'assignement du matériel est activée (Enable), sans ce paramètre on ne pourra pas faire le VFIO. | ||
- | === Prise en Charge de la Virtualisation === | + | === Prise en Charge de la Virtualisation === |
Saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante: | Saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante: | ||
- | <code bash>lscpu | grep "Virtualisation" </code> | + | <code bash>lscpu | grep "Virtualization" </code> |
Devrait répondre | Devrait répondre | ||
- | <code>Virtualisation : AMD-V</code> | + | <code>Virtualization : AMD-V</code> |
Tous les Pré-Requis sont donc bons. | Tous les Pré-Requis sont donc bons. | ||
Ligne 64: | Ligne 63: | ||
<note important>Vérifier que les cartes graphiques soient installées dans le bon ordre sur la carte-mère. | <note important>Vérifier que les cartes graphiques soient installées dans le bon ordre sur la carte-mère. | ||
* **Port PCI Express 1:** Carte graphique réservée au système d'exploitation Linux. (**__HOST__**) | * **Port PCI Express 1:** Carte graphique réservée au système d'exploitation Linux. (**__HOST__**) | ||
- | * **Port PCI Express 2:** Carte graphique pour le système d'exploitation invité . (**__GUEST__** / Windows) | + | * **Port PCI Express 2:** Carte graphique pour le système d'exploitation invité . (**__GUEST__** / Windows) |
</note> | </note> | ||
Ligne 84: | Ligne 83: | ||
Ici la carte graphique est branchée en HDMI et donc les signaux Vidéo / Son ont été séparés.\\ | Ici la carte graphique est branchée en HDMI et donc les signaux Vidéo / Son ont été séparés.\\ | ||
- | On ne pourra pas interdire le pilote ** " snd_hda_intel" ** car il est présent sur la carte son lié à la fois à la carte-mère et à la sortie son inclus dans le HDMI. (Sortie HDMI) | + | On ne pourra pas interdire le pilote ** " snd_hda_intel" ** car il est présent sur la carte son lié à la fois à la carte-mère et à la sortie son inclus dans le HDMI. (Sortie HDMI) |
==== Étape 3: Activation des Modules ==== | ==== Étape 3: Activation des Modules ==== | ||
Ligne 95: | Ligne 94: | ||
vfio_pci | vfio_pci | ||
kvm | kvm | ||
- | kvm_amd | + | kvm_amd |
kvm_intel <-- effacer cette ligne par exemple si vous avez un processeur AMD | kvm_intel <-- effacer cette ligne par exemple si vous avez un processeur AMD | ||
- | </file> | + | </file> |
- Mettre à jour le chargement des modules: <code>sudo update-initramfs -u </code> | - Mettre à jour le chargement des modules: <code>sudo update-initramfs -u </code> | ||
Ligne 106: | Ligne 105: | ||
lspci -v | grep "VGA\|Audio\|Kernel driver in use: snd_hda_intel\|Kernel driver in use: nouveau\|Kernel driver in use: nouveaufb\|Kernel driver in use: radeon\|Kernel driver in use: vfio-pci" | lspci -v | grep "VGA\|Audio\|Kernel driver in use: snd_hda_intel\|Kernel driver in use: nouveau\|Kernel driver in use: nouveaufb\|Kernel driver in use: radeon\|Kernel driver in use: vfio-pci" | ||
</code> | </code> | ||
- | Vous devriez obtenir un tableau proche de: | + | Vous devriez obtenirun tableau proche de: |
^ Slots ^ Type ^ Désignation ^ VendorID:DeviceID ^ Kernel Driver ^ Notes | | ^ Slots ^ Type ^ Désignation ^ VendorID:DeviceID ^ Kernel Driver ^ Notes | | ||
Ligne 115: | Ligne 114: | ||
| 02:00.1 | Audio HDMI2 | R9-270x (HDMI) | 1043:aab0 | snd_hda_intel | VFIO (GUEST) | | | 02:00.1 | Audio HDMI2 | R9-270x (HDMI) | 1043:aab0 | snd_hda_intel | VFIO (GUEST) | | ||
- | Ici on peut voir que le "**Kernel __Driver__**" est "**vfio-pci**". | + | Ici on peut voir que le "**Kernel __Driver__**" est "**vfio-pci**". |
:!: Ignorer le "**Kernel __Modules__** :!: | :!: Ignorer le "**Kernel __Modules__** :!: | ||
Ligne 128: | Ligne 127: | ||
| 02:00.1 | Audio HDMI2 | R9-270x (HDMI) | 1043:aab0 | Encoursderedaction | VFIO (GUEST) | | | 02:00.1 | Audio HDMI2 | R9-270x (HDMI) | 1043:aab0 | Encoursderedaction | VFIO (GUEST) | | ||
- | FIXME Mise en forme | + | FIXMEMise en forme |
- | <note help>#################### **/etc/modprobe.d/vfio.conf** #################### | + | <note help>#################### **/etc/modprobe.d/vfio.conf** #################### |
Exemple | Exemple | ||
<file>options vfio-pci ids=1002:6810,1002:aab0 ,1043:aab0 | <file>options vfio-pci ids=1002:6810,1002:aab0 ,1043:aab0 | ||
Ligne 161: | Ligne 160: | ||
^ Slot ^ Type ^ Désignation ^ Code Erreur ^Base ^Erreur ^ Slot | | ^ Slot ^ Type ^ Désignation ^ Code Erreur ^Base ^Erreur ^ Slot | | ||
- | |00:00.2 | IOMMU | Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit | 10 | ivrs_ioapic | [10]= | 00:00.2 | | + | |00:00.2 | IOMMU | Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit | 10 | ivrs_ioapic | [10]= | 00:00.2 | |
- | |00:14.0 | SMBus | Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 42) | 9 | ivrs_ioapic | [9]= | 00:14.0 | | + | |00:14.0 | SMBus | Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 42) | 9 | ivrs_ioapic | [9]= | 00:14.0 | |
<code>ivrs_ioapic[9]=00:14.0 ivrs_ioapic[10]=00:00.2</code> | <code>ivrs_ioapic[9]=00:14.0 ivrs_ioapic[10]=00:00.2</code> | ||
Ligne 177: | Ligne 176: | ||
==== Intel ==== | ==== Intel ==== | ||
- | FIXME | + | FIXME |
| | ||
===== Vérification Finale ===== | ===== Vérification Finale ===== | ||
Ligne 187: | Ligne 186: | ||
</code> | </code> | ||
- | FIXME Manque quelques infos. En cours | + | FIXMEManque quelques infos. En cours |
===== Script VFIO avec Qemu (Samba & Synergy) ===== | ===== Script VFIO avec Qemu (Samba & Synergy) ===== | ||
Ligne 195: | Ligne 194: | ||
Fix Synergy: (Bouton Suivant / Précédent / touch alt+gr) | Fix Synergy: (Bouton Suivant / Précédent / touch alt+gr) | ||
- | Éditer le fichier **synergy.conf** FIXME Chemin exact | + | Éditer le fichier **synergy.conf** FIXMEChemin exact |
* Dans la section "screens" de la machine virtuelle ajouter en bas.<file>altgr = alt</file> | * Dans la section "screens" de la machine virtuelle ajouter en bas.<file>altgr = alt</file> | ||
* Dans la section "options" de la machine virtuelle ajouter en bas.<file> | * Dans la section "options" de la machine virtuelle ajouter en bas.<file> |