Выпуск гипервизора Bareflank 3.0

Состоялся релиз гипервизора Bareflank 3.0, предоставляющего инструментарий для быстрой разработки специализированных гипервизоров. Bareflank написан на языке C++, поддерживает C++ STL. Модульная архитектура Bareflank позволят легко расширять имеющиеся возможности гипервизора и создавать собственные варианты гипервизоров, как работающих поверх оборудования (как Xen), так и запускаемых в имеющемся программном окружении (как VirtualBox). Имеется возможность выполнения операционной системы хост-окружения в отдельной виртуальной машине. Код проекта распространяется под лицензией LGPL 2.1.

В Bareflank реализована поддержка Linux, Windows и UEFI на 64-разрядных CPU Intel и AMD. Для аппаратного разделения ресурсов виртуальных машин применяется технология Intel VT-x. На будущее запланирована поддержка macOS и BSD-систем, а также возможность работы на платформе ARM64. Дополнительно проектом развивается собственный драйвер для загрузки VMM (Virtual Machine Manager), ELF-загрузчик для загрузки модулей VVM, приложение bfm для управления гипервизором из пространства пользователя. Предоставляется инструментарий для написания расширений с использованием элементов, определённых в спецификациях C++11/14, библиотека раскручивания стека исключений (unwind), а также своя runtime-библиотека для поддержки применения конструкторов/деструкторов и регистрации обработчиков исключений.

На базе Bareflank ведётся разработка системы виртуализации Boxy, поддерживающей запуск гостевых систем и позволяющей использовать легковесные виртуальные машины с Linux и Unikernel для запуска специализированных сервисов или приложений. В форме изолированных сервисов можно выполнять как обычные web-сервисы, так и приложения, к которым предъявляются особые требования к надёжности и безопасности, избавленные от влияния хост-окружения (хост-окружение изолируется в отдельной виртуальной машине). Bareflank также лежит в основе гипервизора MicroV, предназначенного для запуска минималистичных виртуальных машин (виртуальная машина одного приложения), реализующего API KVM и подходящего для создания критически важных систем.

Основные новшества Bareflank 3.0:

  • Переход на использование концепции микроядра. Ранее гипервизор имел монолитную архитектуру, при которой для расширения функциональности приходилось использовать специальный API для регистрации callback-вызовов, что затрудняло разработку расширений из-за привязки к языку С++ и внутреннему устройству. Новая архитектура на базе микроядра подразумевает разделение гипервизора на компоненты ядра, выполняемые на нулевом кольце защиты, и расширения, выполняемые на третьем кольце (пространство пользователя). Обе части работают в корневом режиме VMX, а всё остальное, включая хост-окружение, в некорневом режиме VMX. Расширения в пространстве пользователя реализуют функциональность диспетчера виртуальных машин (VMM) и взаимодействуют с ядром гипирвизора через системные вызовы, для которых обеспечивается обратная совместимость. Расширения могут создаваться на любых языках программирования, в том числе поддерживается использование языка Rust.
  • Осуществлён переход на использование собственной библиотеки BSL с поддержкой Rust и C++, которая пришла на смену внешним библиотекам libc++ и newlib. Отказ от внешних зависимостей позволил реализовать в Bareflank родную поддержку компиляции в Windows для упрощения разработки на данной платформе.
  • Добавлена поддержка процессоров AMD. Более того разработка Bareflank теперь ведётся на системе с CPU AMD и уже потом портируется для CPU Intel.
  • В загрузчике добавлена поддержка архитектуры ARMv8, адаптация гипервизора для которой будет завершена в одном из следующих выпусков.
  • Обеспечено соответствие требованиям к разработке критически важных систем, сформулированным организациями AUTOSAR и MISRA.
Release. Ссылка here.