USB en Xen OS: posibles opciones
A pesar de sus muchas ventajas, la solución Xen todavía tiene un gran inconveniente. Como cualquier hipervisor bare metal, Xen tiene problemas para redirigir los puertos USB a un sistema operativo host. Al mismo tiempo, existen algunas formas de obtener acceso a un dispositivo USB desde un dominio invitado de Xen. El método anterior describe cómo hacer esto con la ayuda de un software de paso a través de USB Xenserver, pero hablemos también de algunos métodos "nativos" para acceder a USB desde Xen.
Con mayor frecuencia, los dispositivos USB se especifican por su dirección de bus (bus.device) o su etiqueta de dispositivo (vendorid: deviceid).
Puede enumerar los dispositivos USB en el sistema mediante el comando 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
Por ejemplo, si necesita redirigir el mouse Logitech, puede especificar 046d: c016 o 1.6.
Por lo general, los dispositivos host individuales se reenvían a un sistema operativo invitado a través de un controlador de dispositivo USB emulado o PVUSB.
1. El primer método implica que el modelo de dispositivo (qemu) presenta un controlador USB emulado al huésped. Después de eso, el proceso del modelo de dispositivo toma el control del dispositivo desde el dominio 0 y transmite los comandos USB entre el sistema operativo invitado y el dispositivo USB host.
Este método solo se puede usar con dominios HVM y no está disponible para dominios que se ejecutan con dominios de código auxiliar de modelo de dispositivo.
En cuanto a Xen 4.6, xl solo admite el USB emulado, desde el archivo de configuración.
Puede habilitar el concentrador USB emulado utilizando usb=1 . Luego, deberá especificar los dispositivos en la lista de dispositivos en el archivo de configuración junto con otros dispositivos emulados utilizando host: USBID . Por ejemplo:
usb=1
usbdevice=['tablet','host:1.6','host:0424:460']
USB 1.1 es el controlador USB predeterminado creado por qemu. Para algunos dispositivos, sin embargo, esto no es suficiente. En tal caso, comenzando con 4.6, puede usar usbversion para especificar también la versión del controlador USB. Sin embargo, actualmente esto no es compatible con usbdevice y, por lo tanto, solo es eficiente junto con la redirección USB de especias. Esta opción no está disponible para qemu-tradicional.
2. El segundo método, PVUSB, utiliza una interfaz front-end / back-end paravirtualizada, similar a la red Xen PV tradicional y los protocolos de disco.
Para poder utilizar PVUSB, necesita usbfront en su sistema operativo invitado y usbback en dom0 o backend usb en qemu (o su dominio de controlador USB).
La compatibilidad con PVUSB en xl/libxl (tanto para el dispositivo PVUSB del archivo de configuración como para la conexión y desconexión del dispositivo PVUSB) está disponible desde Xen 4.7. Ahora funciona con USB 1.1 y USB 2.0.
Esto es lo que debe hacer para pasar a través de dispositivos USB host al huésped con PVUSB:
- Primero, desde el archivo de configuración, especifique controladores USB y dispositivos host USB usando usbctrl y usbdev. Por ejemplo:
usbctrl=['type=qusb,version=2,ports=4', 'type=qusb,version=1, ports=4', ]
usbdev=['hostbus=2, hostaddr=1, controller=0,port=1', ]
- Luego, para el tipo puede especificar auto (el valor predeterminado: xl intenta seleccionar el tipo más adecuado), qusb (backend basado en qemu paravirtualizado, debe especificarse para pvUSB utilizado por dominios HVM), pv (back-end basado en kernel paravirtualizado, no admitido por Linux estándar actual), o modelo de dispositivo (controlador USB emulado qemu, aún no compatible).
Además, puede especificar solo usbdev, por ejemplo:
usbdev=['hostbus=2, hostaddr=1, ]
- Después de eso, creará un controlador USB (versión 2.0) y 8 puertos automáticamente, y conectará el dispositivo USB al primer puerto de este nuevo controlador.
- Para conectar y desconectar el dispositivo PVUSB, puede usar los comandos usbctrl-attach, usbctrl-detach, usb-list, usbdev-attach y usbdev-detach.
For instance:
#xl usbctrl-attach test_vm version=1 ports=8
Acceso a dispositivos USB a través de la red
Otra forma popular de obtener acceso a un dispositivo USB desde un dominio invitado Xen es una solución de terceros dedicada que funciona a través de la red. En este caso, necesitará un servidor USB (hardware o software) y un cliente USB (software). Este último es en realidad un controlador especial para el sistema operativo. Ahora, echemos un vistazo más de cerca a esta forma simple y eficiente de obtener soporte de transferencia Xen USB en su máquina virtual.