kb:linux:generalites:gpu_passthrough_avec_qemu
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| kb:linux:generalites:gpu_passthrough_avec_qemu [2019/07/05 19:50] – beu | kb:linux:generalites:gpu_passthrough_avec_qemu [2020/03/30 08:14] (Version actuelle) – beu | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| :!: ATTENTION CETTE DOCUMENTATION EST EN COURS DE REDACTION :!: | :!: ATTENTION CETTE DOCUMENTATION EST EN COURS DE REDACTION :!: | ||
| ====== GPU Passthrough avec QEMU ====== | ====== GPU Passthrough avec QEMU ====== | ||
| - | |||
| - | :!: Attention, ce sujet est bien trop complexe, impossible d' | ||
| - | ==== Prérequis === | + | ===== Prérequis |
| === Hardware : === | === Hardware : === | ||
| Ligne 18: | Ligne 16: | ||
| * ovmf | * ovmf | ||
| * [[https:// | * [[https:// | ||
| + | * Un iso de [[https:// | ||
| + | * l'iso des [[https:// | ||
| === Autre : === | === Autre : === | ||
| - | Du temps et de la patience. Vraiment! | + | * Une maîtrise des systèmes Windows et Linux. |
| + | * Des compétences/ | ||
| + | * Du temps et de la patience. Vraiment! | ||
| - | ==== Ma configuration : ==== | + | ===== Ma configuration : ===== |
| Voici dans quels conditions ont été réalisé cette page : | Voici dans quels conditions ont été réalisé cette page : | ||
| Ligne 34: | Ligne 36: | ||
| * OS: Archlinux | * OS: Archlinux | ||
| + | |||
| + | ===== Configuration de l'Host ===== | ||
| + | |||
| + | En partant du principe que votre OS est installer. | ||
| + | |||
| + | Il faut commencer par aller dans votre BIOS/EFI, et activer la virtualisation, | ||
| + | |||
| + | Ensuite branchez votre Dummy plug sur votre GPU, et vos écrans sur votre iGPU. | ||
| + | |||
| + | Ensuite configurer votre GRUB en ajoutant l' | ||
| + | |||
| + | Ensuite il faut demander a votre initramfs de charger les pilotes vfio en ajoutant les modules **vfio_pci**, | ||
| + | |||
| + | Recharger vos configurations : | ||
| + | |||
| + | <code bash> | ||
| + | # mkinitcpio -P && grub-mkconfig -o < | ||
| + | </ | ||
| + | |||
| + | Redémarrez, | ||
| + | |||
| + | <code bash> | ||
| + | # for iommu_group in $(find / | ||
| + | </ | ||
| + | |||
| + | vous devriez obtenir quelque chose comme ceci : | ||
| < | < | ||
| + | IOMMU group 7 | ||
| + | [RESET] 00: | ||
| + | IOMMU group 5 | ||
| + | 00:17.0 SATA controller [0106]: Intel Corporation Q170/ | ||
| + | IOMMU group 3 | ||
| + | 00:14.0 USB controller [0c03]: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller [8086:a12f] (rev 31) | ||
| + | IOMMU group 11 | ||
| + | [RESET] 03: | ||
| + | IOMMU group 1 | ||
| + | 00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 05) | ||
| + | [RESET] 01: | ||
| + | 01:00.1 Audio device [0403]: NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0] (rev a1) | ||
| + | IOMMU group 8 | ||
| + | [RESET] 00: | ||
| + | IOMMU group 6 | ||
| + | [RESET] 00: | ||
| + | IOMMU group 4 | ||
| + | 00:16.0 Communication controller [0780]: Intel Corporation 100 Series/C230 Series Chipset Family MEI Controller #1 [8086:a13a] (rev 31) | ||
| + | IOMMU group 12 | ||
| + | [RESET] 04: | ||
| + | IOMMU group 2 | ||
| + | [RESET] 00: | ||
| + | IOMMU group 10 | ||
| + | [RESET] 00: | ||
| + | IOMMU group 0 | ||
| + | 00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:591f] (rev 05) | ||
| + | IOMMU group 9 | ||
| + | 00:1f.0 ISA bridge [0601]: Intel Corporation Z170 Chipset LPC/eSPI Controller [8086:a145] (rev 31) | ||
| + | 00:1f.2 Memory controller [0580]: Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller [8086:a121] (rev 31) | ||
| + | 00:1f.3 Audio device [0403]: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller [8086:a170] (rev 31) | ||
| + | 00:1f.4 SMBus [0c05]: Intel Corporation 100 Series/C230 Series Chipset Family SMBus [8086:a123] (rev 31) | ||
| + | </ | ||
| + | |||
| + | Et il vous faudra identifier votre GPU et de noter des valeurs pour tard, pour moi c'est : | ||
| + | |||
| + | < | ||
| + | 01:00.0 - 10de:1b81 (GPU) | ||
| + | 01:00.1 - 10de:10f0 (Audio) | ||
| + | </ | ||
| + | |||
| + | Il faut aussi que ce soit les seuls dans leur groupe IOMMU. Si ce n'est pas le cas, il faudra bouger votre GPU sur un autre port PCI. | ||
| + | |||
| + | Ensuite faut définir au noyau quel carte graphique on réserve a la VM : | ||
| + | |||
| + | <code file / | ||
| blacklist nouveau | blacklist nouveau | ||
| blacklist nvidia | blacklist nvidia | ||
| - | #blacklist nvidia-modeset | ||
| - | #blacklist nvidia-uvm | ||
| options kvm ignore_msrs=1 # Pour éviter les crashs de certaines app dans le guest | options kvm ignore_msrs=1 # Pour éviter les crashs de certaines app dans le guest | ||
| - | options vfio-pci ids=10de: | + | options vfio-pci ids=10de: |
| </ | </ | ||
| + | |||
| + | Redémarrez et tapez la commande : | ||
| + | |||
| + | < | ||
| + | # lspci -k | ||
| + | </ | ||
| + | |||
| + | afin de vérifier l' | ||
| + | |||
| + | <code file [highlight_lines_extra=" | ||
| + | .... | ||
| + | 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) | ||
| + | Subsystem: ASUSTeK Computer Inc. GP104 [GeForce GTX 1070] | ||
| + | Kernel driver in use: vfio-pci | ||
| + | Kernel modules: nouveau | ||
| + | 01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1) | ||
| + | Subsystem: ASUSTeK Computer Inc. GP104 High Definition Audio Controller | ||
| + | Kernel driver in use: vfio-pci | ||
| + | Kernel modules: snd_hda_intel | ||
| + | .... | ||
| + | </ | ||
| + | |||
| + | On va ensuite configurer pulseaudio pour qu'il supporte le fait que le son remonte depuis la VM. | ||
| + | |||
| + | Pour cela, copier votre cookie Pulseaudio dans le compte root : | ||
| + | |||
| + | <code bash> | ||
| + | # cp ~/ | ||
| + | </ | ||
| + | |||
| + | ===== Configuration du Guest ===== | ||
| + | |||
| + | Démarrez votre VM sans la carte graphique, et tout les modules necessaires. Par exemple avec la commande : | ||
| + | |||
| + | <code bash> | ||
| + | qemu-system-x86_64 \ | ||
| + | -machine q35, | ||
| + | -cpu host, | ||
| + | -drive if=pflash, | ||
| + | -drive if=pflash, | ||
| + | -overcommit mem-lock=on \ | ||
| + | -overcommit cpu-pm=on \ | ||
| + | -pidfile / | ||
| + | -monitor telnet: | ||
| + | -enable-kvm \ | ||
| + | -name guest=Windows, | ||
| + | -smp 3, | ||
| + | -m 8G \ | ||
| + | -mem-prealloc \ | ||
| + | -global ICH9-LPC.disable_s3=1 \ | ||
| + | -global ICH9-LPC.disable_s4=1 \ | ||
| + | -no-user-config \ | ||
| + | -nodefaults \ | ||
| + | -rtc base=localtime, | ||
| + | -global kvm-pit.lost_tick_policy=discard \ | ||
| + | -boot strict=on \ | ||
| + | -no-hpet \ | ||
| + | -netdev type=user, | ||
| + | -device virtio-net-pci, | ||
| + | -device ich9-intel-hda, | ||
| + | -device hda-output \ | ||
| + | -device ioh3420, | ||
| + | -device vfio-pci, | ||
| + | -device vfio-pci, | ||
| + | -drive | ||
| + | -device virtio-scsi-pci, | ||
| + | -device scsi-hd, | ||
| + | -device ivshmem-plain, | ||
| + | -object memory-backend-file, | ||
| + | -spice disable-ticketing, | ||
| + | -device virtio-serial-pci \ | ||
| + | -chardev spicevmc, | ||
| + | -device virtserialport, | ||
| + | -device virtio-mouse-pci, | ||
| + | -device virtio-keyboard-pci, | ||
| + | -usb \ | ||
| + | -device intel-iommu \ | ||
| + | -audiodev pa, | ||
| + | -vga std -display sdl | ||
| + | </ | ||
| + | |||
| + | Installez votre Windows 10. Je vous conseille : | ||
| + | * de mettre un mot de passe a votre session (Attention a bien mettre l' | ||
| + | * Désactiver l' | ||
| + | * Activer RDP | ||
| + | * D' | ||
| + | |||
| + | Une fois fait, télécharger (sur votre guest) les pilotes spécific [[https:// | ||
| + | |||
| + | Installez aussi Visual C++. | ||
| + | |||
| + | Une fois fait, télécharger la dernieres release de [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | Éteignez la VM et lancez la sans l' | ||
| + | |||
| + | < | ||
| + | -vga none -display none | ||
| + | </ | ||
| + | |||
| + | Et normalement, | ||
| + | |||
kb/linux/generalites/gpu_passthrough_avec_qemu.1562356232.txt.gz · Dernière modification : de beu
