/vmm

Minimal virtual machine manager using KVM on Linux

Primary LanguageC

A bare-minimum virtual machine monitor using KVM hardware support in Linux.

Build with make, which will compile the VMM and assemble the 'BIOS'.

This creates a VM with 16MB of memory, and loads the real-mode BIOS to 0xf0000 in guest memory, which is also mapped to 0xffff0000 to handle the default x86 power-on BIST entry point.

Execution continues inside the virtual BIOS, setting up interrupt handlers and structures for serial and parallel ports, before writing to an I/O port to cause a vmexit to trap execution.

I wanted to create a basic VM host which I could use for testing and debugging, and also for a learning experience.

I found that documentation on KVM interfaces was quite sparse and inaccurate, so I followed the kernel source in order to work out the minimum required to get a VM running.