28.11.2020

Выпуск MirageOS 3.9, платформы для запуска приложений поверх гипервизора


Представлен релиз проекта MirageOS 3.9, позволяющего формировать операционные системы одного приложения, в которых приложение поставляется как самодостаточный «unikernel», способный выполняться без применения операционных систем, отдельного ядра ОС и каких-либо прослоек. Для разработки приложений применяется язык OCaml. Код проекта распространяется под свободной лицензией ISC.

Вся низкоуровневая функциональность, свойственная операционной системе, реализована в форме библиотеки, прикрепляемой к приложению. Приложение может быть разработано в любой ОС, после чего компилируется в специализированное ядро (концепция unikernel), которое может запускаться напрямую поверх гипервизоров Xen, KVM, BHyve и VMM (OpenBSD), поверх мобильных платформ, в форме процесса в POSIX-совместимом окружении или в облачных окружениях Amazon Elastic Compute Cloud и Google Compute Engine.

Сгенерированное окружение не содержит ничего лишнего и взаимодействует непосредственно с гипервизором без драйверов и системных прослоек, что позволяет добиться существенного снижения накладных расходов и повышения безопасности. Работа с MirageOS сводится к трём стадиям: подготовка конфигурации с определением используемых в окружении OPAM-пакетов, сборка окружения и запуск окружения. Runtime для обеспечения работы поверх гипервизоров построен на базе ядра Solo5.

Несмотря на то, что приложения и библиотеки формируются на высокоуровневом языке OCaml, итоговые окружения демонстрируют достаточно неплохую производительность и минимальный размер (например, DNS-сервер занимает всего 200 Кб). Упрощается и сопровождение окружений, так как при необходимости обновления программы или изменения конфигурации, достаточно создать и запустить новое окружение. Поддерживается несколько десятков библиотек на языке OCaml для выполнения сетевых операций (DNS, SSH, OpenFlow, HTTP, XMPP и т.п.), работы с хранилищами и обеспечения параллельной обработки данных.

Ключевые улучшения:

  • Бэкенд для гипервизора Xen переписан с нуля и теперь основан на инструментарии Solo5 (sandbox-окружение для выполения unikernel). Переработка позволила обеспечить работу MirageOS unikernel в режиме PVHv2, который комбинирует элементы режимов паравиртуализации (PV) для ввода/вывода, обработки прерываний, организации загрузки и взаимодействия с оборудованием, с применением полной виртуализации (HVM) для ограничения привилегированных инструкций, изоляции системных вызовов и виртуализации таблиц страниц памяти. Также обеспечена совместимость с QubesOS 4.0.
  • Прекращена поддержка старого runtime для работы поверх Xen, основанного на урезанном ядре Mini-OS. Все не-UNIX бэкенды теперь используют унифицированный OCaml runtime на основе ocaml-freestanding.
  • Настройки OCaml runtime, задаваемые через переменную окружения OCAMLRUNPARAM, теперь доступны в форме загрузочных параметров unikernel.
  • В MirageOS unikernel для Xen включены современные механизмы защиты, такие как защита стека SSP для кода на языке Си, W^X (Write XOR Execute) и применение канареечных меток в куче malloc.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53977

Добавить комментарий