Utgivelse av MirageOS 4.0, en plattform for å kjøre applikasjoner på toppen av hypervisoren

Etter halvannet år med utvikling har MirageOS 4.0-prosjektet blitt utgitt, som tillater opprettelse av operativsystemer for én applikasjon, der applikasjonen leveres som en selvstendig "unikernel", som er i stand til å kjøre uten bruk av drift systemer, en separat OS-kjerne og eventuelle lag. Ocaml-språket brukes til å utvikle applikasjoner. Prosjektkoden distribueres under den gratis ISC-lisensen.

All lavnivåfunksjonalitet som ligger i operativsystemet, implementeres i form av et bibliotek som er knyttet til applikasjonen. Applikasjonen kan utvikles på et hvilket som helst operativsystem, hvoretter den kompileres til en spesialisert kjerne (unikernel-konsept), som kan kjøres direkte på toppen av Xen, KVM, BHyve og VMM (OpenBSD) hypervisorer, på toppen av mobile plattformer, i form av en prosess i et POSIX-kompatibelt miljø eller i skymiljøer Amazon Elastic Compute Cloud og Google Compute Engine.

Det genererte miljøet inneholder ikke noe overflødig og samhandler direkte med hypervisoren uten drivere eller systemlag, noe som gir en betydelig reduksjon i overheadkostnader og økt sikkerhet. Arbeid med MirageOS kommer ned til tre stadier: forberede konfigurasjonen med å definere OPAM-pakkene som brukes i miljøet, sette sammen miljøet og lansere miljøet. For å sikre drift på toppen av hypervisorer er Runtime bygget på basis av Solo5-kjernen.

Til tross for det faktum at applikasjoner og biblioteker er opprettet i OCaml-språket på høyt nivå, viser de resulterende miljøene ganske god ytelse og minimal størrelse (for eksempel tar DNS-serveren opp bare 200 KB). Vedlikehold av miljøer er også forenklet, siden hvis det er nødvendig å oppdatere programmet eller endre konfigurasjonen, er det nok å opprette og starte et nytt miljø. Flere hundre biblioteker på OCaml-språket støttes for å utføre nettverksoperasjoner (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, etc.), arbeide med lagring og sørge for parallell databehandling.

Viktige forbedringer:

  • Prosessen med å sammenstille prosjekter og unikernel er endret. I stedet for det tidligere brukte ocamlbuild-monteringssystemet, brukes dune-verktøysettet og lokale depoter (monorepo). For å lage slike repositories er det lagt til et nytt opam-monorepo-verktøy, som gjør det mulig å skille pakkehåndtering fra bygging fra kildekode. Opam-monorepo-verktøyet fungerer som å lage låsefiler for prosjektrelaterte avhengigheter, laste og trekke ut avhengighetskode og sette opp miljøet for å bruke sanddynebyggesystemet. Selve monteringen utføres av duneverktøysettet.
  • En repeterbar byggeprosess er gitt. Bruk av låsefiler gir en kobling til avhengighetsversjoner og lar deg gjenta byggeprosessen fullstendig med samme kode når som helst.
  • En ny krysskompileringsprosess er implementert og muligheten til å krysskompilere for alle støttede målplattformer fra ett felles byggemiljø er gitt, som også krysskompilerer avhengigheter og biblioteker som har C-bindinger, uten å måtte legge til disse bindingene til hovedpakken. Krysskompilering er organisert ved å bruke arbeidsområder levert av sanddynebyggesystemet.
  • Støtte for nye målplattformer er lagt til, for eksempel er det gitt en eksperimentell mulighet til å bygge selvstendige applikasjoner for kjøring på Raspberry Pi 4-kort.
  • Det er jobbet med å integrere deler av MirageOS i økosystemer knyttet til utvikling i OCaml-språket for å forenkle sammenstillingen av applikasjoner i form av unikernel. Mange MirageOS-pakker har blitt overført til dune-byggesystemet. Opam-monorepo-verktøyet er tilgjengelig for installasjon ved hjelp av opam-pakkebehandlingen og kan brukes i prosjekter som bruker dune-byggesystemet. For å vedlikeholde patcher som løser problemer med bygningsavhengigheter i sanddyner, er det opprettet to depoter: dune-universe/opam-overlays og dune-universe/mirage-opam-overlays, som er aktivert som standard når du bruker mirage CLI-verktøyet.
  • MirageOS-integrasjon med C- og Rust-biblioteker er forenklet.
  • En ny OKaml-kjøretid har blitt foreslått som lar deg klare deg uten libc (libc-free).
  • Det er mulig å bruke Merlin-tjenesten for integrasjon med standard integrerte utviklingsmiljøer.

Kilde: opennet.ru

Legg til en kommentar