Outils pour utilisateurs

Outils du site


kb:linux:generalites:gpu_passthrough_avec_qemu

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
kb:linux:generalites:gpu_passthrough_avec_qemu [2019/07/05 22:28] beukb:linux:generalites:gpu_passthrough_avec_qemu [2019/11/23 18:03] – [Configuration du Guest] 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'être exhaustif. 
    
 ===== Prérequis ===== ===== Prérequis =====
Ligne 18: Ligne 16:
   * ovmf   * ovmf
   * [[https://looking-glass.hostfission.com/|Looking Glass]]   * [[https://looking-glass.hostfission.com/|Looking Glass]]
 +  * Un iso de [[https://www.microsoft.com/fr-fr/software-download/windows10ISO|Windows 10]]
 +  * l'iso des [[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso | pilotes VirtIO]]
  
 === Autre : === === Autre : ===
  
-Du temps et de la patience. Vraiment!+  * Une maîtrise des systèmes Windows et Linux. 
 +  * Des compétences/connaissance avec qemu, grub/systemd-boot 
 +  * Du temps et de la patience. Vraiment!
  
 ===== Ma configuration : ===== ===== Ma configuration : =====
Ligne 43: Ligne 45:
 Ensuite branchez votre Dummy plug sur votre GPU, et vos écrans sur votre iGPU. Ensuite branchez votre Dummy plug sur votre GPU, et vos écrans sur votre iGPU.
  
-Ensuite configurer votre GRUB en ajoutant l'option **intel_iommu=on** votre noyaux.+Ensuite configurer votre GRUB en ajoutant l'option **intel_iommu=on** ou **amd_iommu=on** en fonction de votre CPU à votre noyaux.
  
 Ensuite il faut demander a votre initramfs de charger les pilotes vfio en ajoutant les modules **vfio_pci**, **vfio, vfio_iommu_type1** et **vfio_virqfd** dans le fichier ///etc/mkinitcpio.conf//. Ensuite il faut demander a votre initramfs de charger les pilotes vfio en ajoutant les modules **vfio_pci**, **vfio, vfio_iommu_type1** et **vfio_virqfd** dans le fichier ///etc/mkinitcpio.conf//.
Ligne 59: Ligne 61:
 </code> </code>
  
-vous devriez optenir quelque chose comme ceci :+vous devriez obtenir quelque chose comme ceci :
  
 <code> <code>
Ligne 119: Ligne 121:
 afin de vérifier l'utilisation du module vfio-pci : afin de vérifier l'utilisation du module vfio-pci :
  
-<code file [highlight_lines_extra="3,7"]>+<code file [highlight_lines_extra="4,8"]>
 .... ....
 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1) 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
Ligne 131: Ligne 133:
 .... ....
 </code> </code>
 +
 +===== 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,accel=kvm,usb=off,vmport=off,dump-guest-core=off,kernel-irqchip=on \
 +  -cpu host,hv_time,hv_relaxed,hv_vpindex,hv_reset,hv_runtime,hv_crash,hv_synic,hv_stimer,hv_spinlocks=0x1fff,hv_vendor_id=lakeuv283713,kvm=off,l3-cache=on,-hypervisor,migratable=no,+invtsc \
 +  -drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/OVMF_CODE.fd \
 +  -drive if=pflash,format=raw,file=/usr/share/ovmf/x64/OVMF_VARS.fd \
 +  -overcommit mem-lock=on \
 +  -overcommit cpu-pm=on \
 +  -pidfile /var/run/vm.Windows.pid \
 +  -monitor telnet:127.0.0.1:55555,server,nowait \
 +  -enable-kvm \
 +  -name guest=Windows,debug-threads=on \
 +  -smp 3,sockets=1,cores=3,threads=1 \
 +  -m 8G \
 +  -mem-prealloc \
 +  -global ICH9-LPC.disable_s3=1 \
 +  -global ICH9-LPC.disable_s4=1 \
 +  -no-user-config \
 +  -nodefaults \
 +  -rtc base=localtime,driftfix=slew \
 +  -global kvm-pit.lost_tick_policy=discard \
 +  -boot strict=on \
 +  -no-hpet \
 +  -netdev type=user,id=net0 \
 +  -device virtio-net-pci,netdev=net0,id=net0,bus=pcie.0 \
 +  -device ich9-intel-hda,id=sound1,bus=pcie.0 \
 +  -device hda-output \
 +  -device ioh3420,id=root_port1,chassis=0,slot=0,bus=pcie.0 \
 +  -device vfio-pci,host=01:00.0,id=hostdev1,bus=root_port1,addr=0x00,multifunction=on \
 +  -device vfio-pci,host=01:00.1,id=hostdev2,bus=root_port1,addr=0x00.1 \
 +  -drive  id=disk,file=/dev/sda,format=raw,if=none,cache=none,aio=native,discard=unmap,detect-zeroes=unmap,copy-on-read=on \
 +  -device virtio-scsi-pci,id=scsi \
 +  -device scsi-hd,drive=disk,bus=scsi.0,rotation_rate=1 \
 +  -device ivshmem-plain,memdev=ivshmem,bus=pcie.0 \
 +  -object memory-backend-file,id=ivshmem,share=on,mem-path=/dev/shm/looking-glass,size=32M \
 +  -spice disable-ticketing,seamless-migration=off,port=5900,addr=127.0.0.1 \
 +  -device virtio-serial-pci \
 +  -chardev spicevmc,id=vdagent,name=vdagent \
 +  -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
 +  -device virtio-mouse-pci,id=input1,bus=pcie.0,addr=0xb \
 +  -device virtio-keyboard-pci,id=input2,bus=pcie.0,addr=0xc \
 +  -usb \
 +  -device intel-iommu \
 +  -audiodev pa,id=pa1,server=/run/user/1000/pulse/native \
 +  -vga std -display sdl
 +</code> 
 +
 +Installez votre Windows 10. Je vous conseille :
 +  * de mettre un mot de passe a votre session (Attention a bien mettre l'autologin !!!)
 +  * Désactiver l'extinction de l'écran pour inactivité
 +  * Activer RDP
 +  * D'installer tout les pilotes/updates disponibles
 +
 +Une fois fait, télécharger (sur votre guest) les pilotes spécific [[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/upstream-virtio/|Redhat ]] et installez tout les pilotes de l'archive (Voir [[https://wiki.virtit.fr/doku.php/kb:windows:installer_des_pilotes_de_facon_recursive|ceci]] pour gagner du temps)
 +
 +Installez aussi Visual C++.
 +
 +Une fois fait, télécharger la dernieres release de [[https://github.com/gnif/LookingGlass/releases|Looking Glass]] pour Windows, placer l'executable dans un endroit controllé, et ajoutez une clé de registre pour le lancer au démarrage (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run).
 +
 +
 +
 +Éteignez la VM et lancez la sans l'affichage virtuel, en remplaçant la dernière ligne par :
 +
 +<code>
 +  -vga none -display none
 +</code>
 +
 +Et normalement, en lancant Looking Glass, vous devriez récupérer l'affichage de votre VM.
 +
  
  
kb/linux/generalites/gpu_passthrough_avec_qemu.txt · Dernière modification : 2020/03/30 08:14 de beu