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 28/12/2020, 20:57] dexter74 |
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 PASSTHROUGHT ]=- ====== | + | ====== -=[ VFIO PASSTHROUGH ]=- ====== |
- | Le VFIO ((Virtual Function I/O)) PASSTHROUGH consiste à décharger le pilote d'un matériel (Carte graphique , usb , souris ...) pour ensuite l'assigner à une machine virtuelle par exemple. \\ | + | 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 demande des pré-requis, et nécessite du matériel plus ou moins facile à réaliser. FIXME mettre en place ou il faut le fabriquer?\\ | + | |
- | \\ | + | |
- | L'intérêt du passthrough est par exemple de pouvoir bénéficier de l'accélération 3D d'une carte graphique sur la machine virtuelle, ou encore la meilleur gestion d'une souris ou un clavier spécifique sur cette machine virtuelle | + | |
- | FIXME: | + | Cette technique suppose des pré-requis. Elle nécessite du matériel plus ou moins facile à réaliser. FIXMEIndiquer où il faut le fabriquer ? |
- | <note> Article en cours de modification </note> | + | |
+ | 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. | ||
+ | |||
+ | FIXME | ||
+ | <note> | ||
+ | Article en cours de modification. | ||
+ | </note> | ||
Ligne 15: | Ligne 18: | ||
- | ===== Pré-Requis ===== | + | ===== Pré-requis ===== |
- | * Avoir activé la Fonction **IOMMU** du Bios. (Activer le 64 bits si vous avez 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. |
- | * Avoir activé la Prise en compte du IOMMU par linux. | + | * Avoir activé la prise en compte du IOMMU par Linux – donc au niveau du logiciel (le système d’exploitation hôte ici). |
- | * Le processeur doit prendre en charge la virtualisation. | + | * Avoir activé la prise en charge de la virtualisation par le processeur – cela suppose que le processeur intègre un mode de virtualisation. |
- | * Avoir deux Carte-graphiques ou 1 [[Wpfr>Accelerated_processing_unit|Apu]] et une Carte-graphique | + | * Disposer de deux cartes graphiques, ou d’une paire formée d’une [[Wpfr>Accelerated_processing_unit|Apu]] et d’une carte graphique. |
- | * Avoir 2 Entrées vidéo sur l'écran (1 pour le linux (host) et 1 pour la Machine virtuelle (Guest) | + | * Disposer de deux entrées vidéo sur l’écran : une pour le système Linux hôte (//Host//) et une pour la machine virtuelle invitée (//Guest//). |
- | * Connaitre son matériel . (Référence des 2 GPU serait bien par exemple) | + | * 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 40: | 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 47: | 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 60: | 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 80: | 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 91: | 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 102: | 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 111: | 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 124: | 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 157: | 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 173: | Ligne 176: | ||
==== Intel ==== | ==== Intel ==== | ||
- | FIXME | + | FIXME |
| | ||
===== Vérification Finale ===== | ===== Vérification Finale ===== | ||
Ligne 183: | 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) ===== | ||
- | [[http://pastebin.com/1uxiBfx6|Script qemu (Samba / Synergy)]] | + | [[https://pastebin.com/1uxiBfx6|Script qemu (Samba / Synergy)]] |
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> |