Bareflank 2.0 hypervisor release

Took place hypervisor release Bareflank 2.0, which provides tools for the rapid development of specialized hypervisors. Bareflank is written in C++ and supports C++ STL. The modular architecture of Bareflank makes it easy to expand existing hypervisor capabilities and create your own hypervisor options, both running on top of hardware (like Xen) and running in an existing software environment (like VirtualBox). It is possible to run the operating system of the host environment in a separate virtual machine. Project code spreads licensed under LGPL 2.1.

Bareflank provides support for Linux, Windows, and UEFI on 64-bit Intel CPUs. Intel VT-x technology is used for hardware partitioning of virtual machine resources. Support for macOS and BSD systems is planned for the future, as well as the ability to work on ARM64 and AMD platforms. Additionally, the project develops its own driver for loading VMM (Virtual Machine Manager), an ELF loader for loading VVM modules, and a bfm application for controlling the hypervisor from user space. A toolkit is provided for writing extensions using elements defined in the C++11/14 specifications, an exception stack unwinding library (unwind), as well as its own runtime library to support the use of constructors/destructors and registration of exception handlers.

Based on Bareflank, a virtualization system is being developed Boxy, which supports running guest systems and allows you to use lightweight virtual machines with Linux and Unikernel to run specialized services or applications. In the form of isolated services, you can run both ordinary web services and applications that have special requirements for reliability and security, free from the influence of the host environment (the host environment is isolated in a separate virtual machine).

The main innovations of Bareflank 2.0:

  • Added support for launching Bareflank directly from UEFI for subsequent execution of the operating system in a virtual machine;
  • A new memory manager has been implemented, designed similarly to the SLAB/Buddy memory managers in Linux. The new memory manager demonstrates reduced fragmentation, improved performance, and supports dynamic memory allocation to the hypervisor via bfdriver, which allows you to reduce the initial size of the hypervisor and optimally scale depending on the number of CPU cores;
  • New build system based on CMake, independent of the command interpreter, which allows to achieve significant acceleration of hypervisor compilation and simplifies future support of additional architectures, such as ARM;
  • The code was reorganized and the structure of the source texts was simplified. Improved support for related projects such as hyperkernel without the need for code duplication. More clearly separated code hypervisor, unwind libraries, runtime, control toolkit, bootloader and SDK;
  • Most of the API, instead of the previously used inheritance mechanisms in C ++, has been transferred to the use of delegation, which allowed us to simplify the API, improve performance and reduce resource consumption.

Source: opennet.ru

Add a comment