Posso emular algum hardware para uma máquina virtual executando um programa no sistema operacional do host?

4

Então ...

Existem máquinas virtuais que basicamente executam um sistema operacional em algum ambiente simulado (que pode ou não corresponder ao hardware real atualmente presente). Existem algumas possibilidades para conectar dispositivos de hardware reais (por exemplo, drives USB) a uma máquina virtual.

Depois, há alguns chamados "dispositivos USB virtuais" (por exemplo, o Arduino Leonardo) que podem ser programados para responder como um dispositivo USB real, mas são basicamente apenas um micro chip na outra extremidade do cabo USB que é executado algum programa (eles podem ou não estar conectados a outros componentes, para essa questão, vamos supor que eles não estão).

É claro, pode-se conectar um dispositivo USB virtual a uma VM (já que eles são um hardware real).

Seria possível pular a parte de hardware e executar um programa personalizado no sistema operacional do host que se conecta a uma máquina virtual como se fosse um dispositivo de hardware real (digamos, como um plug-in para o software de virtualização ou usando o autônomo programa usando alguma API)?

Se sim, existem soluções existentes para referência futura?

Se não, por que as máquinas virtuais não oferecem esse recurso (por exemplo, existem algumas restrições de hardware)?

    
por hoffmale 16.04.2017 / 06:52

1 resposta

5

Resposta curta: Sim.

Isso depende totalmente do hipervisor, na verdade.

Todo o hardware virtual é fornecido para as máquinas virtuais pelo Hypervisor. Se o Hypervisor suporta plugins e a adição de hardware virtual através desses plugins, então sim, você pode adicionar hardware virtual ao seu ambiente dessa maneira.

O ESXi da VMware suporta isso, na minha experiência pessoal. Você pode baixar e instalar dispositivos de rede virtual, como switches da Cisco, e acredito que lembro de ter visto outros hardwares especializados disponíveis naquele produto também, embora já tenham passado alguns anos desde que gerenciei uma pilha virtual VMware.

Eu não sei se outros Hypervisors suportam isso, mas eu acho que o HyperV da Microsoft provavelmente também funciona, já que eles tentam manter a paridade de recursos com o VMware o máximo possível.

Sugiro ver as várias APIs da VMware como um bom lugar para começar.

Se você estiver usando um hypervisor em particular, precisará examinar a documentação desse sistema e determinar se ele tem um recurso semelhante. Cada hipervisor será diferente, e é improvável que o software escrito para um funcione em outro sem modificações extensas.

    
por 18.04.2017 / 22:05