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

Після півтора року розробки опубліковано випуск проекту 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 для інтеграції з типовими інтегрованими середовищами розробки.

Джерело: opennet.ru

Додати коментар або відгук