我对虚拟化概念还很陌生,并且对 Xen 特别感兴趣。
机器是一个由许多部件/组成部分组成的复杂系统:
- CPU(一个或多个)
- 内存
- 硬盘
- 网卡
- 母板
- 运行于一切之上的操作系统
- 多得多...
所以我想象虚拟机还必须对所有这些组件进行建模/虚拟化。我尝试了一下 VirtualBox(只是为了方便),果然,我必须选择所有这些东西来“组装”一台虚拟机。
作为一名程序员,这激起了我的兴趣。假设我有一张全新的网卡、CPU 或内存芯片(无论什么,都无所谓),我想让它与 Xen 之类的虚拟机管理程序兼容。这意味着,我想编写一些代码(?)生成某种二进制文件/插件,并允许 Xen使用在构建新的虚拟机时,我希望这个工件能够正常工作。再说一遍,假设我刚刚创建了自己的网卡SmeebEthernets 5000
;当使用 Xen 虚拟机管理程序创建新的 Linux VM 时,我希望该 Linux VM 能够使用我的SmeebEthernets 5000
网卡。
我在想:
- 我使用什么语言/框架/API?
- 产生的最终(编译/链接/打包)工件是什么(与 Xen 所期望的任何工件兼容)?
- 对于每种类型的虚拟化组件(CPU,网卡,操作系统,主板等),这个过程是否不同?
- 是否有任何开源社区正在构建这些类型的虚拟化组件、我可以仔细阅读的存储库等?
例子:
在上面的屏幕截图中,我可以在几个桥接适配器之间进行选择。我确信 Xen 提供了类似的选择……但是如何提供呢?例如,为了使“Interl(R) 以太网连接 I217-LM”成为 VBox 中的可用选项,必须在某个时候向 VBox 注册某些内容……我问什么?
答案1
斯米布,
取决于您作为开发人员想要做什么。XEN、VirtualBox、VMware 都是使用真实 PC(Ram、HD、CPU 等)的 Hypervisor 引擎。并以“模拟”方式使它们虚拟化。使它们与运行它们的 HOST 的真实硬件层保持抽象。
如果您编写的代码是针对主机的,则虚拟机不会受到影响。除非您利用虚拟机管理程序的 API。例如 XEN 或 VMWare。如果您的代码是针对正在运行的 Linux 或 Windows VM。那么它只会影响它们,而不会影响主机。
取决于 Hypervisor 引擎的软件版本。并非所有设备驱动程序都受支持。比如 USB 设备。较新的引擎可以。较旧的引擎则不然……
您必须在 LAB 机器上试验其效果。
希望这能有所帮助。干杯。