В Bareflank реализована поддержка Linux, Windows и UEFI на 64-разрядных CPU Intel. Для аппаратного разделения ресурсов виртуальных машин применяется технология Intel VT-x. На будущее запланирована поддержка macOS и BSD-систем, а также возможность работы на платформах ARM64 и AMD. Дополнительно проектом развивается собственный драйвер для загрузки VMM (Virtual Machine Manager), ELF-загрузчик для загрузки модулей VVM, приложение bfm для управления гипервизором из пространства пользователя. Предоставляется инструментарий для написания расширений с использованием элементов, определённых в спецификациях C++11/14, библиотека раскручивания стека исключений (unwind), а также своя runtime-библиотека для поддержки применения конструкторов/деструкторов и регистрации обработчиков исключений.
На базе Bareflank ведётся разработка системы виртуализации Boxy, поддерживающей запуск гостевых систем и позволяющей использовать легковесные виртуальные машины с Linux и Unikernel для запуска специализированных сервисов или приложений. В форме изолированных сервисов можно выполнять как обычные web-сервисы, так и приложения, к которым предъявляются особые требования к надёжности и безопасности, избавленные от влияния хост-окружения (хост-окружение изолируется в отдельной виртуальной машине).
Основные новшества Bareflank 2.0:
- Добавлена поддержка запуска Bareflank напрямую из UEFI для последующего выполнения операционной системы в виртуальной машине;
- Реализован новый менеджер управления памятью, спроектированный по аналогии с менеджерами памяти SLAB/Buddy в Linux. Новый менеджер памяти демонстрирует снижение фрагментации, позволяет добиться более высокой производительности и поддерживает динамическое выделение памяти гипервизору через bfdriver, что позволяет сократить начальный размер гипервизора и оптимально масштабироваться в зависимости от числа ядер CPU;
- Новая система сборки на базе CMake, независимая от командного интерпретатора, позволяющая добиться существенного ускорения компиляции гипервизора и упрощающая поддержку в будущем дополнительных архитектур, таких как ARM;
- Проведена реорганизация кода и упрощена структура исходных текстов. Улучшена поддержка смежных проектов, таких как hyperkernel, без необходимости дублирования кода. Более явно отделён код гипервизора, unwind-библиотеки, runtime, управляющего инструментария, загрузчика и SDK;
- Большая часть API вместо ранее применявшихся механизмов наследования в C++ переведена на применение делегирования, что позволило упростить API, повысить производительность и сократить потребление ресурсов.
Источник: http://www.opennet.ru/opennews/art.shtml?num=52279
