Uitgave van MirageOS 4.0, een platform voor het uitvoeren van applicaties bovenop de hypervisor

Na anderhalf jaar ontwikkeling is de release van het MirageOS 4.0-project gepubliceerd, waarmee besturingssystemen voor één applicatie kunnen worden gemaakt, waarbij de applicatie wordt geleverd als een op zichzelf staande "unikernel", die kan draaien zonder het gebruik van besturingssystemen, een aparte OS-kernel en eventuele lagen. De OCaml-taal wordt gebruikt om applicaties te ontwikkelen. De projectcode wordt gedistribueerd onder de gratis ISC-licentie.

Alle functionaliteit op laag niveau die inherent is aan het besturingssysteem, wordt geïmplementeerd in de vorm van een bibliotheek die aan de applicatie is gekoppeld. De applicatie kan op elk besturingssysteem worden ontwikkeld, waarna deze wordt gecompileerd tot een gespecialiseerde kernel (unikernel-concept), die direct op Xen-, KVM-, BHyve- en VMM (OpenBSD) hypervisors kan draaien, bovenop mobiele platforms, in de vorm van een proces in een POSIX-compatibele omgeving of in cloudomgevingen Amazon Elastic Compute Cloud en Google Compute Engine.

De gegenereerde omgeving bevat niets overbodigs en communiceert rechtstreeks met de hypervisor, zonder drivers of systeemlagen, wat een aanzienlijke reductie van de overheadkosten en een verhoogde veiligheid mogelijk maakt. Het werken met MirageOS komt neer op drie fasen: het voorbereiden van de configuratie met het definiëren van de OPAM-pakketten die in de omgeving worden gebruikt, het samenstellen van de omgeving en het lanceren van de omgeving. Om de werking bovenop hypervisors te garanderen, is Runtime gebouwd op basis van de Solo5-kernel.

Ondanks het feit dat applicaties en bibliotheken zijn gemaakt in de OCaml-taal op hoog niveau, vertonen de resulterende omgevingen redelijk goede prestaties en minimale grootte (de DNS-server neemt bijvoorbeeld slechts 200 KB in beslag). Het onderhoud van omgevingen wordt ook vereenvoudigd, omdat als het nodig is om het programma bij te werken of de configuratie te wijzigen, het voldoende is om een ​​nieuwe omgeving te creëren en te starten. Enkele honderden bibliotheken in de OCaml-taal worden ondersteund voor het uitvoeren van netwerkbewerkingen (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, enz.), het werken met opslag en het bieden van parallelle gegevensverwerking.

Belangrijkste verbeteringen:

  • Het proces van het samenstellen van projecten en unikernel is veranderd. In plaats van het eerder gebruikte ocamlbuild-assemblagesysteem worden de dune-toolkit en lokale repositories (monorepo) gebruikt. Om dergelijke repository's te creëren is een nieuw hulpprogramma, opam-monorepo, toegevoegd, dat het mogelijk maakt om pakketbeheer te scheiden van het bouwen vanuit de broncode. Het opam-monorepo-hulpprogramma werkt wel, zoals het maken van lock-bestanden voor projectgerelateerde afhankelijkheden, het laden en extraheren van afhankelijkheidscode, en het instellen van de omgeving om het dune-build-systeem te gebruiken. De daadwerkelijke montage wordt uitgevoerd door de dune toolkit.
  • Er is voorzien in een herhaalbaar bouwproces. Het gebruik van vergrendelingsbestanden biedt een koppeling naar afhankelijkheidsversies en stelt u in staat het bouwproces op elk gewenst moment volledig met dezelfde code te herhalen.
  • Er is een nieuw cross-compilatieproces geïmplementeerd en de mogelijkheid om te cross-compileren voor alle ondersteunde doelplatforms vanuit één gemeenschappelijke bouwomgeving wordt geboden, die ook afhankelijkheden en bibliotheken met C-bindingen cross-compileert, zonder de noodzaak om deze bindingen eraan toe te voegen het hoofdpakket. Cross-compilatie wordt georganiseerd met behulp van werkruimten die worden geboden door het dune-build-systeem.
  • Er is ondersteuning voor nieuwe doelplatforms toegevoegd, er is bijvoorbeeld een experimentele mogelijkheid geboden om op zichzelf staande applicaties te bouwen die op Raspberry Pi 4-borden kunnen worden uitgevoerd.
  • Er is gewerkt aan het integreren van delen van MirageOS in ecosystemen die verband houden met de ontwikkeling in de OCaml-taal om de assemblage van applicaties in de vorm van unikernel te vereenvoudigen. Veel MirageOS-pakketten zijn geporteerd naar het dune-build-systeem. Het hulpprogramma opam-monorepo is beschikbaar voor installatie met behulp van de opam-pakketbeheerder en kan worden gebruikt in projecten die het dune-buildsysteem gebruiken. Om patches te onderhouden die problemen met het bouwen van afhankelijkheden in dune oplossen, zijn er twee opslagplaatsen gemaakt: dune-universe/opam-overlays en dune-universe/mirage-opam-overlays, die standaard zijn ingeschakeld bij gebruik van het Mirage CLI-hulpprogramma.
  • MirageOS-integratie met C- en Rust-bibliotheken is vereenvoudigd.
  • Er is een nieuwe OCaml-runtime voorgesteld waarmee u het zonder libc (libc-free) kunt doen.
  • Het is mogelijk om de Merlin-service te gebruiken voor integratie met standaard geïntegreerde ontwikkelomgevingen.

Bron: opennet.ru

Voeg een reactie