所以...
有一些虚拟机基本上在某些模拟环境中运行操作系统(该环境可能与当前存在的真实硬件相对应,也可能不相对应)。可以将实际的硬件设备(例如USB驱动器)连接到虚拟机。
然后有一些所谓的“虚拟USB设备”(例如Arduino Leonardo),可以对其进行编程,使其像实际的USB设备一样做出响应,但是基本上只是运行某些程序的USB电缆另一端的微型芯片(它们可能连接或未连接到其他组件,对于这个问题,让我们假设它们不是)。
当然,可以将虚拟USB设备连接到VM(因为它们是真实的硬件)。
是否可以跳过硬件部分,并在连接到虚拟机的主机操作系统上运行自定义程序,就像它是真正的硬件设备一样(例如,作为虚拟化软件的插件,或者使用独立的程序使用某些虚拟机) API)?
如果是,是否有任何现有解决方案可供进一步参考?
如果没有,为什么虚拟机不提供此功能(例如,是否存在一些硬件限制)?
简短的回答:是的。
实际上,这完全取决于Hypervisor。
虚拟机管理程序将所有虚拟硬件提供给虚拟机。如果Hypervisor支持插件并通过这些插件添加虚拟硬件,那么可以,您可以通过这种方式将虚拟硬件添加到您的环境中。
以我的个人经验,VMware的ESXi支持这一点。您可以从Cisco下载和安装虚拟网络设备(例如交换机),我相信我还记得该产品中还提供了其他专用硬件,尽管自从管理VMware虚拟堆栈已经过去了几年。
我不知道是否有其他任何Hypervisor支持此功能,但是我猜微软的HyperV可能也能做到这一点,因为他们试图保持与VMware的功能均等。
我建议研究VMware的各种API,这是一个很好的起点。
如果您打算使用特定的系统管理程序,则需要仔细阅读该系统的文档,并确定它们是否具有类似的功能。每个虚拟机管理程序都将不同,并且为一个虚拟机管理程序编写的软件在不进行大量修改的情况下不太可能在另一个虚拟机管理程序中工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句