Se o acesso a dispositivos USB a partir do seu sistema operacional convidado Xen se tornar um verdadeiro desafio para você, nosso guia de transmissão USB Xen o ajudará a resolver esse problema. Neste artigo, você encontrará descrições simples das maneiras mais comuns de redirecionar periféricos USB para a máquina virtual Xen.
O Xen é um hipervisor multiplataforma que suporta vários recursos avançados e é amplamente usado em computadores de consumo e servidores de dados corporativos.
O hipervisor Xen trabalha diretamente no hardware do sistema. O que ele faz é adicionar uma camada de virtualização entre o hardware e as máquinas virtuais do sistema, transformando o hardware do sistema em um conjunto de recursos lógicos de computação que podem ser alocados dinamicamente a qualquer sistema operacional convidado pelo hipervisor. Os sistemas operacionais em execução em máquinas virtuais interagem com recursos virtuais como se fossem recursos físicos.
Um dos principais recursos do hypervisor Xen é o suporte à paravirtualização, um modo especial do kernel do SO. Ao contrário da emulação de um ambiente isolado separado e conjunto de hardware para cada máquina, esse modo permite obter um desempenho muito melhor.
Com isso, o modo de paravirtualização tem suas limitações: operações privilegiadas são proibidas, incapacidade de alternar do modo de 32 bits para 64 bits e vice-versa 'on the fly', a virtualização de hardware do processador não é suportada. Nenhum desses fatores, no entanto, pode afetar significativamente o desempenho e a usabilidade do sistema.
Com base na tecnologia de passagem USB, o aplicativo permite redirecionar dispositivos USB pela rede (Ethernet, WAN, Internet), tornando-os acessíveis a partir de um sistema operacional convidado. A solução de software está disponível para sistemas operacionais Windows, Linux e Mac e suporta conexões de plataforma cruzada.
Uma vez conectado, o dispositivo aparecerá no Gerenciador de dispositivos do sistema operacional convidado como se estivesse fisicamente conectado à máquina virtual.
Apesar de suas muitas vantagens, a solução Xen ainda tem uma grande desvantagem. Como qualquer hipervisor bare metal, o Xen tem problemas para redirecionar as portas USB para um sistema operacional host. Ao mesmo tempo, existem algumas maneiras de obter acesso a um dispositivo USB de um domínio convidado do Xen. O método acima descreve como fazer isso com a ajuda de um software de passagem USB Xenserver, mas vamos falar sobre alguns métodos "nativos" para acessar o USB do Xen também.
Geralmente, os dispositivos USB são especificados pelo endereço do barramento (bus.device) ou pela etiqueta do dispositivo (vendorid: deviceid).
Você pode listar os dispositivos USB no sistema usando o 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 exemplo, se você precisar redirecionar o mouse Logitech, poderá especificar 046d: c016 ou 1.6.
Normalmente, os dispositivos host individuais são encaminhados para um SO convidado por meio de um controlador de dispositivo USB emulado ou PVUSB.
1. O primeiro método implica que o modelo do dispositivo (qemu) apresenta um controlador USB emulado ao convidado. Depois disso, o processo de modelo do dispositivo assume o controle do dispositivo a partir do domínio 0 e transmite os comandos USB entre o sistema operacional convidado e o dispositivo USB host.
Esse método pode ser usado apenas com domínios HVM e não está disponível para domínios executados com domínios stub de modelo de dispositivo.
Quanto ao Xen 4.6, o xl suporta apenas o USB emulado, a partir do arquivo de configuração.
Você pode ativar o hub USB emulado usando usb=1 . Em seguida, você precisará especificar dispositivos na lista de dispositivos no arquivo de configuração junto com outros dispositivos emulados usandohost:USBID. Por exemplo:
usb=1
usbdevice=['tablet','host:1.6','host:0424:460']
USB 1.1 é o controlador USB padrão criado pelo qemu. Para alguns dispositivos, no entanto, isso não é suficiente. Nesse caso, começando com 4.6, você pode usar usbversion para especificar também a versão do controlador USB. No entanto, atualmente isso não é compatível com o usbdevice e, portanto, só é eficiente em conjunto com o redirecionamento USB de especiarias. Esta opção não está disponível para qemu tradicional.
2. O segundo método, o PVUSB, usa uma interface front-end / back-end paravirtualizada, semelhante à rede tradicional Xen PV e aos protocolos de disco.
Para poder usar o PVUSB, é necessário o usbfront no sistema operacional convidado e o usbback no dom0 ou o backend usb no qemu (ou no domínio do driver USB).
O suporte ao PVUSB no xl / libxl (para o dispositivo PVUSB do arquivo de configuração e para o dispositivo PVUSB hot-plug e un-plug) está disponível desde o Xen 4.7. Agora, ele funciona com USB 1.1 e USB 2.0.
Aqui está o que você deve fazer para passar pelos dispositivos USB host para o convidado com PVUSB:
usbctrl=['type=qusb,version=2,ports=4', 'type=qusb,version=1, ports=4', ]
usbdev=['hostbus=2, hostaddr=1, controller=0,port=1', ]
Além disso, você pode especificar apenas usbdev, por exemplo:
usbdev=['hostbus=2, hostaddr=1, ]
Por exemplo:
#xl usbctrl-attach test_vm version=1 ports=8
Outra maneira popular de obter acesso a um dispositivo USB a partir de um domínio convidado Xen é uma solução dedicada de terceiros que trabalha pela rede. Nesse caso, você precisará de um servidor USB (hardware ou software) e um cliente USB (software). Este último é realmente um driver especial para o sistema operacional. Agora, vamos analisar mais de perto essa maneira simples e eficiente de obter suporte de passagem USB Xen em sua máquina virtual.