Wydanie MirageOS 4.0, platformy do uruchamiania aplikacji na hypervisorze

Po półtora roku prac opublikowano wersję projektu MirageOS 4.0, który umożliwia tworzenie systemów operacyjnych dla jednej aplikacji, w której aplikacja jest dostarczana jako samodzielny „unikernel”, zdolny do działania bez wykorzystanie systemów operacyjnych, oddzielnego jądra systemu operacyjnego i dowolnych warstw. Do tworzenia aplikacji używany jest język OCaml. Kod projektu jest rozpowszechniany na bezpłatnej licencji ISC.

Cała niskopoziomowa funkcjonalność właściwa systemowi operacyjnemu jest zaimplementowana w formie biblioteki dołączonej do aplikacji. Aplikację można opracować na dowolnym systemie operacyjnym, po czym jest ona kompilowana do specjalizowanego jądra (koncepcja unikernel), które może działać bezpośrednio na hiperwizorach Xen, KVM, BHyve i VMM (OpenBSD), na platformach mobilnych, w środowisku formie procesu w środowisku zgodnym z POSIX lub w środowiskach chmurowych Amazon Elastic Compute Cloud i Google Compute Engine.

Wygenerowane środowisko nie zawiera niczego zbędnego i współpracuje bezpośrednio z hypervisorem bez sterowników i warstw systemowych, co pozwala na znaczną redukcję kosztów ogólnych i zwiększenie bezpieczeństwa. Praca z MirageOS sprowadza się do trzech etapów: przygotowania konfiguracji wraz z zdefiniowaniem pakietów OPAM używanych w środowisku, złożenia środowiska i uruchomienia środowiska. Aby zapewnić działanie na hypervisorach, Runtime zbudowano w oparciu o jądro Solo5.

Pomimo tego, że aplikacje i biblioteki tworzone są w języku wysokiego poziomu OCaml, powstałe środowiska charakteryzują się dość dobrą wydajnością i minimalnym rozmiarem (przykładowo serwer DNS zajmuje zaledwie 200 KB). Uproszczono także obsługę środowisk, gdyż w przypadku konieczności aktualizacji programu lub zmiany konfiguracji wystarczy stworzyć i uruchomić nowe środowisko. Obsługiwanych jest kilkaset bibliotek w języku OCaml do wykonywania operacji sieciowych (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN itp.), pracy z pamięcią masową i zapewnienia równoległego przetwarzania danych.

Kluczowe ulepszenia:

  • Zmieniono proces kompilacji projektów i unikernela. Zamiast używanego wcześniej systemu montażu ocamlbuild, zastosowano zestaw narzędzi Dune i lokalne repozytoria (monorepo). Do tworzenia takich repozytoriów dodano nowe narzędzie opam-monorepo, które umożliwia oddzielenie zarządzania pakietami od budowania z kodu źródłowego. Narzędzie opam-monorepo działa, na przykład tworzy pliki blokujące dla zależności związanych z projektem, ładuje i wyodrębnia kod zależności oraz konfiguruje środowisko do korzystania z systemu kompilacji wydm. Właściwy montaż odbywa się za pomocą zestawu narzędzi Dune.
  • Zapewniony jest powtarzalny proces kompilacji. Korzystanie z plików blokady zapewnia łącze do wersji zależności i pozwala w dowolnym momencie całkowicie powtórzyć proces kompilacji z tym samym kodem.
  • Zaimplementowano nowy proces kompilacji krzyżowej i zapewniono możliwość kompilacji krzyżowej dla wszystkich obsługiwanych platform docelowych z jednego wspólnego środowiska kompilacji, które również kompiluje krzyżowo zależności i biblioteki z powiązaniami C, bez konieczności dodawania tych powiązań do główny pakiet. Kompilacja krzyżowa jest organizowana przy użyciu obszarów roboczych udostępnianych przez system kompilacji wydm.
  • Dodano obsługę nowych platform docelowych, np. udostępniono eksperymentalną możliwość budowania samodzielnych aplikacji do pracy na płytach Raspberry Pi 4.
  • Wykonano prace nad integracją części MirageOS z ekosystemami związanymi z rozwojem w języku OCaml, aby uprościć montaż aplikacji w postaci unikernela. Wiele pakietów MirageOS zostało przeniesionych do systemu kompilacji wydm. Narzędzie opam-monorepo można zainstalować za pomocą menedżera pakietów opam i można go używać w projektach korzystających z systemu kompilacji dune. Aby zachować łatki rozwiązujące problemy z budowaniem zależności w dune, utworzono dwa repozytoria: dune-universe/opam-overlays i dune-universe/mirage-opam-overlays, które są domyślnie włączone podczas korzystania z narzędzia mirage CLI.
  • Integracja MirageOS z bibliotekami C i Rust została uproszczona.
  • Zaproponowano nowe środowisko wykonawcze OCaml, które pozwala obejść się bez biblioteki libc (bez libc).
  • Istnieje możliwość wykorzystania usługi Merlin do integracji ze standardowymi zintegrowanymi środowiskami programistycznymi.

Źródło: opennet.ru

Dodaj komentarz