Išleista MirageOS 4.0, platforma, skirta programoms paleisti hipervizoriaus viršuje

Po pusantrų metų kūrimo buvo išleistas MirageOS 4.0 projektas, leidžiantis sukurti operacines sistemas vienai programai, kurioje programa pristatoma kaip savarankiškas „unikernel“, galintis veikti nenaudojant operacinės sistemos. sistemos, atskiras OS branduolys ir bet kokie sluoksniai. Programoms kurti naudojama OCaml kalba. Projekto kodas platinamas pagal nemokamą ISC licenciją.

Visos žemo lygio funkcijos, būdingos operacinei sistemai, yra įdiegtos kaip biblioteka, kuri pridedama prie programos. Programą galima kurti bet kurioje OS, o po to ji sukompiliuojama į specializuotą branduolį (unikernel koncepcija), kuris gali veikti tiesiai ant Xen, KVM, BHyve ir VMM (OpenBSD) hipervizorių, mobiliųjų platformų viršuje. proceso forma POSIX suderinamoje aplinkoje arba debesų aplinkose Amazon Elastic Compute Cloud ir Google Compute Engine.

Sukurtoje aplinkoje nėra nieko nereikalingo ir ji tiesiogiai sąveikauja su hipervizoriumi be tvarkyklių ar sistemos sluoksnių, o tai leidžia žymiai sumažinti pridėtines išlaidas ir padidinti saugumą. Darbas su MirageOS susideda iš trijų etapų: konfigūracijos paruošimas apibrėžiant aplinkoje naudojamus OPAM paketus, aplinkos surinkimas ir aplinkos paleidimas. Siekiant užtikrinti veikimą ant hipervizorių, Runtime sukurtas Solo5 branduolio pagrindu.

Nepaisant to, kad programos ir bibliotekos kuriamos aukšto lygio OCaml kalba, gautos aplinkos demonstruoja gana gerą našumą ir minimalų dydį (pavyzdžiui, DNS serveris užima tik 200 KB). Aplinkų priežiūra taip pat supaprastinta, nes prireikus atnaujinti programą ar pakeisti konfigūraciją, pakanka sukurti ir paleisti naują aplinką. Keli šimtai bibliotekų OCaml kalba palaikomi tinklo operacijoms atlikti (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN ir kt.), darbui su saugykla ir lygiagrečiam duomenų apdorojimui.

Pagrindiniai patobulinimai:

  • Pakeistas projektų ir unikernel sudarymo procesas. Vietoj anksčiau naudotos ocamlbuild surinkimo sistemos naudojamas kopų įrankių rinkinys ir vietinės saugyklos (monorepo). Norint sukurti tokias saugyklas, buvo pridėta nauja opam-monorepo priemonė, kuri leidžia atskirti paketų valdymą nuo kūrimo nuo šaltinio kodo. „Opam-monorepo“ programa veikia, pavyzdžiui, sukuria su projektu susijusių priklausomybių užrakinimo failus, įkelia ir ištraukia priklausomybės kodą bei nustato aplinką, kad būtų galima naudoti kopų kūrimo sistemą. Faktinį surinkimą atlieka kopų įrankių rinkinys.
  • Pateikiamas kartojamas kūrimo procesas. Užrakinimo failų naudojimas suteikia nuorodą į priklausomybės versijas ir leidžia bet kuriuo metu visiškai pakartoti kūrimo procesą su tuo pačiu kodu.
  • Įdiegtas naujas kryžminio kompiliavimo procesas ir suteikiama galimybė kryžmiškai kompiliuoti visoms palaikomoms tikslinėms platformoms iš vienos bendros kūrimo aplinkos, kuri taip pat kryžmiškai kompiliuoja priklausomybes ir bibliotekas, turinčias C susiejimą, nereikalaujant šių susiejimo pridėti prie pagrindinė pakuotė. Kryžminis kompiliavimas organizuojamas naudojant kopų kūrimo sistemos numatytas darbo vietas.
  • Pridėtas naujų tikslinių platformų palaikymas, pavyzdžiui, buvo suteikta eksperimentinė galimybė kurti savarankiškas programas, skirtas veikti Raspberry Pi 4 plokštėse.
  • Buvo atliktas darbas siekiant integruoti „MirageOS“ dalis į ekosistemas, susijusias su plėtra OCaml kalba, kad būtų supaprastintas programų surinkimas „unikernel“ pavidalu. Daugelis „MirageOS“ paketų buvo perkelti į kopų kūrimo sistemą. Priemonę opam-monorepo galima įdiegti naudojant opam paketų tvarkyklę ir ją galima naudoti projektuose, kuriuose naudojama kopų kūrimo sistema. Norint išlaikyti pataisas, kurios sprendžia problemas, susijusias su priklausomybių kūrimo kopoje, buvo sukurtos dvi saugyklos: kopos visata/opam-overlays ir dune-universe/mirage-opam-overlays, kurios pagal numatytuosius nustatymus įjungiamos naudojant mirage CLI priemonę.
  • MirageOS integracija su C ir Rust bibliotekomis buvo supaprastinta.
  • Buvo pasiūlytas naujas OCaml vykdymo laikas, leidžiantis apsieiti be libc (be libc).
  • Galima naudoti Merlin paslaugą integracijai su standartinėmis integruotomis kūrimo aplinkomis.

Šaltinis: opennet.ru

Добавить комментарий