Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ########################
- # Information Hardware #
- ########################
- $sudo lscpi -vnn
- 02:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Curacao XT [Radeon R7 370 / R9 270X/370 OEM] [1002:6810] (prog-if 00 [VGA controller])
- Kernel driver in use: radeon
- Kernel modules: radeon, amdgpu
- 02:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
- Kernel driver in use: amdgpu
- Kernel modules: snd_hda_intel
- GPU Type Dev_ID:Ven_ID Adresse slot Pilote
- R9-270x VGA 1002:6810 02:00.0 radeon,amdgpu
- R9-270x Audio 1002:aab0 02:00.1 radeon,amdgpu
- ########################################################################################################################################################################
- ######################
- # Activer IOMMU Bios #
- ######################
- ############################
- # Installation de Qemu-KVM #
- ############################
- sudo apt install qemu-kvm --yes && qemu-system-x86_64 --version
- Si la version est supérieur à la 2.50 , c'est bon .
- #######################################
- # Prise en charge du IOMMU dans Linux #
- #######################################
- /etc/default/grub
- #Options indispensables:
- # iommu=1 Activation IOMMU
- # intel_iommu=on Activation IOMMU pour Intel
- # pcie_acs_override=downstream Prise en charge du IOMMU (DéGroupe carte-graphique liée, Kernel avec l'ACS override est requis)
- # snd_hda_intel.blacklist=1 Blacklist le pilote HD Audio Realtek
- # nouveau.blacklist=1 Blacklist le Pilote Nvidia
- # radeon.blacklist=1 Blacklist le Pilote AMD
- # amdgpu.blacklist=1 Blacklist le Pilote AMD
- # nomdemonpilote.blacklist=1 Blacklist le Pilote "nomdemonpilote" , valeur 1 => Activer (Traduction: Activation de la blacklist du pilote nomdemonpilote)
- #Ligne à edite GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
- #Remplacer par GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=1 intel_iommu=on pcie_acs_override=downstream radeon.blacklist=1 amdgpu.blacklist=1"
- ##########################
- # Activation des modules #
- ##########################
- #Fichier à éditer: /etc/initramfs-tools/modules
- #Inserer ceci
- pci_stub
- vfio
- vfio_iommu_type1
- vfio_pci
- vfio_virqfd
- kvm
- kvm_intel
- ####################################
- # Interdire le lancement du pilote #
- ####################################
- #Pour activer le blacklistage du pilote supprimer le # de la ligne qu'on souhaite interdire.
- #Dans mon cas "amdgpu" et "radeon"
- # Nvidia
- #blacklist nouveau
- #blacklist nvidia
- #blacklist nvidiafb
- # AMD
- blacklist radeon
- blacklist amdgpu
- # HD Audio
- #blacklist snd_hda_intel
- ######################################################
- # Attribution des périphériques (GPU) au module VFIO #
- ######################################################
- #Fichier à éditer: /etc/modprobe.d/vfio.conf
- #Rappel: AMD_R9270x_Video_et_audio 1002:6810,1002:aab0
- #Syntaxe: <Ven_ID:Dev_ID>,Ven_ID:Dev_ID>
- options vfio-pci ids=1002:6810,1002:aab0
- ##################################
- # Applications des modifications #
- ##################################
- sudo update-grub && sudo update-initramfs -u
- ##################################
- # Vérification des groupes IOMUU #
- ##################################
- #Taper ce code dans le terminal:
- #!/bin/bash
- shopt -s nullglob
- for d in /sys/kernel/iommu_groups/*/devices/*; do
- n=${d#*/iommu_groups/*}; n=${n%%/*}
- printf 'IOMMU Group %s ' "$n"
- lspci -nns "${d##*/}"
- done;
- IOMMU Group 11 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-V [8086:15b8] (rev 31)
- IOMMU Group 12 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:128b] (rev a1)
- IOMMU Group 12 01:00.1 Audio device [0403]: NVIDIA Corporation GK208 HDMI/DP Audio Controller [10de:0e0f] (rev a1)
- -----
- IOMMU Group 13 02:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Curacao XT [Radeon R7 370 / R9 270X/370 OEM] [1002:6810]
- IOMMU Group 13 02:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
- IOMMU Group 14 05:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller [1b21:1242]
- IOMMU Group 15 06:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a804]
- IOMMU Group 1 00:01.0 PCI bridge [0604]: Intel Corporation Sky Lake PCIe Controller (x16) [8086:1901] (rev 05)
- Le groupe 12: Contient ma première carte (non utilisé dans mon cas)
- Le Groupe 13: Ce groupe ne comporte que ma carte-graphique qui comporte 2 adresses de type slots (02:00.0 et 02:00.1)
- Dans ce groupe y'à aucun autre périphérique dont c'est bon.
- Le kernel ACS permet de corriger les problèmes liée aux regroupement de matériel dans un groupe. (GPU + Ethernet par exemple)
- Dans mon cas j'ai le kernel ACS qui ma corrigier le problème. (suite de mon tutorial)
- #########################
- # Kernel avec patch ACS #
- #########################
- https://queuecumber.gitlab.io/linux-acs-override/
- Télécharger la dernière version STABLE et installer le puis rebooter le pc.
- $ uname -a
- Linux Drthrax-Fixe 4.15.7-acso #1 SMP Thu Mar 1 01:10:00 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
- Note: acso > kernel ACS
- #######################
- # Vérification Finale #
- #######################
- $ dmesg | grep -i "vfio-pci 0000:02\|DMAR: IOMMU enabled\|DMAR: Intel(R) Virtualization Technology for Directed I/O"
- [ 0.000000] DMAR: IOMMU enabled
- [ 0.628662] DMAR: Intel(R) Virtualization Technology for Directed I/O
- [ 2.824563] vfio-pci 0000:02:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=none
- [ 4.979415] vfio-pci 0000:02:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=none
- [ 131.482858] vfio-pci 0000:02:00.0: enabling device (0000 -> 0003)
- [ 131.502849] vfio-pci 0000:02:00.1: enabling device (0000 -> 0002)
- [ 417.803435] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 784.692836] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 827.520964] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 915.437161] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 1022.709420] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 1045.617629] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 1059.897525] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 1073.937732] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 1087.861624] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 1101.269669] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- [ 1225.266337] vfio-pci 0000:02:00.1: enabling device (0400 -> 0402)
- On voit que le vfio-pci gère les adresses de ma carte-graphique (0000:02:00.0 et 0000:02:00.1)
- $ sudo lspci -nnv
- 02:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Curacao XT [Radeon R7 370 / R9 270X/370 OEM] [1002:6810] (prog-if 00 [VGA controller])
- Subsystem: ASUSTeK Computer Inc. Curacao XT [Radeon R7 370 / R9 270X/370 OEM] [1043:0464]
- Kernel driver in use: vfio-pci
- Kernel modules: radeon, amdgpu
- 02:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
- Kernel driver in use: vfio-pci
- Kernel modules: snd_hda_intel
- On peux voir dans le kernel Driver le terme vfio-pci, celui-ci gère le matériel et donc tous est bon.
- #####################
- # Création du ponts #
- #####################
- Le ponts permettra à la machine virtuelle d'obtenir une adresse IP venant de votre Box (DHCP) et donc d'accéder au réseau local.
- Cet étape est complémentaire, je souhaite avoir une ip qui est gérer par ma box pour l'ouverture de port.
- Terminale: sudo apt-get install bridge-utils
- /etc/network/interfaces
- ##############################################
- # Init"ialisation des interfaces au démarrage #
- ##############################################
- auto lo
- auto enp0s31f6
- auto br0
- ##########################################
- # Configuration de l'Adresse de bouclage #
- ##########################################
- iface lo inet loopback
- ##################################################
- # Configuration de la carte-reseau Ethernet host #
- ##################################################
- iface enp0s31f6 inet manual
- # Configuration du pont
- iface br0 inet static
- address 192.168.1.30
- broadcast 192.168.1.255
- netmask 255.255.255.0
- gateway 192.168.1.1
- network 192.168.1.0
- dns-nameservers 192.168.1.1
- bridge_ports enp0s31f6
- bridge_maxwait 0
- bridge_fd 0
- #bridge_stp off # désactiver le protocole Spanning Tree
- #bridge_waitport 0 # pas de délais avant qu'un port soit disponible
- #bridge_fd 0 # pas de délais de transfert
- #bridge_ports none # si vous ne voulez ponter aucun port
- #bridge_ports regex eth* # utiliser une expression régulière pour définir les ports
- #https://wiki.debian.org/fr/BridgeNetworkConnections#Configurer_le_pontage_dans_.2Fetc.2Fnetwork.2Finterfaces
- # Afficher liste pont : brctl show
- # Supprimer pont : brctl delbr br0
- # Démarrer le pont : ifup br0
- # Arrêter le pont : ifdown br0
- ######################
- # Qemu - Explication #
- ######################
- Chaque ligne dois se terminer avec un Espace et un anti-slash si vous souhaiter clarifier le code.
- Auncun saut de ligne est autorisé dans Qemu.
- #Meilleur prise en charge de la Carte-Son
- export QEMU_AUDIO_TIMER_PERIOD=10
- qemu-system-x86_64 \
- -name "Nom de ma machine" \ #Définir un nom à la machine
- -bios 'usr/share/qemu/bios.bin' \ #Charger le Bios (Bios UEFI > OVMF)
- -enable-kvm \ #Requis pour une bonne prise en charge du processeur
- -cpu host \ #Prise en charge du processeur.
- -smp cpus=,maxcpus=,cores=,threads=,sockets= \ #Ressource CPU Attribué
- -vga none \ #Attribuer une carte graphique (cirrus) ou Aucune (none)
- -boot c \ #Ordre de démarrage (c étant un disque dur et d un lecteur cd)
- -m 4096 \ #Quantité de mémoire-vive attribué
- -k FR \ #Langue du clavier (FR = AZERTY)
- -rtc base=localtime \ #Fuseau horaire du bios (Indispensable pour pouvoir avec l'heure correcte)
- -usb \ #Activer la prise en charge de l'USB
- -device ich9-ahci,id=ahci \ #Prise en charge de l'ahci (SATA)
- -net nic,macaddr='00:50:18:28:4c:23' -net bridge,br=br0 \ #Création d'une carte-réseau, utilisant une adresse mac et le pont créer "br0".
- -soundhw hda \ #Prise en charge du son en créeant une carte-son.
- -device vfio-pci,host=02:00.0,multifunction=on,x-vga=on #GPU Vidéo (adresse SLOT) | x-vga= (ON Envoie le signale vidéo sur la sortie de la carte-graphique | OFF: Envoie le signale vidéo sur la carte-graphique virtuel (-vga cirrus))
- -device vfio-pci,host=02:00.1 \ #GPU AUDIO
- # Les paramètres ,multifunction=on,x-vga=on sont pour la vidéo et pas pour l'audio.
- -drive file=/dev/....,cache=none,media=disk,index=0 \ #Montage du disque dur avec l'index 0 (C:\)
- -drive file=/dev/....,cache=none,media=disk,index=1 \ #Montage du disque dur avec l'index 1 (D:\)
- -drive file=/path/windows.iso,format=raw,media=cdrom,index=3 \ #Montage d'un fichier dans le lecteur cd-rom (E:\)
- -usbdevice host:Ven_ID:Dev_ID \ #Attribuer les USB via leur adresses. (désactivera dans linux) , utiliser la commande lsusb pour pouvoir les trouvers.
- #############################
- # Erreur 43 - Pilote Nvidia #
- #############################
- Le pilote graphique après installation ne s'initailise pas correctemnt, ce correctif est nécessaire.
- Utiliser ces paramètres pour faire marcher correctement le pilote:
- -cpu host,kvm=off,hv_vendor_id=SomeString
- -device vfio-pci,host=02:00.0,multifunction=on,x-vga=on
- -vga none
- L'option x-vga doit être sur ON et vga sur none (aucune) et la ligne cpu doit être écrite avec ces paramètres. (ne pas oublier enable-kvm vu que l'option -cpu host est active)
- teste74@hotmail.fr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement