The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

30.03.2022 11:05

После полутора лет разработки опубликован выпуск проекта MirageOS 4.0, позволяющего формировать операционные системы одного приложения, в которых приложение поставляется как самодостаточный "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, Matrix, OpenVPN и т.п.), работы с хранилищами и обеспечения параллельной обработки данных.

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

  • Изменён процесс компиляции проектов и unikernel. Вместо ранее применявшейся сборочной системы ocamlbuild задействован инструментарий dune и локальные репозитории (monorepo). Для формирования подобных репозиториев добавлена новая утилита opam-monorepo, позволившая разделить управление пакетами от сборки из исходных текстов. Утилита opam-monorepo выполняет такую работу, как создание lock-файлов для связанных с проектом зависимостей, загрузка и извлечения кода зависимостей и настройка окружения для применения сборочной системы dune. Непосредственно сборка выполняется инструментарием dune.
  • Предоставлен повторяемый процесс сборки. Использование lock-файлов обеспечивает привязку к версиям зависимостей и позволяет в любой момент полностью повторить процесс сборки с тем же кодом.
  • Реализован новый процесс кросс-компиляции и обеспечена возможность кросс-компиляции для всех поддерживаемых целевых платформ из одного общего сборочного окружения, в котором в том числе выполняется кросс-компиляция зависимостей и библиотек, имеющих привязки на языке Си, без необходимости добавления этих привязок в основной пакет. Кросс-компиляция организована с использованием рабочих пространств, предоставляемых сборочной системой dune.
  • Добавлена поддержка новых целевых платформ, например, предоставлена экспериментальная возможность сборки самодостаточных приложений для работы на платах Raspberry Pi 4.
  • Проведена работа по интеграции частей MirageOS в экосистемы, связанные с разработкой на языке OCaml, для упрощения сборки приложений в форме unikernel. Многие пакеты MirageOS портированы для сборочной системы dune. Утилита opam-monorepo доступна для установки при помощи пакетного менеджера opam и может использовать в проектах, применяющих сборочную систему dune. Для сопровождения патчей, решающих проблемы со сборкой зависимостей в dune, создано два репозитория dune-universe/opam-overlays и dune-universe/mirage-opam-overlays, которые включены по умолчанию при использовании CLI-утилиты mirage.
  • Упрощена интеграция MirageOS с библиотеками на языках C и Rust.
  • Предложен новый OCaml runtime, позволяющий обойтись без libc (libc-free).
  • Предоставлена возможность использования сервиса Merlin для интеграции с типовыми интегрированными средами разработки.


  1. Главная ссылка к новости (https://mirage.io/blog/announc...)
  2. OpenNews: Выпуск MirageOS 3.9, платформы для запуска приложений поверх гипервизора
  3. OpenNews: Docker поглотил Unikernel, технологию выполнения приложений поверх гипервизора
  4. OpenNews: Проект Xen представил Unikraft для выполнения приложений поверх гипервизора
  5. OpenNews: В рамках проекта HermiTux развивается unikernel, бинарно совместимый с Linux
  6. OpenNews: В рамках проекта IncludeOS развивается ядро для обособленного запуска C++-приложений
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56938-mirage
Ключевые слова: mirage, unikernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (22) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:48, 30/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Ocaml какой-то, unikernel - глупость какая-то, изобрели ещё один псевдо-докер?
     
     
  • 2.4, Аноним (4), 12:21, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • +14 +/
    ну пилят ребята и пилят ) вам то чего или ваше хобби писать про "ненужно" ?)
     
  • 2.16, Аноним (-), 20:36, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Докер менее безопасен в сравнении с таким подходом, в нем меньше изоляции. Тут же каждое приложение может сделать по своей файловой системе поверх простого интерфейса гипервизора.
     
     
  • 3.20, Старшина (?), 22:43, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а если у меня куча микроконтролеров через какой-то интерфейс подключено? это может в этом смысле применяться?
     
     
  • 4.22, Брат Анон (ok), 07:53, 31/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В куче микроконтроллеров -- у каждого микроконтроллера нет кучи памяти.
     
  • 2.24, Аноним (24), 09:37, 31/03/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слава не мальчика, но анонимного эксперта
     

  • 1.2, Бывалый смузихлёб (?), 11:55, 30/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >  и минимальный размер (например, DNS-сервер занимает всего 200 КБ)

    Интересно, сколько бы занимал бинарник хеллоуворда на расте, содержащий под капотом всё необходимое для работы барахло( хотя бы просто под ОС, но без необходимости ставить растовые библиотеки в систему )

     
     
  • 2.3, Аноним (3), 12:05, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    а что, экономишь пространство на дискете? ну купи еще одну дискету, будут у тебя 2.88 Мб.
     
  • 2.9, НяшМяш (ok), 15:01, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    https://github.com/mirage/ocaml-dns/blob/main/src/dune

    Интересно, сколько бы сервер весил при статической линковке всего этого барахла? Уж явно не 200КБ. И это только библиотека DNS, а не сам сервер. В лучших традициях старпёров всё в одном файле на 4.5к строк.

     
     
  • 3.13, Бывалый смузихлёб (?), 16:24, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > в которых приложение поставляется как самодостаточный "unikernel",
    > способный выполняться без применения операционных систем, отдельного ядра ОС и каких-либо прослоек
    > итоговые окружения демонстрируют достаточно неплохую производительность
    > и минимальный размер (например, DNS-сервер занимает всего 200 КБ)

    То ли в новости что-то не так, то ли - ?

    По твоей ссылке лежит файл весом в ~200 байт. Причём он вообще ?

     

  • 1.5, Аноним (5), 12:33, 30/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Почему OCaml не взлетел?
     
     
  • 2.7, freehck (ok), 12:55, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > Почему OCaml не взлетел?

    Взлетел. Просто он сначала взлетел в математических пруверах типа Coq. Где-то в начале нулевых народ начал думать "а что это мы на нём и обычный софт не пишем" -- и на нём накидали MLDonkey, чтобы просто показать, что это возможно. Он вроде кстати до сих пор жив. Затем и Jane Street подключились и во многом на нём построили свой бизнес.

    Собственно Jane Street и ответственна за то, что язык набрал обороты. В институте INRIA (оттуда OCaml и Coq родом, привет Leroy Xavier) очень неохотно принимали изменения в стандартные библиотеки. В Jane Street просто написали свои, более человеческие, поверх исходных. Взрастили множество хороших специалистов, выпустили серию книг (привет Yaron Minsky), участвовали в развитии opam и dune.

    OCaml -- это, скажем так, человеческое приглашение разработчиков в строго типизированное функциональное программирование. Безусловно, функциональщики массовым явлением никогда не будут из-за высокого порога вхождения. Но в среде функциональщиков OCaml прочно стоит на ногах.

     
     
  • 3.18, OO (?), 20:51, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> в среде функциональщиков...

    2 человека тоже "среда" уже.
    как то плохо у них со средой, вакансии всяких функциональщиков годами не могут закрыть.

     
  • 2.12, Ан (??), 15:50, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Многопоточность не очень. Это будет исправлено в пятом окамле.
     

  • 1.6, freehck (ok), 12:38, 30/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    Большая веха. Я в предверии этого релиза вот уже некоторое время как снова смотрю на OCaml спустя несколько лет перерыва. Экосистема сильно повзрослела за эти годы.

    Dune выглядит действительно мощной системой. Те, кто ранее пользовался ocamlbuild -- поймут. Теперь сборка стала значительно проще: просто указываешь, что собирать, библиотеки, которые надо прилинковать, и собственно всё.

    Да и библиотек стало значительно больше. Я давеча к своему сервису добавлял вывод метрик в Prometheus -- двадцать строчек на конфигурирование сбора метрик, плюс одна на эндпоинт в Cohttp. Раньше было сложнее. Молчу уже о том, что клиентская часть Cohttp без всяких приседаний теперь работает с SSL. Очень радует. Lwt_pool порадовал. Я с его помощью пул дочерних процессов организовывал. Пара строчек и готово.

    Ну и библиотеки заматерели. Раньше для подобного функционала нужно было весьма низкоуровневые вещи задействовать, сейчас же высокоуровневые библиотеки человеческим лицом всю экосистему поворачивают, за что большое спасибо Ocsigen-овскому Lwt и JaneStreet-овским Base/Core.

    Тем, кто не в курсе, почему это круто (и по-видимому что такое OCaml), объясню просто: строгая типизация, гарантия отсутствия ошибок типа, на 99.9% чисто функционально, не лениво по умолчанию.

     
     
  • 2.8, gavr (ok), 14:45, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А что скажешь про ReasonML который альтернативный фронтенд компилятора окамл с более си-подобным синтаксисом
     
  • 2.10, Аноним (10), 15:29, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А о SPARK что можно сказать? С верблюда на него переходят?
     

  • 1.11, Ан (??), 15:49, 30/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Очень недооценная ОС.
     
     
  • 2.15, Аноним (10), 17:10, 30/03/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ее очень ценят. Особенно по верху Muen.

    https://www.nitrokey.com/products/nethsm

    ЗЫ: а реально крутые OS уже под санкциями https://muen.sk

     

  • 1.23, Аноним12345 (?), 08:29, 31/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Неведома зверушка
     
  • 1.25, yurikoles (ok), 16:38, 31/03/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поясните танкисту: оно позволяет запускать только код на OCaml?
     
     
  • 2.26, freehck (ok), 13:10, 01/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Поясните танкисту: оно позволяет запускать только код на OCaml?

    Если не брать в расчёт CFFI, то да, только на OCaml.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру