MirageOS 4.0:n julkaisu, alusta sovellusten suorittamiseen hypervisorin päällä

Puolentoista vuoden kehitystyön jälkeen on julkaistu MirageOS 4.0 -projektin julkaisu, joka mahdollistaa käyttöjärjestelmien luomisen yhdelle sovellukselle, jossa sovellus toimitetaan itsenäisenä "unikernelinä", joka pystyy toimimaan ilman käyttöjärjestelmien, erillisen käyttöjärjestelmän ytimen ja mahdollisten kerrosten käyttö. OCaml-kieltä käytetään sovellusten kehittämiseen. Projektikoodia jaetaan ilmaisella ISC-lisenssillä.

Kaikki käyttöjärjestelmälle ominaiset matalan tason toiminnot toteutetaan sovelluksen liitteenä olevan kirjaston muodossa. Sovellus voidaan kehittää millä tahansa käyttöjärjestelmällä, minkä jälkeen se käännetään erikoisytimeksi (unikernel-konsepti), joka voi toimia suoraan Xen-, KVM-, BHyve- ja VMM (OpenBSD) -hypervisorien päällä mobiilialustojen päällä. prosessin muodossa POSIX-yhteensopivassa ympäristössä tai pilviympäristöissä Amazon Elastic Compute Cloud ja Google Compute Engine.

Luotu ympäristö ei sisällä mitään ylimääräistä ja on suoraan vuorovaikutuksessa hypervisorin kanssa ilman ohjaimia tai järjestelmäkerroksia, mikä mahdollistaa huomattavan alennuksen yleiskustannuksissa ja lisää turvallisuutta. Työskentely MirageOS:n kanssa koostuu kolmesta vaiheesta: kokoonpanon valmistelu, jossa määritellään ympäristössä käytettävät OPAM-paketit, ympäristön kokoaminen ja ympäristön käynnistäminen. Toiminnan varmistamiseksi hypervisorien päällä Runtime on rakennettu Solo5-ytimen pohjalle.

Huolimatta siitä, että sovellukset ja kirjastot luodaan korkean tason OCaml-kielellä, tuloksena olevat ympäristöt osoittavat melko hyvää suorituskykyä ja minimaalista kokoa (esimerkiksi DNS-palvelin vie vain 200 kt). Myös ympäristöjen ylläpito yksinkertaistuu, koska jos on tarpeen päivittää ohjelmaa tai muuttaa kokoonpanoa, riittää uuden ympäristön luominen ja käynnistäminen. Useita satoja OCaml-kielisiä kirjastoja tuetaan verkkotoimintojen suorittamiseen (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN jne.), tallennustilan kanssa työskentelemiseen ja rinnakkaistietojen käsittelyyn.

Tärkeimmät parannukset:

  • Projektien ja unikernelin kokoamisprosessia on muutettu. Aikaisemmin käytetyn ocamlbuild-kokoonpanojärjestelmän sijaan käytetään dyynityökalupakkia ja paikallisia arkistoja (monorepo). Tällaisten arkiston luomiseksi on lisätty uusi opam-monorepo-apuohjelma, joka mahdollistaa paketinhallinnan erottamisen rakentamisesta lähdekoodista. Opam-monorepo-apuohjelma toimii esimerkiksi luomalla lukitustiedostoja projekteihin liittyville riippuvuuksille, lataamalla ja purkamalla riippuvuuskoodia ja määrittämällä ympäristön dyynikoontijärjestelmän käyttöä varten. Varsinaisen kokoonpanon suorittaa dyynityökalusarja.
  • Tarjolla on toistettava rakennusprosessi. Lukitustiedostojen käyttäminen tarjoaa linkin riippuvuusversioihin ja antaa sinun toistaa koontiprosessin kokonaan samalla koodilla milloin tahansa.
  • Uusi ristiinkäännösprosessi on otettu käyttöön ja mahdollisuus ristiin kääntää kaikille tuetuille kohdealustoille yhdestä yhteisestä rakennusympäristöstä, joka myös ristiin käännä C-sidoksia sisältäviä riippuvuuksia ja kirjastoja ilman, että näitä sidoksia tarvitsee lisätä pääpaketti. Ristikääntäminen järjestetään dyynirakennusjärjestelmän tarjoamilla työtiloilla.
  • Uusien kohdealustojen tuki on lisätty, esimerkiksi on tarjottu kokeellinen kyky rakentaa itsenäisiä sovelluksia Raspberry Pi 4 -levyillä toimiviksi.
  • MirageOS:n osien integroimiseksi OCaml-kielellä tapahtuvaan kehitykseen liittyviin ekosysteemeihin on tehty työtä sovellusten kokoamisen yksinkertaistamiseksi unikernelin muodossa. Monet MirageOS-paketit on siirretty dune build -järjestelmään. Opam-monorepo-apuohjelma on saatavana asennettavaksi opam-pakettienhallinnan avulla, ja sitä voidaan käyttää projekteissa, joissa käytetään dune-rakennusjärjestelmää. Dyynien riippuvuuksien rakentamiseen liittyvien ongelmien ratkaisemiseksi on luotu kaksi arkistoa: dune-universe/opam-overlays ja dune-universe/mirage-opam-overlays, jotka ovat oletuksena käytössä mirage CLI -apuohjelmaa käytettäessä.
  • MirageOS-integraatio C- ja Rust-kirjastojen kanssa on yksinkertaistettu.
  • On ehdotettu uutta OCaml-ajonaikaa, jonka avulla voit tehdä ilman libc:tä (libc-free).
  • Merlin-palvelua on mahdollista käyttää integroitavaksi standardiin integroituihin kehitysympäristöihin.

Lähde: opennet.ru

Lisää kommentti