Si l'accès aux périphériques USB à partir de votre système d'exploitation invité Xen devient un véritable défi pour vous, notre guide de passage USB Xen vous aidera à résoudre ce problème. Dans cet article, vous trouverez des descriptions simples des moyens les plus courants de rediriger des périphériques USB vers une machine virtuelle Xen.
Xen est un hyperviseur multiplateforme qui prend en charge une multitude de fonctionnalités avancées et est largement utilisé sur les ordinateurs grand public et les serveurs de données d'entreprise.
L'hyperviseur Xen fonctionne directement sur le matériel du système. Il ajoute une couche de virtualisation entre le matériel du système et les machines virtuelles, transformant le matériel du système en un pool de ressources informatiques logiques qui peuvent être allouées dynamiquement à tout système d'exploitation invité par l'hyperviseur. Les systèmes d'exploitation s'exécutant sur des machines virtuelles interagissent avec les ressources virtuelles comme s'il s'agissait de ressources physiques.
L'une des principales caractéristiques de l'hyperviseur Xen est la prise en charge de la paravirtualisation, un mode spécial du noyau du système d'exploitation. Contrairement à l'émulation d'un environnement isolé séparé et d'un ensemble de matériel pour chaque machine, ce mode vous permet d'obtenir de bien meilleures performances.
Avec cela, le mode de paravirtualisation a ses limites: les opérations privilégiées sont interdites, l'impossibilité de passer du mode 32 bits au mode 64 bits et vice versa «à la volée», la virtualisation matérielle du processeur n'est pas prise en charge. Cependant, aucun de ces facteurs ne peut affecter de manière significative les performances et la convivialité du système.
Basée sur la technologie USB passthrough, l'application permet de rediriger les périphériques USB sur le réseau (Ethernet, WAN, Internet) en les rendant accessibles à partir d'un système d'exploitation invité. La solution logicielle est disponible pour les systèmes d'exploitation Windows, Linux et Mac et prend en charge les connexions multiplateformes.
Une fois connecté, l'appareil apparaîtra dans le Gestionnaire de périphériques de votre système d'exploitation invité comme s'il était physiquement attaché à la machine virtuelle.
Malgré ses nombreux avantages, la solution Xen présente toujours un inconvénient majeur. Comme tout hyperviseur bare metal, Xen a des problèmes pour rediriger les ports USB vers un OS hôte. Dans le même temps, il existe plusieurs façons d'accéder à un périphérique USB à partir d'un domaine invité Xen. La méthode ci-dessus décrit comment procéder à l'aide d'un logiciel de relais USB Xenserver, mais parlons également de certaines méthodes "natives" pour accéder à l'USB depuis Xen.
Le plus souvent, les périphériques USB sont spécifiés soit par leur adresse de bus (bus.device) soit par leur balise de périphérique (vendorid: deviceid).
Vous pouvez répertorier les périphériques USB sur le système à l'aide de la commande lsusb:
Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 003 Device 002: ID f617:0905
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0424:2640 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 005: ID 0424:4060 Standard Microsystems Corp. Ultra Fast Media Reader
Bus 001 Device 006: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
Par exemple, si vous devez rediriger la souris Logitech, vous pouvez spécifier 046d: c016 ou 1.6.
En règle générale, les périphériques hôtes individuels sont transmis à un système d'exploitation invité via un contrôleur de périphérique USB émulé ou PVUSB.
1. La première méthode implique que le modèle d'appareil (qemu) présente un contrôleur USB émulé à l'invité. Après cela, le processus de modèle de périphérique prend le contrôle du périphérique à partir du domaine 0 et transmet les commandes USB entre le système d'exploitation invité et le périphérique USB hôte.
Cette méthode peut être utilisée uniquement avec les domaines HVM et n'est pas disponible pour les domaines qui s'exécutent avec des domaines de stub de modèle de périphérique.
Quant à Xen 4.6, xl ne prend en charge que l'USB émulé, à partir du fichier de configuration.
Vous pouvez activer le concentrateur USB émulé à l'aide deusb=1. Ensuite, vous devrez spécifier des périphériques dans la liste des périphériques dans le fichier de configuration avec d'autres périphériques émulés à l'aide de host:USBID. Par exemple:
usb=1
usbdevice=['tablet','host:1.6','host:0424:460']
USB 1.1 est le contrôleur USB par défaut créé par qemu. Pour certains appareils, cependant, ce n'est pas suffisant. Dans un tel cas, à partir de 4.6, vous pouvez également utiliser usbversion pour spécifier la version du contrôleur USB. Cependant, actuellement ce n'est pas compatible avec usbdevice , et n'est donc efficace qu'en conjonction avec la redirection USB d'épices. Cette option n'est pas disponible pour qemu-traditional.
2. La deuxième méthode, PVUSB, utilise une interface front-end/back-end paravirtualisée, similaire au réseau PV traditionnel Xen et aux protocoles de disque.
Pour pouvoir utiliser PVUSB, vous devez utiliser usbfront dans votre système d'exploitation invité et usbback dans dom0 ou usb backend dans qemu (ou votre domaine de pilote USB).
La prise en charge de PVUSB dans xl / libxl (pour les périphériques PVUSB du fichier de configuration et les connexions et déconnexions à chaud de périphériques PVUSB) est disponible depuis Xen 4.7. Maintenant, cela fonctionne avec USB 1.1 et USB 2.0.
Voici ce que vous devez faire pour passer par des périphériques USB hôtes à l'invité avec PVUSB:
usbctrl=['type=qusb,version=2,ports=4', 'type=qusb,version=1, ports=4', ]
usbdev=['hostbus=2, hostaddr=1, controller=0,port=1', ]
Vous pouvez également spécifier usbdev uniquement, par exemple:
usbdev=['hostbus=2, hostaddr=1, ]
Par exemple:
#xl usbctrl-attach test_vm version=1 ports=8
Un autre moyen populaire d'accéder à un périphérique USB à partir d'un domaine invité Xen est une solution tierce dédiée fonctionnant sur le réseau. Dans ce cas, vous aurez besoin d'un serveur USB (matériel ou logiciel) et d'un client USB (logiciel). Ce dernier est en fait un pilote spécial pour le système d'exploitation. Maintenant, regardons de plus près cette façon simple et efficace d'obtenir la prise en charge du relais USB Xen dans votre machine virtuelle.