/hyperkernel

Primary LanguageC++GNU Lesser General Public License v2.1LGPL-2.1

Hyperkernel


GitHub version Build Status CII Best Practices Join the chat at https://gitter.im/Bareflank-hypervisor/Lobby

Description

The Bareflank Hypervisor's main goal is to provide the "bare" minimum hypervisor. Since Bareflank supports C++ 11/14, multiple operating systems, and a full toolstack, it's not as simple as say SimpleVisor, but still adheres to the same basic principles of leaving out the complexity of a full blown hypervisor in favor of an implementation that is simple to read and follow.

It is our goal to provide a hypervisor that others can extend to create their own hypervisors. To this end, the purpose of this repository, is to provide a set of APIs that enables the creation and management of guest virtual machines. Because this set of APIs is designed to be generic, we intended to support (over time) the following different guest virtual machine types:

  • VM applications (think LibVMI in a VM with no OS)
  • Unikernels (e.g. IncludeOS)
  • PV Kernels (e.g. modified Linux kernel)
  • Thick VMs (e.g. unmodified Windows, Linux, BSD, etc...)

Compilation / Usage

To setup the hyperkernel, we must clone the extension into the Bareflank root folder and run make (the following assumes this is running on Linux).

cd ~/
git clone https://github.com/Bareflank/hypervisor.git
cd ~/hypervisor
git clone https://github.com/Bareflank/extended_apis.git
git clone https://github.com/Bareflank/hyperkernel.git

./tools/scripts/setup-<xxx>.sh --no-configure
sudo reboot

cd ~/hypervisor
./configure -m hyperkernel/bin/hyperkernel.modules

make driver_load

make
make quick

Currently, to test out the hyperkernel, you can run the following test VM applications. The applications are basic C and C++ applications that print "hello world" using either C or C++, and execute in a virtual machine with no OS.

./makefiles/hyperkernel/bfexec/bin/native/bfexec /home/user/hypervisor/makefiles/hyperkernel/tests/basic_c/bin/cross/basic_c
./makefiles/hyperkernel/bfexec/bin/native/bfexec /home/user/hypervisor/makefiles/hyperkernel/tests/basic_cxx/bin/cross/basic_cxx

Links

Bareflank Hypervisor Website
Bareflank Hypervisor API Documentation

Roadmap

The project roadmap can be located here

License

The Bareflank Hypervisor is licensed under the GNU Lesser General Public License v2.1 (LGPL).