Paglabas ng MirageOS 4.0, isang platform para sa pagpapatakbo ng mga application sa ibabaw ng hypervisor

Pagkatapos ng isang taon at kalahati ng pag-unlad, ang paglabas ng proyekto ng MirageOS 4.0 ay nai-publish, na nagpapahintulot sa paglikha ng mga operating system para sa isang application, kung saan ang application ay inihatid bilang isang self-contained na "unikernel", na may kakayahang tumakbo nang walang ang paggamit ng mga operating system, isang hiwalay na OS kernel at anumang mga layer. Ang wikang OCaml ay ginagamit upang bumuo ng mga application. Ang code ng proyekto ay ipinamamahagi sa ilalim ng libreng lisensya ng ISC.

Ang lahat ng mababang antas ng pag-andar na likas sa operating system ay ipinatupad sa anyo ng isang library na naka-attach sa application. Ang application ay maaaring mabuo sa anumang OS, pagkatapos nito ay pinagsama-sama sa isang dalubhasang kernel (konsepto ng unikernel), na maaaring tumakbo nang direkta sa ibabaw ng Xen, KVM, BHyve at VMM (OpenBSD) hypervisors, sa ibabaw ng mga mobile platform, sa anyo ng proseso sa isang POSIX-compliant na environment o sa cloud environment na Amazon Elastic Compute Cloud at Google Compute Engine.

Ang nabuong kapaligiran ay hindi naglalaman ng anumang labis at direktang nakikipag-ugnayan sa hypervisor nang walang mga driver o layer ng system, na nagbibigay-daan para sa isang makabuluhang pagbawas sa mga gastos sa overhead at pagtaas ng seguridad. Ang pagtatrabaho sa MirageOS ay bumaba sa tatlong yugto: paghahanda ng pagsasaayos sa pagtukoy sa mga pakete ng OPAM na ginagamit sa kapaligiran, pag-assemble ng kapaligiran, at paglulunsad ng kapaligiran. Upang matiyak ang operasyon sa ibabaw ng mga hypervisors, ang Runtime ay binuo batay sa kernel ng Solo5.

Sa kabila ng katotohanan na ang mga application at library ay nilikha sa mataas na antas ng OCaml na wika, ang mga resultang kapaligiran ay nagpapakita ng medyo mahusay na pagganap at minimal na laki (halimbawa, ang DNS server ay tumatagal lamang ng 200 KB). Ang pagpapanatili ng mga kapaligiran ay pinasimple din, dahil kung kinakailangan upang i-update ang programa o baguhin ang pagsasaayos, sapat na upang lumikha at maglunsad ng isang bagong kapaligiran. Ilang daang mga aklatan sa wikang OCaml ang sinusuportahan para sa pagsasagawa ng mga pagpapatakbo ng network (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, atbp.), nagtatrabaho sa storage at pagbibigay ng parallel data processing.

Mga pangunahing pagpapabuti:

  • Ang proseso ng pag-compile ng mga proyekto at unikernel ay nabago. Sa halip na ang dating ginamit na ocamlbuild assembly system, ang dune toolkit at mga lokal na repositoryo (monorepo) ang ginagamit. Upang lumikha ng mga naturang repository, isang bagong utility, opam-monorepo, ang idinagdag, na ginagawang posible na paghiwalayin ang pamamahala ng package mula sa pagbuo mula sa source code. Gumagana ang opam-monorepo utility gaya ng paggawa ng mga lock file para sa mga dependency na nauugnay sa proyekto, pag-load at pagkuha ng dependency code, at pag-set up ng kapaligiran para magamit ang dune build system. Ang aktwal na pagpupulong ay ginagawa ng dune toolkit.
  • Ang isang paulit-ulit na proseso ng pagbuo ay ibinigay. Ang paggamit ng mga lock file ay nagbibigay ng link sa mga bersyon ng dependency at nagbibigay-daan sa iyong ganap na ulitin ang proseso ng pagbuo gamit ang parehong code anumang oras.
  • Ang isang bagong proseso ng cross-compilation ay ipinatupad at ang kakayahang mag-cross-compile para sa lahat ng sinusuportahang target na platform mula sa isang karaniwang build environment ay ibinigay, na nagko-cross-compile din ng mga dependency at mga aklatan na may mga C binding, nang hindi kinakailangang idagdag ang mga binding na ito sa ang pangunahing pakete. Inayos ang cross-compilation gamit ang mga workspace na ibinigay ng dune build system.
  • Ang suporta para sa mga bagong target na platform ay idinagdag, halimbawa, isang pang-eksperimentong kakayahang bumuo ng mga self-contained na application para sa pagpapatakbo sa mga Raspberry Pi 4 na board ay ibinigay.
  • Ang trabaho ay ginawa upang isama ang mga bahagi ng MirageOS sa mga ecosystem na nauugnay sa pag-unlad sa wikang OCaml upang pasimplehin ang pagpupulong ng mga application sa anyo ng unikernel. Maraming MirageOS packages ang na-port sa dune build system. Ang opam-monorepo utility ay magagamit para sa pag-install gamit ang opam package manager at maaaring gamitin sa mga proyekto na gumagamit ng dune build system. Upang mapanatili ang mga patch na lumulutas ng mga problema sa pagbuo ng mga dependency sa dune, dalawang repositoryo ang ginawa: dune-universe/opam-overlays at dune-universe/mirage-opam-overlays, na naka-enable bilang default kapag ginagamit ang mirage CLI utility.
  • Ang pagsasama ng MirageOS sa mga aklatan ng C at Rust ay pinasimple.
  • Ang isang bagong runtime ng OCaml ay iminungkahi na nagbibigay-daan sa iyong gawin nang walang libc (libc-free).
  • Posibleng gamitin ang serbisyo ng Merlin para sa pagsasama sa karaniwang pinagsama-samang mga kapaligiran sa pag-unlad.

Pinagmulan: opennet.ru

Magdagdag ng komento