#1 Le 22/03/2016, à 18:42
- éphialtès2016
1er post ( soyez indulgent ^^) CG Passthrough en suivant tuto de puget
Le lien du tuto avant tout : https://www.pugetsystems.com/labs/artic … 4-KVM-585/
Comme tous les tutos, ça parait simple ! Cependant pour améliorer mes connaissances, je me suis lancé ce défi de réussir ce tuto soit la création d'une vm avec CG passthrough.
J'ai eu des soucis pour l'isolement de la carte graphique mais en lisant les autres posts de la communauté, j'ai pu m'en sortir et réussir à blacklister mon driver ( ben oui, c clair , même ça j'ai eu un peu de mal. mais j'obtiens bien :
internet@internet-All-Series:~$ dmesg | grep pci-stub
[ 2.253893] pci-stub: add 1002:6898 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[ 2.253901] pci-stub 0000:06:00.0: claimed by stub
[ 2.253904] pci-stub: add 1002:AA50 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[ 2.253917] pci-stub 0000:06:00.1: claimed by stub
internet@internet-All-Series:~$
Souhaitant réaliser la vm avec la RADEON hd5870, je me dis que je suis donc sur le bon chemin.
Je fais un lspci pour vous montrer le matériel, je fais au plus court pour le post ne soit pas trop long.
internet@internet-All-Series:~$ lspci -nn | grep VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF110 [GeForce GTX 580] [10de:1080] (rev a1)
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cypress XT [Radeon HD 5870] [1002:6898]
Je vous indique ce que j'ai fait suivant le tuto de puget, ce qui donne
step1. "Ubuntu modules and bootloader"
internet@internet-All-Series:~$ cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
pci_stub
vfio
vfio_iommu_type1
vfio_pci
kvm
kvm_intel
internet@internet-All-Series:~$ /etc/modules
Puis la modif du grub :
internet@internet-All-Series:~$ cat /etc/default/grub | grep GRUB_
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1"
GRUB_CMDLINE_LINUX=""
Step 2. Blacklist de la CG
(je l'ai montré plus haut avec le dmesg | grep pci-stub)
J'ai fait la modif de /etc/initramfs-tools/modules comme demandé ce qui donne :
internet@internet-All-Series:~$ cat /etc/initramfs-tools/modules | grep pci_
pci_stub ids=1002:6898,1002:aa50
Step3. la creation du fichier vfio.cfg //
J'ai donc ce fichier là :
internet@internet-All-Series:~$ cat /etc/vfio-pci1.cfg
0000:06:00.0
0000:06:00.1
internet@internet-All-Series:~$
Step4. Creation du disk image.
internet@internet-All-Series:~$ dd if=/dev/zero of=/home/internet/puget/windows.img bs=1M seek=100000 count=0
0+0 enregistrements lus
0+0 enregistrements écrits
0 octet (0 B) copié, 0,000150446 s, 0,0 kB/s
internet@internet-All-Series:~$
Je ne vois pas d'erreur mais bon.
Step5. creation du script de lancement de la machine virtuelle.
internet@internet-All-Series:/usr$ cat windows
#!/bin/bash
configfile=/etc/vfio-pci1.cfg
vfiobind() {
dev="$1"
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
}
modprobe vfio-pci
cat $configfile | while read line;do
echo $line | grep ^# >/dev/null 2>&1 && continue
vfiobind $line
done
sudo qemu-system-x86_64 -enable-kvm -M q35 -m 4096 -cpu host \
-smp 4,sockets=1,cores=4,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=06:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=06:00.1,bus=root.1,addr=00.1 \
-drive file=/home/puget/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/Téléchargements/iso/windows64.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \
-boot menu=on
exit 0
internet@internet-All-Series:/usr$
Alors voilà maintenant les erreurs générées ; j'ai fait 2 lancement de scripts un normal et l'autre en sudo
internet@internet-All-Series:/usr$ ./windows
./windows: ligne 12: /sys/bus/pci/drivers/vfio-pci/new_id: Permission non accordée
./windows: ligne 12: /sys/bus/pci/drivers/vfio-pci/new_id: Permission non accordée
cat: /sys/bus/pci/devices//vendor: Aucun fichier ou dossier de ce type
cat: /sys/bus/pci/devices//device: Aucun fichier ou dossier de ce type
./windows: ligne 12: /sys/bus/pci/drivers/vfio-pci/new_id: Permission non accordée
qemu-system-x86_64: -drive file=/home/puget/windows.img,id=disk,format=raw: Could not open '/home/puget/windows.img': No such file or directory
internet@internet-All-Series:/usr$ sudo ./windows
cat: /sys/bus/pci/devices//vendor: Aucun fichier ou dossier de ce type
cat: /sys/bus/pci/devices//device: Aucun fichier ou dossier de ce type
./windows: ligne 12 : echo: erreur d'écriture : Argument invalide
qemu-system-x86_64: -drive file=/home/puget/windows.img,id=disk,format=raw: Could not open '/home/puget/windows.img': No such file or directory
internet@internet-All-Series:/usr$
Voilà, j'ai modifié ce1er post comme me l'avait indiqué le modérateur pour y mettre du BBcode. En espérant y être correctement parvenu.
Si vous voyez des erreurs évidentes que je ne verrais pas , je serais heureux que la comunauté me guide :-)
Merci, à la communauté !
éphi.
Modération : merci à l'avenir d'utiliser les balises code (explications ici).
Dernière modification par éphialtès2016 (Le 23/03/2016, à 18:11)
Hors ligne
#2 Le 24/03/2016, à 10:02
- éphialtès2016
Re : 1er post ( soyez indulgent ^^) CG Passthrough en suivant tuto de puget
Me demandant d'utiliser les " balises codes, j'ai refait mon post et j'ai trouvé une erreur flagrante sur le script de la vm .
Le chemin du fichier .mg et .iso était erroné.
-drive file=/home/puget/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/Téléchargements/iso/windows64.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \
Je l'ai donc modifié.
-drive file=/home/internet/puget/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/internet/Téléchargements/iso/windows64.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \
Il faut commencer par la première erreur du script de la vm pour avancer :
cat: /sys/bus/pci/devices//vendor: Aucun fichier ou dossier de ce type
Si j'arrive à comprendre, cela veut indiquer que $dev est vide selon le script.
Mais j'en suis venu à me demander si mon matériel est caractéristement bon pour faire ce GPU Passthrough.
J'ai une CM Z87-C une RADEON HD5870 pour la vm et une GTX580 pour ubuntu 15.10.
Ce qui me fait m'interroger c'est qu' un post ( http://www.gitztalk.com/posts/2014/06/3 … n-a-vm-fr/ ) dit :
Pour faire du VGA passthrough, le système hôte doit avoir des capacités IOMMU3.
internet@internet-All-Series:/usr$ dmesg | grep -e DMAR -e IOMMU
[ 0.000000] DMAR: IOMMU enabled
internet@internet-All-Series:/usr$
internet@internet-All-Series:/usr$ find /sys/kernel/iommu_groups/ -type l
internet@internet-All-Series:/usr$
Je trouve que malgré un " enabled" , je n'ai pas les mêmes informations que sur les differents post que je lis. :-/
Donc je continue à poser des questions sur ce problème. Si quelqu'un voit une autre évidence face à mon début précaire, qu'il n'hésite pas :-)
Dernière modification par éphialtès2016 (Le 24/03/2016, à 10:03)
Hors ligne
#3 Le 26/04/2016, à 12:36
- dexter74
Re : 1er post ( soyez indulgent ^^) CG Passthrough en suivant tuto de puget
Salut
ton problème es du au fait que le tutorial es pas à jour sur les fichier config.
Prend celui ci : https://bbs.archlinux.org/viewtopic.php?id=162768
je te propose de lire la Documentation VFIO que j'ai écrit récemment !
IOMMU:
dmesg|grep -e DMAR -e IOMMU
lspci | grep SMBus
lspci | grep IOMMU
Information matériel:
lspci -k
lspci -nn | grep "VGA\|Audio"
lsusb
lscpu
VFIO:
cat /etc/vfio-pci.cfg
cat /etc/modprobe.d/vfio.conf
MOI:
- Matériel + config OS :http://pastebin.com/CyWYUAjB
- Mon Script: http://pastebin.com/vppJNuGm
Dernière modification par dexter74 (Le 04/05/2016, à 11:50)
Hors ligne