Sortie de MirageOS 4.0, une plateforme pour exécuter des applications sur un hyperviseur

Après un an et demi de développement, la version du projet MirageOS 4.0 a été publiée, qui permet la création de systèmes d'exploitation pour une application, dans lesquels l'application est livrée sous la forme d'un « unikernel » autonome, capable de fonctionner sans l'utilisation de systèmes d'exploitation, d'un noyau de système d'exploitation distinct et de toutes les couches. Le langage OCaml est utilisé pour développer des applications. Le code du projet est distribué sous la licence ISC gratuite.

Toutes les fonctionnalités de bas niveau inhérentes au système d'exploitation sont implémentées sous la forme d'une bibliothèque attachée à l'application. L'application peut être développée sur n'importe quel système d'exploitation, après quoi elle est compilée dans un noyau spécialisé (concept unikernel), qui peut s'exécuter directement sur les hyperviseurs Xen, KVM, BHyve et VMM (OpenBSD), au-dessus des plates-formes mobiles, dans le sous forme de processus dans un environnement compatible POSIX ou dans des environnements cloud Amazon Elastic Compute Cloud et Google Compute Engine.

L'environnement généré ne contient rien de superflu et interagit directement avec l'hyperviseur sans pilotes ni couches système, ce qui permet une réduction significative des frais généraux et une sécurité accrue. Travailler avec MirageOS se résume à trois étapes : préparer la configuration avec la définition des packages OPAM utilisés dans l'environnement, assembler l'environnement et lancer l'environnement. Pour garantir un fonctionnement au-dessus des hyperviseurs, le Runtime est construit sur la base du noyau Solo5.

Malgré le fait que les applications et les bibliothèques soient créées dans le langage OCaml de haut niveau, les environnements résultants démontrent d'assez bonnes performances et une taille minimale (par exemple, le serveur DNS ne prend que 200 Ko). La maintenance des environnements est également simplifiée, puisque s'il est nécessaire de mettre à jour le programme ou de modifier la configuration, il suffit de créer et de lancer un nouvel environnement. Plusieurs centaines de bibliothèques du langage OCaml sont prises en charge pour effectuer des opérations réseau (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, etc.), travailler avec le stockage et assurer le traitement parallèle des données.

Principales améliorations :

  • Le processus de compilation des projets et de l'unikernel a été modifié. Au lieu du système d'assemblage ocamlbuild précédemment utilisé, la boîte à outils dune et les référentiels locaux (monorepo) sont utilisés. Pour créer de tels référentiels, un nouvel utilitaire, opam-monorepo, a été ajouté, qui permet de séparer la gestion des packages de la construction à partir du code source. L'utilitaire opam-monorepo fonctionne notamment en créant des fichiers de verrouillage pour les dépendances liées au projet, en chargeant et en extrayant le code de dépendance et en configurant l'environnement pour utiliser le système de construction dune. L'assemblage proprement dit est effectué par la boîte à outils dune.
  • Un processus de construction reproductible est fourni. L'utilisation de fichiers de verrouillage fournit un lien vers les versions de dépendances et vous permet de répéter complètement le processus de construction avec le même code à tout moment.
  • Un nouveau processus de compilation croisée a été implémenté et la possibilité de compiler de manière croisée pour toutes les plates-formes cibles prises en charge à partir d'un environnement de construction commun est fournie, ce qui permet également de compiler de manière croisée les dépendances et les bibliothèques dotées de liaisons C, sans qu'il soit nécessaire d'ajouter ces liaisons à le paquet principal. La compilation croisée est organisée à l'aide d'espaces de travail fournis par le système de construction dune.
  • La prise en charge de nouvelles plates-formes cibles a été ajoutée, par exemple, une capacité expérimentale de création d'applications autonomes pour fonctionner sur les cartes Raspberry Pi 4 a été fournie.
  • Des travaux ont été réalisés pour intégrer des parties de MirageOS dans des écosystèmes liés au développement en langage OCaml afin de simplifier l'assemblage d'applications sous forme d'unikernel. De nombreux packages MirageOS ont été portés sur le système de construction dune. L'utilitaire opam-monorepo est disponible pour l'installation à l'aide du gestionnaire de packages opam et peut être utilisé dans les projets qui utilisent le système de construction dune. Pour maintenir les correctifs qui résolvent les problèmes de création de dépendances dans dune, deux référentiels ont été créés : dune-universe/opam-overlays et dune-universe/mirage-opam-overlays, qui sont activés par défaut lors de l'utilisation de l'utilitaire mirage CLI.
  • L'intégration de MirageOS avec les bibliothèques C et Rust a été simplifiée.
  • Un nouveau runtime OCaml a été proposé qui permet de se passer de libc (libc-free).
  • Il est possible d'utiliser le service Merlin pour l'intégration avec des environnements de développement intégrés standards.

Source: opennet.ru

Ajouter un commentaire