The OpenNET Project / Index page

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

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

27.10.2020 22:45

Представлен релиз проекта 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.


  1. Главная ссылка к новости (https://mirage.io/blog/announc...)
  2. OpenNews: Выпуск MirageOS 3.6, платформы для запуска приложений поверх гипервизора
  3. OpenNews: Выпуск libOS, unikernel на языке Rust для запуска приложений поверх гипервизора
  4. OpenNews: Проект Xen представил Unikraft для выполнения приложений поверх гипервизора
  5. OpenNews: Docker представил Moby и LinuxKit для построения произвольных систем контейнерной изоляции
  6. OpenNews: Docker поглотил Unikernel, технологию выполнения приложений поверх гипервизора
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/53977-mirageos
Ключевые слова: mirageos, unikernel, ocaml, solo5
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (22) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Вархамер (?), 22:51, 27/10/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –4 +/
     

     ....ответы скрыты (2)

  • 1.2, uis (ok), 23:06, 27/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Интересная задумка...
     
  • 1.3, Аноним (3), 23:15, 27/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Doker killer. Мне нравится.
     
     
  • 2.15, Аноним (15), 08:21, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Научись хотя бы писать слово docker.
     

  • 1.5, Аноним (5), 23:58, 27/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    еще бы понять что такое гипер визор и зачем поверх него что-то запускать.
    греч. hyper - над, сверх
    англ. visor — козырёк

     
     
  • 2.12, Аноним (12), 02:50, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +17 +/
    еще бы понять как вообще сюда попал
     
  • 2.13, Тьма (?), 06:20, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Суть этой системы - минимализм, в большинстве своем приложения для облака - набор мелких задач без gui. Для выполнения кода не требуется полной поддержки "десктопных"-os, но требуется "быстрая" перезагрузка и восстановление ресурсов, что и обеспечивается "тонкой" виртуализацией, все ресурсы прилочению-os выдаются менеджером виртуальных ресурсов, а после перезагрузки, не происходит запуска всей ос, а только приложения-os, либо, при глубокой: гипервизора и приложений-os,... ничего лишнего и ничто не используемое не забивает своп.
     
  • 2.18, Аноним (18), 09:15, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по твоим заявлениям - тебе не нужно, проходи дальше
     

  • 1.6, Аноним (6), 00:13, 28/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Это типа супер жирный электрон??
     
     
  • 2.10, topin89 (ok), 01:11, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > итоговые окружения демонстрируют достаточно неплохую производительность и минимальный размер (например, DNS-сервер занимает всего 200 Кб)

    Судя по всему, нет.

    Судя о описанию, это как если бы из ядра убрали всё, кроме нужного для запуска в гипервизоре и запускали бы сразу нужную софтину вместо SysV/systemd/openbox

     
  • 2.20, Аноним (20), 10:38, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для начала поинтересуйтесь, чем различаются JS и OCaml.
     

  • 1.7, Lex (??), 00:34, 28/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Так на реальную железку на каком-нить арме удастся поставить то скомпиленное приложение ?
     
     
  • 2.21, Аноним (20), 10:40, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если компилятор OCaml способен генерить код для Cortex-M.
     
     
  • 3.23, Lex (??), 09:08, 29/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Если компилятор OCaml способен генерить код для Cortex-M.

    Так я и не в курсе что он способен, а что - нет, потому и спрашиваю( собсно, и в тексте ни словами о каком «железе» кроме гипервизоров ).

    С реальными железками ещё куча проблем и нюансов появляется вроде той же работы с прерываниями и проч

     

  • 1.8, Ordu (ok), 00:46, 28/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А кто-нибудь в курсе, как оно с файловой системой, например, работает? С фс ведь хочется иметь конкурентный rw-доступ, а для этого неплохо было бы все запросы к фс прогонять через общий "процесс" который сможет обеспечить атомарность операций и неплохо было бы ещё внутреннее состояние хранить с целью повышения производительности.

    Такое подключаемой библиотекой не очень делается, надо как-то интереснее.

     
     
  • 2.11, Аноним (11), 01:35, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    фс - эталонное ненужно. ищите превопричину, ПО вам тоже не нужно
     
  • 2.16, Аноним (15), 08:25, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > который сможет обеспечить атомарность операций и неплохо было бы ещё внутреннее состояние хранить

    Тут ты уже ОС изобретаешь. Нельзя об этом говорить, неконцептуально!

     
  • 2.17, n00by (ok), 09:12, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > А кто-нибудь в курсе, как оно с файловой системой, например, работает?

    С ФС не в курсе, а со "стандартными файлами" как-то так.



    static size_t sn_write(FILE *f, const char *s, size_t l)
    {
    size_t k = f->wend - f->wpos;
    if (k > l) k = l;
    memcpy(f->wpos, s, k);
    f->wpos += k;
    /* pretend to succeed, but discard extra data */
    return l;
    }


    https://github.com/mirage/ocaml-freestanding/blob/master/nolibc/vsnprintf.c#L7




    /*
    * Standard output and error "streams".
    */
    static size_t console_write(FILE *f __attribute__((unused)), const char *s,
            size_t l)
    {
        solo5_console_write(s, l);
        return l;
    }


    https://github.com/mirage/ocaml-freestanding/blob/master/nolibc/sysdeps_solo5.

    Это фрагменты libnolibc.a: libc interfaces required by OCaml runtime.

    Зато нашёл поддержку FAT https://github.com/mirage/mirage/blob/master/lib/mirage/mirage_impl_fs.ml
    и блочных устройств https://github.com/mirage/mirage/blob/master/lib/mirage/mirage_impl_block.ml

    В общем, н̶и̶к̶а̶к присоединяюсь к вопросу.

     

  • 1.9, Аноним (6), 00:47, 28/10/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Каждому приложению -- отдельное устройство! Пора положить конец коммунальным квартирам^W мультизадачности!
     
     
  • 2.14, flkghdfgklh (?), 07:38, 28/10/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В каком месте ты увидел «отдельное устройство», если оно предлагает запускать поверх гипервизора приложения, то есть рассчитано на запуск множества приложений на одном устройстве и имеет целью экономию ресурсов.
     

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



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

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