Выпуск libOS, unikernel на языке Rust для запуска приложений поверх гипервизора
8 июня 2018 года
Представлен первый экспериментальный выпуск проекта libOS (HermitCore), развивающего специализированное ядро (unikernel), предоставляющее runtime для сборки самодостаточных приложений, способных работать без дополнительных прослоек поверх гипервизора. При сборке приложение связывается с библиотекой, которая самостоятельно реализует всю необходимую функциональность, не привязываясь к ядру ОС и системным библиотекам. Код проекта распространяется под лицензией BSD.
Изначально проект начал развиваться на языке Си, но затем было решено переписать ядро на языке Rust. Ожидается, что использование Rust позволит повысить безопасность работы с памятью, упростить сопровождение кодовой базы и сделать ядро более расширяемым. Использование языка Rust также отличает libOS от других реализаций unikernel (например, MirageOS, MiniPython, ClickOS, McKernel, HaLVM, IncludeOS, OSv и Xen Unikraft).
В настоящее время основной код уже переписан, но реализация на Rust ещё немного отстаёт по функциональности от версии на языке Си. IP-стек и гипервизор на базе KVM API (uhyve) пока остаются на языке Си. Не входящие в ядро сопутствующие компоненты для поддержки языков программирования продолжают развиваться на языках C, C++, Go и Fortran.
Проектом также развивается вспомогательная прослойка, названная proxy, которая позволяет запускать libOS-приложения в виртуальной машине или поверх оборудования x86_64 из штатного окружения Linux, по аналогии с запуском традиционных Linux-программ. Proxy позволяет выбрать тип виртуальной машины (поддерживаются KVM и QEMU), размер выделяемой памяти и число vCPU, а также настроить параметры сетевого доступа. Для организации сетевого взаимодействия на стороне хоста требуется настроить tap-интерфейс.
В форме unikernel могут быть собраны приложения на языках C/C++, Fortran и Go, поддерживаются библиотеки Pthreads, OpenMP и iRCCE. Для кросс-компиляции приложений используется GCC. Работа протестирована в дистрибутиве Ubuntu 18.04, для которого подготовлены (Архивная копия от 1 мая 2021 на Wayback Machine) готовые пакеты для сборки приложений в форме unikernel. Для остальных систем предложен образ для Docker ("docker pull rwthos/hermitcore-rs").
Для установки в Ubuntu 18.04 можно выполнить:
$ echo "deb [trusted=yes] https://dl.bintray.com/hermitcore/ubuntu bionic main" | sudo tee -a /etc/apt/sources.list $ sudo apt-get -qq update $ sudo apt-get install binutils-hermit newlib-hermit pte-hermit-rs gcc-hermit libhermit-rs
Далее можно собрать и запустить набор тестов stream при помощи QEMU или KVM:
HERMIT_ISLE=qemu HERMIT_KVM=0 /opt/hermit/bin/proxy /opt/hermit/x86_64-hermit/extra/benchmarks/stream HERMIT_ISLE=uhyve /opt/hermit/bin/proxy /opt/hermit/x86_64-hermit/extra/benchmarks/stream
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.