Veröffentlichung von MirageOS 4.0, einer Plattform zum Ausführen von Anwendungen über einen Hypervisor

Nach anderthalb Jahren Entwicklung wurde die Version 4.0 des Projekts MirageOS veröffentlicht, die es ermöglicht, Betriebssysteme für eine einzige Anwendung zu erstellen, wobei die Anwendung als autarkes „Unikernel“ bereitgestellt wird, das ohne Betriebssysteme, separate Kernels oder zusätzliche Schichten ausgeführt werden kann. Für die Anwendungsentwicklung wird die Sprache OCaml verwendet. Der Code des Projekts wird unter der ISC-Lizenz veröffentlicht.

Alle low-level Funktionalitäten, die für ein Betriebssystem typisch sind, werden in Form einer Bibliothek realisiert, die an die Anwendung angehängt wird. Die Anwendung kann in jedem Betriebssystem entwickelt werden, bevor sie in einen spezialisierten Kernel (konzeptionelles Unikernel) kompiliert wird, der direkt über Hypervisoren wie Xen, KVM, BHyve und VMM (OpenBSD) oder auf Mobilplattformen sowie als Prozess in einer POSIX-kompatiblen Umgebung oder in Cloud-Umgebungen wie Amazon Elastic Compute Cloud und Google Compute Engine ausgeführt werden kann.

Die generierte Umgebung enthält nichts Überflüssiges und interagiert direkt mit dem Hypervisor ohne Treiber und Systemschichten. Dies führt zu einer erheblichen Reduzierung der Overhead-Kosten und einer Erhöhung der Sicherheit. Die Arbeit mit MirageOS erfolgt in drei Phasen: Vorbereitung der Konfiguration mit der Bestimmung der verwendeten OPAM-Pakete, Erstellung der Umgebung und deren Start. Die Runtime zur Sicherstellung des Betriebs über Hypervisors basiert auf dem Solo5-Kernel.

Obwohl die Anwendungen und Bibliotheken in der Hochsprache OCaml erstellt werden, zeigen die endgültigen Umgebungen eine recht passable Leistung und eine minimalen Größe (zum Beispiel benötigt ein DNS-Server nur 200 KB). Die Wartung der Umgebungen wird ebenfalls vereinfacht, da bei Bedarf zur Aktualisierung des Programms oder zur Änderung der Konfiguration einfach eine neue Umgebung erstellt und gestartet werden kann. Es werden mehrere Hundert Bibliotheken in OCaml unterstützt, um Netzwerkoperationen (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN usw.), die Arbeit mit Speicherlösungen und die Gewährleistung der parallelen Datenverarbeitung durchzuführen.

Wesentliche Verbesserungen:

  • Der Kompilierungsprozess für Projekte und Unikernels wurde überarbeitet. Anstelle des zuvor verwendeten Build-Systems ocamlbuild wird jetzt das Werkzeug dune zusammen mit lokalen Repositories (Monorepo) eingesetzt. Zur Erstellung solcher Repositories wurde ein neues Tool, opam-monorepo, hinzugefügt, das die Verwaltung von Paketen von der Erstellung aus Quelltexten trennt. Das Tool opam-monorepo übernimmt Aufgaben wie das Erstellen von Lock-Dateien für die projektbezogenen Abhängigkeiten, das Herunterladen und Extrahieren von Codes der Abhängigkeiten sowie die Einrichtung der Umgebung für die Verwendung des Build-Systems dune. Die eigentliche Erstellung erfolgt mit dem Werkzeug dune.
  • Ein reproduzierbarer Build-Prozess wurde bereitgestellt. Die Verwendung von Lock-Dateien gewährleistet die Bindung an die Versionen der Abhängigkeiten und ermöglicht es, den gesamten Build-Prozess zu jedem Zeitpunkt mit demselben Code vollständig zu reproduzieren.
  • Ein neuer Prozess zur Cross-Kompilierung wurde implementiert, wodurch die Möglichkeit geschaffen wurde, Cross-Kompilierungen für alle unterstützten Zielplattformen aus einer gemeinsamen Build-Umgebung durchzuführen. Dies umfasst auch die Cross-Kompilierung von Abhängigkeiten und Bibliotheken, die in C gebunden sind, ohne dass diese Bindungen in das Hauptpaket integriert werden müssen. Die Cross-Kompilierung erfolgt mit Hilfe von Arbeitsbereichen, die vom Build-System Dune zur Verfügung gestellt werden.
  • Unterstützung für neue Zielplattformen wurde hinzugefügt, beispielsweise wurde eine experimentelle Möglichkeit zur Erstellung eigenständiger Anwendungen für den Einsatz auf Raspberry Pi 4 bereitgestellt.
  • Die Integration von Teilen von MirageOS in Ökosysteme, die mit der Entwicklung in OCaml in Verbindung stehen, wurde abgeschlossen, um den Aufbau von Anwendungen in Form von Unikernels zu vereinfachen. Viele Pakete von MirageOS wurden für das Build-System Dune portiert. Das Tool opam-monorepo kann über den Paketmanager opam installiert werden und ist in Projekten, die das Build-System Dune verwenden, nutzbar. Zur Verwaltung von Patches, die Probleme beim Bauen von Abhängigkeiten in Dune lösen, wurden zwei Repositories dune-universe/opam-overlays und dune-universe/mirage-opam-overlays erstellt, die standardmäßig beim Einsatz des CLI-Tools Mirage integriert sind.
  • Die Integration von MirageOS mit Bibliotheken in C und Rust wurde vereinfacht.
  • Ein neuer OCaml-Runtime wurde vorgeschlagen, der ohne libc (libc-frei) auskommt.
  • Die Nutzung des Dienstes Merlin für die Integration mit typgebundenen integrierten Entwicklungsumgebungen wurde bereitgestellt.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster