Разработчики гипервизора Xen анонсировали (https://blog.xenproject.org/2017/12/05/unikraft-unleashing-t.../) проект Unikraft (https://www.xenproject.org/developers/teams/unikraft.html), в рамках которого развивается технология, позволяющая запускать отдельные приложения поверх гипервизора. Unikraft предоставляет инструменты для упрощения сборки самодостаточных unikernel, в которых исходные тексты приложения компилируются в подобие ядра операционной системы, включающего только компоненты, необходимые для запуска определённой программы. Код проекта распространяется (http://xenbits.xen.org/gitweb/?a=project_list;pf=unikraft) под лицензией BSD.
Избавление от лишних звеньев и поставка только действительно необходимых компонентов операционной системы позволяет снизить потребление ресурсов, уменьшить накладные расходы, сократить время запуска и повысить безопасность, приблизив характеристики решений на базе unikernel к контейнерам, но предоставив высокий уровень изоляции.
В качестве областей применения, в которых востребован данный подход, упоминаются системы на базе микросервисов (https://www.opennet.ru/opennews/art.shtml?num=46598), встраиваемые устройства, интернет вещей (IoT) и автомобильные информационные системы.
В отличие от уже существующих проектов, таких как MirageOS (https://www.opennet.ru/opennews/art.shtml?num=42515), MiniPython (https://github.com/sysml/minipython), ClickOS (https://github.com/sysml/clickos) и HaLVM (https://galois.com/project/halvm/), Unikraft позиционируется как универсальная модульная система, не привязанная к конкретным языкам программирования и позволяющая достаточно быстро организовать сборку в форме unikernel существующих проектов. В состав Unikraft входит сборочный инструментарий и набор настраиваемых библиотек, выступающих в роли сборочных блоков для построения unikernel на основе имеющейся кодовой базы.
Библиотеки разделены на четыре категории:
- Библиотеки поддержки архитектур, включающие элементы для обеспечения работы на различных аппаратных архитектурах (x86_64, ARM32, MIPS);
- Библиотеки поддержки платформ, позволяющие адаптировать unikernel для запуска в различных окружениях - поверх обычного оборудования, Xen и KVM или в форме непривилегированного процесса в Linux;
- Базовые библиотеки (Core), предоставляют такие возможности, как драйверы для сетевого доступа, файловые системы, механизмы распределения памяти, планировщики задач, сетевой стек, runtime (например, интерпретатор Python), инструменты профилирования и отладки;
- Внешние библиотеки - порты существующих библиотек, адаптированные для работы в Unikraft (libc, openssl и т.п.).
Сборочный инструментарий позволяет скомпилировать приложения с набором заданных библиотек в самодостаточный исполняемый файл, который может работать на выбранной целевой системе без каких-либо прослоек (например, поверх Xen, в виде процесса Linux или вместо ОС на обычном оборудовании). Настройка состава unikernel осуществляется по аналогии с применением kconfig для настройки ядра Linux, а также при помощи набора сборочный файлов (Makefile), через которые можно выбрать и настроить необходимые библиотеки. В простейшем случае достаточно запустить "make menuconfig", выбрать библиотеки и параметры итогового образа, затем сохранить настройки, запустить утилиту make и получить исполняемые образы для всех выбранных платформ.
URL: https://www.linuxfoundation.org/press-release/xen-project-in.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=47691