Writing a hypervisor?

I am studying ideas for a PhD project.

One of my thoughts is to write a hypervisor (or bare metal) (?) So that I can run multiple OS without using a real host operating system. Example. I get a menu of some types of options for starting operating systems. See what the β€œconsole” of what is happening in an already running OS. Reboot the OS, install a new one, etc.

So, there is no host system, just a small application that controls everything.

Conceptually, how do you think about this?

I have a macbook. I should be able to change what EFI loads. Maybe start with a very minimal Linux LIve implementation and scale it really, really far back?

Is it possible to use Darwin and scale it very far?

+4
source share
5 answers

Your idea presented is not an original contribution to science.

My advice is to review Xen and the general hypervisor literature dating back to the 60s and 70s when IBM came up with it.

I am sure that there is room for improvement and original ideas.

In terms of writing a hypervisor, you should first look at Wikipedia, as it provides a good overview of virtualization.

Here is a historical summary, including some semantic quotes: http://www.kernelthread.com/publications/virtualization/ . Pay attention to the first quote from 1959!

+3
source

Scaling an existing OS to develop a hypervisor seems unlikely.

Definitely take a look at some of the existing open source hypervisor projects. If you are interested in reading about how they work, and how you can get to writing one of them, you could try:

Smith and Myra virtual machines. The Ultimate Guide to Chisnall's Hypervisor Xen.

If you are going to write this from scratch, and you are guided by the x86 processor family, you will have to get infected using virtualization instructions (for example, Intel VT-x). And it will be with pure assembler language or, at best, built-in assembly. You say real low-level stuff here.

0
source

Scaling an existing desktop / server OS seems like a bad choice. OTOH, rather than redoing everything, it may be useful to start with built-in RTOS, such as ecos or L4, to extract some features from. In addition, some codes can be reused from QEMU.

If I did this, I would focus on hardware virtualization using VT-x and AMD-V, ignoring dynamic recompilation (if I were not the focus of your work).

In addition, it seems to me that it would be nice to already be able to write enough operating systems to create small test operating systems that can boot on bare hardware that will be used to test the hypervisor under development.

By the way, if scaling up an existing OS was a good strategy, I think it will work best on Linux or on one of the main BSDs. Darwin's use probably requires pain.

0
source

If you are interested in computer communications and hypervisions, how cross-OS connectivity [would be cheaper than trying to connect through regular TCP / IP sockets.

0
source

ESX is essentially a scaled-in Linux installation - with many other add-ons: so your basic premise is worthy.

However, for the PhD project, this sounds too broad: you should focus on something less.

0
source

All Articles