我可以通过在主机操作系统上运行程序来模拟虚拟机的某些硬件吗?

hof*_*ale 4 virtual-machine

所以...

有些虚拟机基本上在某些模拟环境中运行操作系统(这可能与当前存在的真实硬件相对应,也可能不对应)。有一些可能性可以将真实的硬件设备(例如 USB 驱动器)连接到虚拟机。

然后有一些所谓的“虚拟 USB 设备”(例如 Arduino Leonardo),它们可以被编程为像实际的 USB 设备一样响应,但基本上只是 USB 电缆另一端的微型芯片,可以运行一些程序(它们可能会或可能不会连接到其他组件,对于这个问题,让我们假设它们不是)。

当然,可以将虚拟 USB 设备连接到 VM(因为它们是真正的硬件)。

是否有可能跳过硬件部分并在连接到虚拟机的主机操作系统上运行自定义程序,就好像它是一个真正的硬件设备(例如,作为虚拟化软件的插件,或使用一些独立程序使用一些API)?

如果是,是否有任何现有的解决方案可供进一步参考?

如果没有,为什么虚拟机不提供此功能(例如,是否存在一些硬件限制)?

mus*_*ear 6

简短的回答:是的。

这完全取决于管理程序,真的。

所有虚拟硬件都由管理程序提供给虚拟机。如果 Hypervisor 支持插件和通过这些插件添加虚拟硬件,那么是的,您可以通过这种方式将虚拟硬件添加到您的环境中。

根据我的个人经验,VMware 的 ESXi 支持这一点。您可以从 Cisco 下载并安装虚拟网络设备,例如交换机,我相信我还记得在该产品中看到过其他专用硬件,尽管我已经有几年没有管理过 VMware 虚拟堆栈了。

我不知道是否有任何其他 Hypervisor 支持这一点,但我猜微软的 HyperV 可能也支持这一点,因为他们试图尽可能地保持与 VMware 的功能平等。

我建议研究 VMware 的各种 API 作为一个很好的起点。

如果您打算使用特定的管理程序,则需要仔细阅读该系统的文档并确定它们是否具有类似的功能。每个虚拟机管理程序都不同,为一个虚拟机管理程序编写的软件如果不进行大量修改,就不太可能在另一个虚拟机管理程序中运行。