MirageOS 4.0-ի թողարկում՝ հիպերվիզորի վերևում հավելվածներ գործարկելու հարթակ

Մեկուկես տարի մշակումից հետո թողարկվել է MirageOS 4.0 նախագիծը, որը թույլ է տալիս ստեղծել օպերացիոն համակարգեր մեկ հավելվածի համար, որում հավելվածը տրամադրվում է որպես ինքնուրույն «unikernel», որը կարող է աշխատել առանց գործառնական օգտագործման: համակարգեր, առանձին ՕՀ միջուկ և ցանկացած շերտ: OCaml լեզուն օգտագործվում է հավելվածներ մշակելու համար: Ծրագրի կոդը բաշխվում է անվճար ISC լիցենզիայի ներքո:

Օպերացիոն համակարգին բնորոշ ցածր մակարդակի բոլոր գործառույթներն իրականացվում են հավելվածին կցված գրադարանի տեսքով: Հավելվածը կարող է մշակվել ցանկացած ՕՀ-ում, որից հետո այն հավաքվում է մասնագիտացված միջուկի մեջ (unikernel հայեցակարգ), որը կարող է գործարկվել անմիջապես Xen, KVM, BHyve և VMM (OpenBSD) հիպերվիզորների վերևում, բջջային հարթակների վերևում, գործընթացի ձև POSIX-ին համապատասխանող միջավայրում կամ ամպային միջավայրերում Amazon Elastic Compute Cloud և Google Compute Engine:

Ստեղծված միջավայրը չի պարունակում որևէ ավելորդ բան և ուղղակիորեն փոխազդում է հիպերվիզորի հետ՝ առանց դրայվերների կամ համակարգի շերտերի, ինչը թույլ է տալիս զգալի կրճատել ընդհանուր ծախսերը և բարձրացնել անվտանգությունը: MirageOS-ի հետ աշխատելը հանգում է երեք փուլի՝ կազմաձևի պատրաստում շրջակա միջավայրում օգտագործվող OPAM փաթեթների սահմանմամբ, միջավայրի հավաքում և միջավայրի գործարկում: Հիպերվիզորների վերևում շահագործումն ապահովելու համար Runtime-ը կառուցված է Solo5 միջուկի հիման վրա:

Չնայած այն հանգամանքին, որ հավելվածներն ու գրադարանները ստեղծվում են բարձր մակարդակի OCaml լեզվով, արդյունքում ստացված միջավայրերը ցույց են տալիս բավականին լավ կատարում և նվազագույն չափ (օրինակ, DNS սերվերը զբաղեցնում է ընդամենը 200 ԿԲ): Պարզեցված է նաև միջավայրերի սպասարկումը, քանի որ եթե անհրաժեշտ է թարմացնել ծրագիրը կամ փոխել կոնֆիգուրացիան, բավական է ստեղծել և գործարկել նոր միջավայր: OCaml լեզվով մի քանի հարյուր գրադարաններ աջակցվում են ցանցային գործողություններ կատարելու համար (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN և այլն), պահեստավորման հետ աշխատելու և տվյալների զուգահեռ մշակում ապահովելու համար:

Հիմնական բարելավումներ.

  • Փոխվել է նախագծերի և unikernel-ի կազմման գործընթացը։ Նախկինում օգտագործված ocamlbuild հավաքման համակարգի փոխարեն օգտագործվում են dune գործիքակազմը և տեղական պահեստները (monorepo): Նման պահոցներ ստեղծելու համար ավելացվել է նոր կոմունալ՝ opam-monorepo, որը հնարավորություն է տալիս փաթեթների կառավարումը շենքից տարանջատել սկզբնական կոդից։ Opam-monorepo կոմունալն աշխատում է, ինչպես օրինակ՝ ստեղծում է կողպեքի ֆայլեր նախագծի հետ կապված կախվածությունների համար, բեռնում և արդյունահանում է կախվածության կոդը, ինչպես նաև կարգավորում է շրջակա միջավայրը՝ օգտագործելու dune build համակարգը: Փաստացի հավաքումը կատարվում է ավազաթմբի գործիքակազմով:
  • Ապահովված է կրկնվող կառուցման գործընթաց: Կողպեքի ֆայլերի օգտագործումը հղում է տալիս կախվածության տարբերակներին և թույլ է տալիս ցանկացած պահի ամբողջությամբ կրկնել կառուցման գործընթացը նույն կոդով:
  • Իրականացվել է խաչաձև կոմպիլյացիայի նոր գործընթաց, և ապահովված է բոլոր աջակցվող թիրախային հարթակների համար մեկ ընդհանուր կառուցապատման միջավայրից խաչաձև կազմելու հնարավորություն, որը նաև խաչաձև է հավաքում կախվածությունները և գրադարանները, որոնք ունեն C կապեր՝ առանց այդ կապերը ավելացնելու անհրաժեշտության: հիմնական փաթեթը. Cross-compilation-ը կազմակերպվում է՝ օգտագործելով աշխատանքային տարածքները, որոնք տրամադրվում են dune build համակարգով:
  • Ավելացվել է նոր թիրախային հարթակների աջակցություն, օրինակ՝ տրամադրվել է Raspberry Pi 4 տախտակների վրա աշխատելու համար ինքնուրույն հավելվածներ ստեղծելու փորձնական հնարավորություն։
  • Աշխատանք է տարվել MirageOS-ի մասերը OCaml լեզվով մշակման հետ կապված էկոհամակարգերի մեջ ինտեգրելու ուղղությամբ՝ պարզեցնելու համար հավելվածների հավաքումը unikernel-ի տեսքով: Շատ MirageOS փաթեթներ տեղափոխվել են dune build համակարգ: Opam-monorepo կոմունալ ծրագիրը հասանելի է opam փաթեթի կառավարչի միջոցով տեղադրելու համար և կարող է օգտագործվել նախագծերում, որոնք օգտագործում են dune build համակարգը: Ավազաթումբում կախվածության կառուցման հետ կապված խնդիրներ լուծող կարկատանները պահպանելու համար ստեղծվել են երկու պահեստ՝ dune-universe/opam-overlays և dune-universe/mirage-opam-overlays, որոնք լռելյայն միացված են Mirage CLI կոմունալ ծառայությունն օգտագործելիս:
  • MirageOS-ի ինտեգրումը C և Rust գրադարանների հետ պարզեցվել է:
  • Առաջարկվել է նոր OCaml գործարկման ժամանակ, որը թույլ է տալիս անել առանց libc-ի (libc-free):
  • Հնարավոր է օգտագործել Merlin ծառայությունը ստանդարտ ինտեգրված զարգացման միջավայրերի հետ ինտեգրվելու համար:

Source: opennet.ru

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