Veröffentlichung von MirageOS 4.0, einer Plattform zum Ausführen von Anwendungen auf einem Hypervisor

Nach anderthalb Jahren Entwicklungszeit wurde die Veröffentlichung des MirageOS 4.0-Projekts veröffentlicht, mit dem Sie Betriebssysteme für eine einzelne Anwendung erstellen können, wobei die Anwendung als autarker „Unikernel“ geliefert wird, der ohne ausgeführt werden kann die Verwendung von Betriebssystemen, einem separaten Betriebssystemkernel und beliebigen Schichten. Die Anwendungsentwicklungssprache ist OCaml. Der Projektcode wird unter einer kostenlosen ISC-Lizenz vertrieben.

Alle systemeigenen Low-Level-Funktionen werden als an die Anwendung angehängte Bibliothek implementiert. Eine Anwendung kann auf jedem Betriebssystem entwickelt und dann in einen speziellen Kernel kompiliert werden (das Unikernel-Konzept), der direkt auf den Hypervisoren Xen, KVM, BHyve und VMM (OpenBSD) auf mobilen Plattformen als Prozess in einem POSIX-System ausgeführt werden kann. kompatiblen Umgebung oder in den Cloud-Umgebungen Amazon Elastic Compute Cloud und Google Compute Engine.

Die generierte Umgebung enthält nichts Überflüssiges und interagiert direkt mit dem Hypervisor ohne Treiber und Systemschichten, wodurch eine deutliche Reduzierung der Gemeinkosten und eine Erhöhung der Sicherheit ermöglicht werden. Die Arbeit mit MirageOS gliedert sich in drei Phasen: Vorbereiten der Konfiguration mit Bestimmen der in der Umgebung verwendeten OPAM-Pakete, Erstellen der Umgebung und Starten der Umgebung. Die Laufzeit zur Bereitstellung der Arbeit auf Hypervisoren basiert auf dem Solo5-Kernel.

Obwohl Anwendungen und Bibliotheken in der Hochsprache OCaml erstellt werden, weisen die resultierenden Umgebungen eine recht gute Leistung und minimale Größe auf (der DNS-Server benötigt beispielsweise nur 200 KB). Auch die Wartung von Umgebungen wird vereinfacht, denn wenn Sie das Programm aktualisieren oder die Konfiguration ändern müssen, reicht es aus, eine neue Umgebung zu erstellen und auszuführen. Mehrere Hundert OCaml-Bibliotheken werden unterstützt, um Netzwerkoperationen durchzuführen (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN usw.), mit Speichern zu arbeiten und eine parallele Datenverarbeitung bereitzustellen.

Wichtigste Verbesserungen:

  • Der Prozess zum Kompilieren von Projekten und Unikernel wurde geändert. Anstelle des bisher verwendeten Build-Systems ocamlbuild werden das Dune-Toolkit und lokale Repositories (Monorepo) verwendet. Um solche Repositorys zu erstellen, wurde ein neues Dienstprogramm opam-monorepo hinzugefügt, das die Trennung der Paketverwaltung vom Erstellen aus dem Quellcode ermöglichte. Das Dienstprogramm opam-monorepo übernimmt die Aufgabe, Sperrdateien für projektbezogene Abhängigkeiten zu erstellen, Abhängigkeitscode herunterzuladen und zu extrahieren und die Umgebung für die Verwendung des Dune-Build-Systems einzurichten. Der Build selbst erfolgt durch das Dune-Toolkit.
  • Es wird ein wiederholbarer Build-Prozess bereitgestellt. Die Verwendung von Sperrdateien ermöglicht die Bindung an Abhängigkeitsversionen und ermöglicht es Ihnen, den Build-Prozess jederzeit mit demselben Code vollständig zu wiederholen.
  • Es wurde ein neuer Cross-Compilation-Prozess implementiert und es ist möglich, für alle unterstützten Zielplattformen aus einer gemeinsamen Build-Umgebung Cross-Compilierung durchzuführen, in der unter anderem Abhängigkeiten und Bibliotheken mit C-Bindungen ohne Hinzufügung kreuzkompiliert werden diese Bindungen an das Hauptpaket. Die Cross-Kompilierung wird mithilfe der vom Dune-Build-System bereitgestellten Arbeitsbereiche organisiert.
  • Unterstützung für neue Zielplattformen wurde hinzugefügt, beispielsweise wurde eine experimentelle Möglichkeit bereitgestellt, eigenständige Anwendungen für die Arbeit auf Raspberry Pi 4-Boards zu erstellen.
  • Es wurde daran gearbeitet, Teile von MirageOS in Ökosysteme im Zusammenhang mit der OCaml-Entwicklung zu integrieren, um die Erstellung von Anwendungen in Form von Unikernel zu vereinfachen. Viele MirageOS-Pakete wurden auf das Dune-Build-System portiert. Das Dienstprogramm opam-monorepo steht zur Installation mit dem opam-Paketmanager zur Verfügung und kann in Projekten verwendet werden, die das Dune-Build-System verwenden. Um Patches zu begleiten, die Probleme beim Erstellen von Abhängigkeiten in Dune lösen, wurden zwei Repositorys dune-universe/opam-overlays und dune-universe/mirage-opam-overlays erstellt, die bei Verwendung des Mirage-CLI-Dienstprogramms standardmäßig aktiviert sind.
  • Vereinfachte Integration von MirageOS mit C- und Rust-Bibliotheken.
  • Es wurde eine neue OCaml-Laufzeit vorgeschlagen, die ohne libc auskommt (libc-free).
  • Bietet die Möglichkeit, den Merlin-Dienst für die Integration in standardmäßige integrierte Entwicklungsumgebungen zu nutzen.

Source: opennet.ru

Kommentar hinzufügen