VGA/PCI Passthrough et VFIO sous GNU/Linux [Topic Unique] - Logiciels - Linux et OS Alternatifs
Marsh Posté le 23-12-2013 à 18:38:44
Bonjour,
J'utilise globalement la même configuration (i7 4770s et HD7850, enfin en ce moment je me suis rabattu sur mon ancienne HD6850 qui me pose moins de problème) avec des VMs Debian et une VM Windows 8.1 avec PCI-Passthrough (mais en cours de remplacement par de l'Ubuntu + XBMC + Steam, je ne joue pas à BF4...). La principale différence est que j'utilise qemu-kvm sur l'hôte Debian.
As-tu besoin du clavier/souris sur ton Dom0 ? Dans mon cas, l'hôte ne sert qu'à ça, il est sous la TV, il n'y a pas de serveur X et je l'administre via SSH + Virt-Manager depuis mon laptop. Donc je passe un contrôleur PCI et lorsque la VM est démarrée je n'ai plus de clavier/souris.
Si tu en as effectivement besoin, je n'ai pas utilisé Synergy depuis longtemps, mais je ne vois pas pourquoi ça ne fonctionnerait pas. Je laisse d'autres personnes t'aider sur ce sujet.
La dernière option est le KVM hard. Je m'étais pris ce simple commutateur : http://www.ldlc.com/fiche/PB00118277.html pour une machine de test.
Un peu cher pour ce que c'est, mais il ne prend pas de place et fait le boulot, avec commutation par raccourci clavier (reconnu sans soucis sous Linux).
Marsh Posté le 23-12-2013 à 19:55:46
Tu as surement raison finalement, et mon Dom0 est juste là pour soutenir mes DomU.
Je débutes sur du GNU/Linux, Xen, PCI Passthrough... Tu as trouvé des tutos bien expliqués ?
Il faut que je me renseigne sur virt-manager
Sinon effectivement un KVM hard et je ne serais pas ennuyé
Marsh Posté le 23-12-2013 à 20:25:53
l'administration via ssh ne serait pas suffisante sinon, tout simplement ?
Marsh Posté le 23-12-2013 à 20:48:50
Oui, via SSH avec xm ou xl, tu dois pouvoir tout gérer sous Xen (pour ma part c'est avec virsh avec qemu).
Et si je ne me trompe pas, ta carte-mère dispose d'une connexion type IPMI qui permet de t'y connecter en cas de soucis ?
Petite question au passage, pourrais-tu me dire combien de contrôleurs USB il y a sur cette carte-mère (en faisant un lspci sur le Dom0) ?
Pour Xen et le PCI Passthrough, je n'ai pas de tutos particuliers, mais ça ne manque pas sur le net.
J'ai ce sujet dans mes bookmarks : http://www.overclock.net/t/1205216 [...] al-machine si ça peut te servir (ça concerne Fedora, mais les principes sont les mêmes sur CentOS je suppose).
Marsh Posté le 03-01-2014 à 10:55:48
Pardon pour le retard
ma carte mère à effectivement une connexion de type IPMI, mais comme je suis un noob je ne sais pas comment ça fonctionne
de mémoire, il y a 2 contrôleurs USB... mais je te dirai ça quand je serai chez moi
Sinon je pense finalement faire comme toi, passez à Qemu-KVM à la place de Xen, ça m'a l'air plus simple, mais je ne trouve pas de tuto pour expliquer le fonctionnement du pci-passthrough avec Qemu-kvm
Marsh Posté le 03-01-2014 à 18:11:40
Bonjour,
Pas de soucis.
Pour l'IPMI, je ne peux pas t'aider, je ne l'ai pas sur ma carte mère (Asrock H87).
Il semblerait que deux contrôleurs USB soient la norme sous Haswell, c'est ce que j'ai également. J'en avais trois sur ma carte SandyBridge, c'était plus pratique quand on en passe à plusieurs VM.
Concernant Qemu-KVM, je ne suis pas sûr que ce soit vraiment plus simple que Xen. Le PCI-Passtrough est plus ancien sur Xen, donc sûrement plus rodé...
Et en ce moment il y a d'important changement côté Qemu (remplaçant de l'ancienne méthode pci-assign pour passer les périphériques par vfio-pci qui est plus propre). Pour te donner une idée, avec l'ancienne méthode, pas de soucis pour passer une Radeon 7850 à une VM Windows, je n'y suis pas arrivé avec la nouvelle. Par contre avec une Radeon 6850 j'arrive à faire du VFIO dans une VM Linux.
Bref, ce sont des techniques assez récentes et qui évoluent beaucoup.
Un sujet que je suis de près : https://bbs.archlinux.org/viewtopic [...] 162768&p=1. Il concerne Archlinux, mais il y a pleins d'infos si tu t'intéresses au sujet.
Marsh Posté le 03-01-2014 à 18:44:51
Merci pour ta réponse
Oui je m'intéresse beaucoup à ce sujet
Disons que j'ai toujours bien aimé GNU/Linux et j'avoue que la seule chose qui me faisait hésiter c'est l'accélération via le GPU pour mes jeux Windows, là je pense avoir trouvé le meilleur moyen pour concilier les deux
Je teste dès ce soir Qemu-KVM
Marsh Posté le 03-01-2014 à 20:02:35
nhix@mint16 ~ $ lspci | grep USB
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
Dans Virt-manager, il faut préféré quelle option Qemu ou KVM ?
Mince mon expérience avec KVM va tourner court
Erreur lors du démarrage du domaine: internal error: Invalid device 0000:01:00.1 driver file /sys/bus/pci/devices/0000:01:00.1/driver is not a symlink
Marsh Posté le 04-01-2014 à 22:57:54
Ma version de Qemu est la 1.5.0, enfin celle fournie de base dans une LinuxMint 16, peut-être que mes problèmes viennent de cette "vieille" version ?
Code :
|
Merci toma222 mais malgré le sudo vfio-bind 0000:01:00.0 0000:01:00.1
Code :
|
Marsh Posté le 06-01-2014 à 12:30:10
Bonjour,
Je te souhaite bonne continuation dans ton projet
J'ai essayé de faire la même chose (ASROCK Z77-Extreme4 + i7 3770 + 16 GO DDR3 + nvidia GTX460 1GB) mais impossible de faire marcher la nvidia sous windows (je m'y attendais mais j'ai quand même testé . Il faudra que je test avec une radeon.
Je vais suivre de pres ton projet
Marsh Posté le 06-01-2014 à 16:24:23
Merci tybobab
Si mon projet abouti, je ferai un tutoriel afin de simplifier les choses
Concernant la GTX460, elle me semble opérationnelle avec Xen
Marsh Posté le 07-01-2014 à 14:15:58
Il me semble qu'il faut la flasher en quadro pour que ca marche (ma source : http://wiki.xen.org/wiki/Xen_VGA_P [...] _Adapters)
Marsh Posté le 09-01-2014 à 18:01:43
Si je comprend bien une fois après avoir fait les manips
on rentre un
Code :
|
pour prendre en compte le blacklistage du module
ensuite un lspci -k nous donne:
Code :
|
Là, ça me semble prêt pour être assigné à une VM ?
Marsh Posté le 09-01-2014 à 23:09:54
Alors, dernière nouvelle sur ma Debian Jessie, j'arrive à passer ma carte graphique, avec Virt-Manager, à la voir dans la VM, je me dis, c'est gagné !
Et bien non
Car si je vois bien ma carte graphique, ma VM plante juste après
damned!
Marsh Posté le 10-01-2014 à 16:05:57
Salut NHiX
Regarde ce topic/tuto : http://forums.linuxmint.com/viewto [...] 2&t=112013
Tu pourras peut-être trouver des infos complémentaires
Marsh Posté le 10-01-2014 à 16:16:23
Merci tybobab
Je connais le tuto, vraiment bien fait, mais plutôt réservé pour Xen
Marsh Posté le 10-01-2014 à 16:18:20
Je suis en train d'acquerir une HD7770, quand je la recevrai, je te donnerai un feedback
Marsh Posté le 10-01-2014 à 16:41:19
NHiX a écrit : Merci tybobab |
Ah oui c'est vrai...désolé
Je commencerai mes tests sur KVM (je le préfère à Xen).
Marsh Posté le 10-01-2014 à 17:25:09
Concernant Synergy, j'utilise Synergy-plus, mais je crois que c'est plus un accès rapide à Synergy2
J'avais testé Xen, mais il n'est pas compatible avec mon UEFI, enfin dans sa version 4.3, peut-être que la prochaine version sera ok avec ce satané d'UEFI
Si tu veux tester Xen dans de bonne condition, je te conseille CentOS 6.5, vraiment une très bonne distro, très légère pour en faire son Dom0
Mais je préfère tout comme toi, KVM, pour de futurs projets, peut-être une virtualisation de mon Raspberry Pi, afin d'y tester de nouvelle version d'OpenELEC ou Raspbian sans tout casser le physique qui sert de media-center à Madame
Ou alors de la virtualisation de MacOS X, ou même de RiscOS ou autre...
Marsh Posté le 10-01-2014 à 19:25:00
Marsh Posté le 10-01-2014 à 19:59:17
Bonsoir,
Comme je l'avais précisé à NHiX, pour ceux qui s'intéressent au Passthrough avec Qemu, ce post sur le forum Archlinux est à suivre :
https://bbs.archlinux.org/viewtopic.php?id=162768.
Il décrit la nouvelle méthode pour passer des cartes graphiques à des VMs en utilisant vfio-pci (plus propre que l'ancienne méthode pci-assign) en faisant du primary passthrough (sans carte virtuelle). C'est encore experimental et nécessite encore de patcher le kernel et qemu, mais ça devrait permettre de passer même des cartes Nvidia.
De mon côté j'ai de bons résultats avec une Radeon 6850 mais pas avec une 7850 (qui passait avec pci-assign) pour le moment.
Marsh Posté le 10-01-2014 à 20:00:40
ReplyMarsh Posté le 10-01-2014 à 20:21:43
Là où je bloque c'est sur l'attribution de la carte graphique en passthrough à la VM Windows
Si vous savez comment faire ?
J'ai suivi ce tutoriel, mais adapté sur ma Debian Jessie
https://bbs.archlinux.org/viewtopic [...] 162768&p=1
Preparing the GPU so we can bind it to vfio
For the next step we need to:
Blacklist radeon or nouveau or nvidia or fglrx on /etc/modprobe.d/blacklist.conf
Example, blacklisting the opensource radeon module:
Code :
|
Use pci-stub
In my case since i have 2 radeon cards blacklisting the radeon module is not an option, so i use pci-stub.
NOTE: If pci-stub was built as a module, you'll need to modify /etc/mkinitcpio.conf and add pci-stub in the MODULES section, after that you need to update your initramfs like this.
Code :
|
NB: ce que j'ai remplacé sur ma Debian Jessie par
Code :
|
lspci
Code :
|
lspci -n
Code :
|
Now add this to your grub cfg file:
Code :
|
dmesg | grep pci-stub
Code :
|
Setting up vfio and kvm modules
If your board doesn't enable interrupt remapping, you need to add this to your grub cfg:
Code :
|
ne pas oublier ensuite un update-grub
Or if vfio-pci was built as a module ( default on arch )
Code :
|
Some applications like Passmark Performance Test and SiSoftware Sandra crash the VM without this:
Code :
|
Binding a device to vfio-pci
Assuming the kernel, qemu and seabios are built and working, lets bind some devices.
You can use this script to make life easier:
Code :
|
Save it as /usr/bin/vfio-bind
Code :
|
Bind the GPU:
Code :
|
J'en suis ici, et je ne sais pas comment recompiler un noyau ou Qemu avec leurs options
J'obtiens:
Code :
|
Et pourtant mon lspci -k
Code :
|
Marsh Posté le 10-01-2014 à 20:53:39
[size=9]imagik[/size]
Voilà ce que j'obtiens sous une VM Debian 7, bizarre
Marsh Posté le 10-01-2014 à 21:07:33
Concernant l'erreur vfio: Device does not support requested feature x-vga, c'est normal, le noyau doit être compilé avec l'option CONFIG_VFIO_PCI_VGA, qui n'est pas activé par défaut sur la plupart des distribs car encore experimental.
Ce que je te conseille si tu ne veux pas te lancer dans la compilation (et application de patchs), c'est plutôt que de faire du Primary VGA Passthrough (x-vga=on), c'est de faire du Secondary VGA Passthrough (tu ne mets pas l'option x-vga et tu mets une carte virtuelle).
Sur ta capture d'écran, c'est quand tu démarres avec quelles options ? Parce que ta carte vidéo semble vue.
Marsh Posté le 10-01-2014 à 21:23:23
Ok je vais tester ça, mais en fait je me sers de Virt-manager comme un sale nOOb
sinon en ligne de commande avec Qemu, ça donne quoi ?
un truc comme ça ?
Code :
|
A la rigueur, il va falloir que je passe par la case compilation du kernel avec les options qui vont bien
Il n'y a pas un lien où quelqu'un l'a déjà fait ?
qui se propose ?
svp xD
Marsh Posté le 10-01-2014 à 21:35:57
En commande qemu ça devrait donner quelque chose comme ça :
Code :
|
A vérifier. J'ai volontairement retirer le -cpu host car ça me pose problème.
Logiquement tu dois pouvoir t'en sortir uniquement avec Virt-Manager si ça fonctionne en Secondary Passthrough.
Pour la compilation du kernel, je l'ai fait récemment sous Debian. Par contre pour il faut probablement compiler la version git de Qemu également.
Marsh Posté le 10-01-2014 à 21:47:26
mince encore une question de nOOb, j'ai un soucis sur la ligne -drive ....
J'obtiens
Code :
|
Je sais, j'ai honte
EDIT:
Problème rélgé.
Code :
|
Par contre, j'ai ce message dans le terminal
Code :
|
Et le plus important ma VM semble s'eteindre, enfin plus d'affichage, l'écran devient noir via TightVNC
Je n'arrive pas à la relancer, enfin si mais toujours l'écran noir, même en passant sur la sortie carte graphique dédiée à la VM
On n'est pas loin du but pourtant je pense...
NB: Voici mon "win"
Code :
|
Le Bios Seabios utilisé
http://code.coreboot.org/p/seabios [...] n-1.7.4.gz
Ensuite pour se connecter, dans un terminal
Code :
|
Marsh Posté le 10-01-2014 à 22:12:24
!!!!!!! ATTENTION MA METHODE ACTUELLE N'INCLUS PAS LES PATCHS !!!!!!!
J'ouvre un nouveau post, c'est un peu le bordel... lol
Je vais tenter une compilation de Seabios
On va récupérer:
http://www.fileswap.com/dl/VgLPyZwOkl/
Ceux sont des patchs à inclure pour la compilation de Seabios
Donc, on installe:
Code :
|
On va cloner le dépôt git avec:
Code :
|
On va copier les patchs dans le dépôt cloné, et ensuite lancer la compilation avec
Code :
|
normalement si tout est ok, vous devez avoir dans ~/seabios/out/bios.bin qui est notre version compilée de Seabios
Il n'y a plus qu'à tester
Maintenant Qemu:
git://git.qemu.org/qemu.git le dépôt Git
Code :
|
Mais le make ne fonctionne pas, si quelqu'un connait la solution, je met le post à jour ensuite
Marsh Posté le 10-01-2014 à 22:43:00
Pas mal d'edit, pardon, je vais refaire le premier post, avec un tutoriel le plus complet possible, une fois que la solution sera trouvée, si il y a des volontaires pour tester sur leurs config
Marsh Posté le 12-01-2014 à 16:59:38
Salut NHiX
J'aurai la radeon vendredi prochain donc je ferai mes tests durant le week end Je pense tester sur Fedora avec KVM
Marsh Posté le 13-01-2014 à 22:02:40
Drapwal,
Bien envie de voir ce que donne le passthrough vers ta vm Windows
Marsh Posté le 13-01-2014 à 22:12:06
Pour le moment malheureusement, ça ne fonctionne pas, peut-être avec une prochaine version de Qemu...
En tout les cas le tutoriel, c'est un début
Marsh Posté le 13-01-2014 à 22:15:51
Il semblerait que le passthrough pur fonctionne non ?
L'ennui est les perf en jeux non ?
Marsh Posté le 13-01-2014 à 22:21:10
Le passthrough fonctionne, en tout les cas, j'arrive bien à "passer" ma carte graphique à ma VM Windows, mais celle-ci au démarrage plante, et plus rien ne s'affiche sur mon écran ainsi que sur mon VNC/Spice
Les problèmes peuvent être multiple, mais je cherche des personnes sous Debian avec mon matériel, et chez qui ça fonctionne
Marsh Posté le 13-01-2014 à 23:13:22
Ca plante dès l'installation de ta VM ou à partir du moment où tu as installé les pilotes Catalysts ?
Quand ta VM est lancé, c'est bien vfio-pci qui gère ta carte graphique ?
Marsh Posté le 16-01-2014 à 16:01:44
Salut NHiX,
As-tu trouvé la cause de ton problème de plantage de la VM ?
Marsh Posté le 22-12-2013 à 18:43:07
MAJ du 11/01/15
Grâce à tybobab, voici un tutoriel qui devrait grandement vous simplifier la vie si vous souhaitez faire du VFIO avec votre carte graphique (matériel compatible)
Tout d'abord celà fonctionne sur une Fedora 21 workstation, je n'ai pas testé d'autre distribution, et contrairement à tybobab, j'utilise virt-manager
ça se passe dans un terminal.
On va ensuite édité le grub
Pour y ajouter sur la ligne
On va regénérer le grub maintenant
Création du fichier vfio-bind avec nano
Voici le contenu à coller dans ce fichier
On donne ensuite les autorisations nécessaire à ce fichier avec
Blocage ensuite du driver de la carte graphique, attention celle-ci sera inutilisable sous GNU/Linux ensuite.
Selon votre carte graphique, AMD ou nVidia
le contenu du fichier sera different
dans mon cas, pour une carte AMD
Maintenant, vous rebootez avec
Dans un terminal ensuite, vous lancez
et normalement avec une commande
le module utilisé sera vfio-pci
Merci à tybobab, sans qui ce tutoriel n'aurait jamais vu le jour
MAJ du 18/04/14
[Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux
Lien proposé par tybobab
http://linuxfr.org/users/chrisk/jo [...] fonctionne
Lien proposé par jo popo
http://edencomputing.com/index.php [...] u-support/
MAJ du 11/01/14
! Les Pré-requis pour ce projet, sont un CPU et un chipset compatible avec le Vt-d et le VT-x !
Le projet est de faire cohabiter plusieurs OS à l'aide de VM, ça c'est déjà connu, on peut le faire avec Virtualbox ou autre Vmware...
Mais ce dont on va parler ici, c'est du Qemu-KVM ou autre Xen, tout ça sur du GNU/Linux.
Mon expérience se base sur Debian Jessie, mais je pense qu'on peut adapter ça pour de l'Arch, Ubuntu, ou encore CentOS...
Le but est de cumulé les avantages des OS, attention aux trolls...
GNU/Linux: stabilité, exigence matériel légère ...
MS Windows: Jeux 3D, logiciel d'imagerie ...
MacOS: panel de logiciel de création....
Bref, partant du principe que chaque OS à des avantages et des inconvénients
On va sélectionner chaque OS en fonction de ses avantages, pour résumer
On va partir sur un système de base (aussi appelé Dom0 pour Xen), un OS GNU/Linux léger comme Debian
On va créer une machine virtuelle Windows8.1 à laquelle on va dédier une carte graphique (sous réserve que votre installation en possède une, en plus du chipset intégré)
Voici comment faire dans le cas de ma configuration:
Je pars d'une Debian Jessie, fraîchement installée, on se connecte en super-utilisateur
On "blacklist" le module radeon (ou fglrx, dans le cas d'un pilote propriétaire AMD) (ou nouveau nvidia, dans le cas d'une carte graphique nVidia)
lspci afin de nous montrer la carte graphique à donner à notre future VM Windows8.1
lspci -n
WIP
Post original:
Bonjour les copains et copines
Voilà je viens de me monter ma nouvelle config dans le but avoué d'en faire une station de virtualisation de Bureau/Serveur/Jeux
4770S / Q87m-vPro pour la compatibilité VT-x VT-d
HD7950 pour le PCI Passthrough avec le VT-d
OS CentOS 6.5, car il possède ce que je recherche pour un Dom0, il est très léger.
[root@localhost NHiX]# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1023 2 r----- 1829.7
windows8 3 8191 4 -b---- 3875.3
gnu 4 2043 2 -b---- 13.5
Donc 1Go de RAM pour mon Dom0 ce qui me parait suffisant
8Go pour Windows 8.1 x64, juste pour Battlefield 4 xD
2Go pour ma VM Debian, qui s'occupe de la partie serveur/stockage
Le réseau fonctionne entre les VM, merci copain Xum
Mais je souhaiterai profiter de mon équipement logitech sur mon DomU windows8.
L'idée est de dédier par le biais d'un PCI assignable-add quelques ports USB, enfin surtout ceux où se trouve mon G13, Clavier et souris, et ainsi pouvoir installer les drivers sous mon DomU windows8... Mais vous allez me dire, tu n'auras plus de clavier souris dans ton Dom0, ce à quoi je répondrai, oui mais avec Synergy ça devrait marcher.
Synergy étant un KVM logiciel multiOS, qui fonctionne avec un Synergy Server et un ou plusieurs clients
Hélas lors de mes multiples tests, celui-ci ne trouve ni serveur, ni client, même sur un autre PC
Bref, je ne suis pas loins du but, juste cette histoire de Synergy qui me bloque
EDIT: Changement du titre pour Qemu-KVM
EDIT du 18/04/14: Changement du titre pour [Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux
Message édité par NHiX le 11-01-2015 à 11:18:50