Bareflank Hypervisor (rc1.1.0)

@rianquinn rianquinn released this Nov 24, 2016 · 103 commits to master since this release

The Bareflank Team is proud to announce the release candidate version rc1.1.0, with the following new features:

NOTE: Help wanted for testing, code review, etc...

New Build System

A new build system was developed that supports out-of-tree compilation, better integration with extensions, and support for Docker. With Docker support, you no longer need to compile the cross compilers on Linux based systems. This not only provides a faster method for testing out Bareflank, but also speeds up our Travis CI builds reducing testing time. Local compilers are still recommended if you plan to do heavy development as they are faster.

Windows / OpenSUSE Support

Bareflank now supports Windows 8.1, Windows 10, and OpenSUSE Leap 42.2. Local compilers are required for Windows, and serial output does not work with Windows in VMWare (nested case), but works fine on real hardware. Extensive testing has been done with Windows including running benchmark programs while Bareflank is running as well as CPU-Z.

VMM Isolation

Like MoRE and SimpleVisor, Bareflank version 1.0 used the host OS's resources for execution. This included page tables, CR0, CR4, GDT, IDT, etc... Bareflank now has it's own set of resources providing isolation from the host OS like most traditional hypervisors. This provides the ability to map host / guest memory, as well as provides better security.

MultiCore Support

All of the cores are now used by Bareflank instead of just the bootstrap core (as was the case with version 1.0). To support multicore, mutex support was added to the hypervisor. Bareflank does not contain a scheduler, and thus, thread support is not provided, but std::mutex is via a simple spinlock to ensure coherency between cores. There are also a number of APIs to work with each core individually if needed.

VMCall Support

Bareflank now has generic support for VMCalls including version querying, raw register access, mapped memory, JSON commands, simple events and VMM unit testing. the Bareflank Manager (BFM) user space application has also been extended to provide command line access to these VMCalls, and the host OS drivers have also been updated to provide IOCTL support if direct VMCalls are not desired.

Clang / LLVM Support

Bareflank can now cross compile the VMM using Clang / LLVM. In addition, all of the libraries that are used including newlib and libc++ are compiled as shared libraries and linked as such.

Optimization Support

Bareflank now has support for SSE / AVX and "-O3" optimizations in the VMM.

Testing / GSL Support

Bareflank now supports a number of testing tools to ensure the source code works as advertised. This includes Coveralls support for code coverage, Static analysis via Clang Tidy and Coverity and dynamic analysis via Google Sanitizers. These tests are executed on each PR via Travis CI and AppVeyor to ensure the repo remains stable. Finally, Bareflank uses Clang Tidy to ensure C++ Core Guideline compliance, and has support for the Guideline Support Library.


Bareflank Hypervisor (v1.0.0)

@rianquinn rianquinn released this Apr 27, 2016 · 523 commits to master since this release

The Bareflank Team is proud to announce the first release of our hypervisor, version 1.0.0.


  • Linux support
  • Single core support (core 0)
  • Custom C runtime library for constructor / destructor support and registering
    exception handlers
  • Custom driver entry logic for loading the VMM
  • Custom ELF loader for loading the VMM modules
  • Userspace managament application (BFM) for starting / stopping the
  • Custom kernel-safe unwind library for adding exception support to the VMM
  • Basic VMM with support for Intel x86_64. The VMM places the Host OS into
    a virtual machine and back out. Currently can be extended to provide
    additional functionality
  • Custom build environment
  • Complete set of unit tests
  • Documentation
  • Scripts for setting up Unbuntu, Debian and Fedora build environments.