编写虚拟化 hypervisor?

5

我正在研究博士项目的想法。

其中一个想法是编写一个虚拟机监控程序(或裸金属程序),这样我就可以在没有真正的主机操作系统的情况下运行多个操作系统。例如,我可以得到某种类型的菜单选项来启动操作系统,在已经运行的操作系统中查看正在进行的“控制台”。重启操作系统、安装新操作系统等。

因此,没有主机操作系统,只有一个控制一切的小应用程序。

从概念上讲,如何考虑实现这一点?

我有一台MacBook。我应该能够修改EFI引导。也许从非常简单的Linux Live实现开始,并将其大大缩小?

是否可以使用Darwin并将其大大缩小?


9
作为博士项目,你的想法有哪些独特的和新颖的方面? - jball
9
考虑到已经有几篇这样的论文了(如果我没记错,Xen、L4是虚拟化监控程序),那么选择这个作为博士课题合适吗?你可以使用自己的虚拟化监控程序作为实验背景,在其中尝试新技术并将其作为博士课题的主题,但这种间接的任务最好留给长期从事研究工作的人来完成(博士课程时间较短,应该更加专注于核心问题)。 - Pascal Cuoq
3
你看过现有的解决方案了吗?我想到的是KVM+Qemu,还有之前提到的Xen - 它们都是成熟的项目。你所说的“没有主机操作系统,只有一个控制一切的小应用程序”是什么意思?你需要主机操作系统(你可以将其精简,但它仍然是一个操作系统)。 - Igor Klimer
@igor - Linux-KVM 看起来很有趣,我以前没有听说过。 - ator
1
VMware ESX(如果我没记错的话)似乎正是您想要实现的 - “某物”,您可以用它来引导主机并快速设置虚拟客户机。最后一个项目,我想提到的是OpenVZ - 它绝对值得一试,因为它的概念与其他虚拟化程序不同(如果您可以这样称呼它)。正如您所看到的,有许多解决方案可用,如果您的解决方案没有提供任何创新(这就是博士学位的目的,对吧?),那么我建议选择其他东西 - 也许像他们使用OpenVZ那样使用虚拟化技术? - Igor Klimer
显示剩余3条评论
5个回答

4

你所提出的想法并不是科学领域的原创贡献。

我的建议是回顾Xen和一般虚拟化技术文献,可以追溯到20世纪60年代和70年代IBM发明它的时候。

我相信那里有改进和原创思路的空间。

在实际编写虚拟机监视器方面,你应该先查看维基百科,因为它对虚拟化有一个很好的简介。

这里是一个历史总结,包括一些重要引用:http://www.kernelthread.com/publications/virtualization/。请注意第一个引用是从1959年开始的!


链接已失效。 - Mehdi Charife

0

ESX本质上是一个精简版的Linux安装 - 加入了许多其他好处:因此您的基本前提是不错的。

然而,对于博士项目来说,它听起来太过广泛:您应该专注于更小的事物。


0

缩减现有的桌面/服务器操作系统似乎是一个不好的选择。另一方面,与其重新做一切,从嵌入式RTOS(如ecos或L4)开始提取一些功能可能会很有用。此外,一些代码可能可以从QEMU中重复使用。

如果我在做这件事,我会专注于使用VT-x和AMD-V进行硬件虚拟化,忽略动态重新编译(除非它是你工作的重点)。

此外,我认为最好已经能够编写操作系统,以制作一些可以在裸机上引导的小型测试操作系统,用于测试正在开发的超级管理程序。

顺便说一下,如果缩减现有操作系统是一个好策略,我认为在Linux或主要的BSD之一上运行效果最佳。使用Darwin可能会带来痛苦。


0
如果你对计算机通信和虚拟化技术感兴趣,那么跨操作系统的通信怎么样呢?这比尝试通过普通的TCP/IP套接字连接更便宜。

0

将现有的操作系统缩减以开发虚拟机监视器似乎是一种不太可能的方法。

绝对要看看现有的开源虚拟机监视器项目。如果您有兴趣了解它们的工作原理以及如何编写一个虚拟机监视器,那么可以尝试阅读以下内容:

《Virtual Machines》(作者:Smith & Mair)

《The Definitive Guide to the Xen Hypervisor》(作者:Chisnall)

如果您要从头开始编写,并且针对的是x86系列处理器,则必须使用虚拟化指令(例如Intel VT-x)。这将涉及纯汇编语言,或者最好是内联汇编。您正在谈论真正低级别的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接