Pre-release

@rianquinn rianquinn released this Mar 2, 2018 · 259 commits to master since this release

Assets 2

The Bareflank Team is proud to announce version rc2.0.2, with the following new features:

NOTE: This is a pre-release, and help is needed with testing, code review, documentation review, etc... Please give this release a try, and tell us what you think here or send in a PR.

New Build System

Round 3 for our build system, is now based on CMake. With our new build system, we no longer have a dependency on "bash" to compile our code (our dependencies like binutils and newlib still have this dependency). Build times are significantly improved, the source is far easier to read / modify, and we now have the ability to easily support additional architectures like ARM, which is currently being developed. Fingers crossed, this should be the last time we completely re-write the build system. For information on how to use this build system, please see the instructions on the main README.md and our example config

Reorganization

Most of the code has been reorganized and greatly simplified to make it easier to follow the source code, but also provide better support for projects like the hyperkernel without the need for as much duplication of code. To see the source code for the actual hypervisor, please see https://github.com/Bareflank/hypervisor/tree/master/bfvmm. The remaining source code provides support logic like the C runtime, Unwinder (for exception support), Intrinsics for Intel and ARM, the Bareflank Manager for starting / stopping the hypervisor from userspace (optional), the ELF loader, and SDK for various different headers that simplify development.

Delegates

We have moved a lot of the APIs from using inheritance, to using delegates. Inheritance is still used in some places, but switching to delegates has increased performance, reduced memory usage, and greatly simplified our APIs. In addition, the Extended APIs has a more comprehensive set of APIs that are easier to use as a result.

UEFI Support

UEFI support is being added, and will be completed for v2.0. With UEFI support, will provide better Type 1 support, allowing users to start Bareflank from UEFI, and then start your desired operating system including Windows and Linux.

Memory Management

Better memory management will be completed for v2.0. The new memory manager will be modeled after the SLAB / Buddy allocators in Linux reducing external fragmentation, and increasing performance. This new memory manager will also provide the ability to dynamically add memory to the hypervisor from the bfdriver, allowing us to reduce the size of the initial hypervisor, and better scale as the total number of CPUs increases.

@rianquinn rianquinn released this Mar 2, 2018 · 262 commits to master since this release

Assets 2

The Bareflank Team is proud to announce version rc2.0.1. This release is a minor tag in preparation of rc2.0.2.

@rianquinn rianquinn released this Apr 29, 2017 · 288 commits to master since this release

Assets 2

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

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.

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

Assets 2

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.

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

Assets 2

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

NOTES:

  • 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
    hypervisor
  • 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.