Κυκλοφορία του MirageOS 4.0, μιας πλατφόρμας για την εκτέλεση εφαρμογών πάνω από έναν hypervisor

Μετά από ενάμιση χρόνο ανάπτυξης, δημοσιεύτηκε η κυκλοφορία του έργου MirageOS 4.0, το οποίο επιτρέπει τη δημιουργία λειτουργικών συστημάτων για μία εφαρμογή, στην οποία η εφαρμογή παραδίδεται ως αυτόνομο «unikernel», με δυνατότητα εκτέλεσης χωρίς τη χρήση λειτουργικών συστημάτων, ξεχωριστού πυρήνα λειτουργικού συστήματος και τυχόν επιπέδων. Η γλώσσα OCaml χρησιμοποιείται για την ανάπτυξη εφαρμογών. Ο κώδικας του έργου διανέμεται υπό την ελεύθερη άδεια ISC.

Όλη η λειτουργικότητα χαμηλού επιπέδου που είναι εγγενής στο λειτουργικό σύστημα υλοποιείται με τη μορφή μιας βιβλιοθήκης που είναι προσαρτημένη στην εφαρμογή. Η εφαρμογή μπορεί να αναπτυχθεί σε οποιοδήποτε λειτουργικό σύστημα και στη συνέχεια να μεταγλωττιστεί σε έναν εξειδικευμένο πυρήνα (unikernel concept), ο οποίος μπορεί να τρέξει απευθείας πάνω από Xen, KVM, BHyve και VMM (OpenBSD), πάνω από κινητές πλατφόρμες, στο μορφή μιας διαδικασίας σε περιβάλλον συμβατό με POSIX ή σε περιβάλλοντα cloud του Amazon Elastic Compute Cloud και του Google Compute Engine.

Το περιβάλλον που δημιουργείται δεν περιέχει τίποτα περιττό και αλληλεπιδρά απευθείας με τον hypervisor χωρίς προγράμματα οδήγησης ή επίπεδα συστήματος, γεγονός που επιτρέπει σημαντική μείωση του γενικού κόστους και αυξημένη ασφάλεια. Η εργασία με το MirageOS καταλήγει σε τρία στάδια: προετοιμασία της διαμόρφωσης με τον καθορισμό των πακέτων OPAM που χρησιμοποιούνται στο περιβάλλον, τη συναρμολόγηση του περιβάλλοντος και την εκκίνηση του περιβάλλοντος. Για να διασφαλιστεί η λειτουργία πάνω από τους hypervisors, το Runtime είναι χτισμένο με βάση τον πυρήνα Solo5.

Παρά το γεγονός ότι οι εφαρμογές και οι βιβλιοθήκες δημιουργούνται στη γλώσσα OCaml υψηλού επιπέδου, τα περιβάλλοντα που προκύπτουν επιδεικνύουν αρκετά καλή απόδοση και ελάχιστο μέγεθος (για παράδειγμα, ο διακομιστής DNS καταλαμβάνει μόνο 200 KB). Η συντήρηση των περιβαλλόντων είναι επίσης απλοποιημένη, καθώς εάν είναι απαραίτητο να ενημερώσετε το πρόγραμμα ή να αλλάξετε τη διαμόρφωση, αρκεί να δημιουργήσετε και να ξεκινήσετε ένα νέο περιβάλλον. Πολλές εκατοντάδες βιβλιοθήκες στη γλώσσα OCaml υποστηρίζονται για την εκτέλεση λειτουργιών δικτύου (DNS, SSH, OpenFlow, HTTP, XMPP, Matrix, OpenVPN, κ.λπ.), που λειτουργούν με αποθήκευση και παρέχουν παράλληλη επεξεργασία δεδομένων.

Βασικές βελτιώσεις:

  • Η διαδικασία μεταγλώττισης έργων και unikernel έχει αλλάξει. Αντί για το σύστημα συναρμολόγησης ocamlbuild που χρησιμοποιήθηκε προηγουμένως, χρησιμοποιείται η εργαλειοθήκη dune και τα τοπικά αποθετήρια (monorepo). Για τη δημιουργία τέτοιων αποθετηρίων, έχει προστεθεί ένα νέο βοηθητικό πρόγραμμα, το opam-monorepo, το οποίο καθιστά δυνατό τον διαχωρισμό της διαχείρισης πακέτων από την κατασκευή από τον πηγαίο κώδικα. Το βοηθητικό πρόγραμμα opam-monorepo λειτουργεί όπως η δημιουργία αρχείων κλειδώματος για εξαρτήσεις που σχετίζονται με το έργο, η φόρτωση και η εξαγωγή κώδικα εξάρτησης και η ρύθμιση του περιβάλλοντος για τη χρήση του συστήματος δημιουργίας αμμόλοφων. Η πραγματική συναρμολόγηση εκτελείται από το κιτ εργαλείων αμμόλοφων.
  • Παρέχεται μια επαναλαμβανόμενη διαδικασία κατασκευής. Η χρήση αρχείων κλειδώματος παρέχει έναν σύνδεσμο προς τις εκδόσεις εξάρτησης και σας επιτρέπει να επαναλάβετε πλήρως τη διαδικασία δημιουργίας με τον ίδιο κώδικα ανά πάσα στιγμή.
  • Έχει εφαρμοστεί μια νέα διαδικασία πολλαπλής μεταγλώττισης και παρέχεται η δυνατότητα διασταυρούμενης μεταγλώττισης για όλες τις υποστηριζόμενες πλατφόρμες-στόχους από ένα κοινό περιβάλλον κατασκευής, το οποίο επίσης διασταυρώνει εξαρτήσεις και βιβλιοθήκες που έχουν δεσμεύσεις C, χωρίς την ανάγκη προσθήκης αυτών των συνδέσεων σε το κύριο πακέτο. Η διασταυρούμενη μεταγλώττιση οργανώνεται χρησιμοποιώντας χώρους εργασίας που παρέχονται από το σύστημα κατασκευής αμμόλοφων.
  • Έχει προστεθεί υποστήριξη για νέες πλατφόρμες στόχων, για παράδειγμα, έχει παρασχεθεί μια πειραματική δυνατότητα δημιουργίας αυτόνομων εφαρμογών για εκτέλεση σε πλακέτες Raspberry Pi 4.
  • Έγινε δουλειά για την ενσωμάτωση τμημάτων του MirageOS σε οικοσυστήματα που σχετίζονται με την ανάπτυξη στη γλώσσα OCaml για να απλοποιηθεί η συναρμολόγηση των εφαρμογών με τη μορφή unikernel. Πολλά πακέτα MirageOS έχουν μεταφερθεί στο σύστημα dune build. Το βοηθητικό πρόγραμμα opam-monorepo είναι διαθέσιμο για εγκατάσταση με χρήση του διαχειριστή πακέτων opam και μπορεί να χρησιμοποιηθεί σε έργα που χρησιμοποιούν το σύστημα κατασκευής dune. Για να διατηρηθούν ενημερώσεις κώδικα που επιλύουν προβλήματα με τη δημιουργία εξαρτήσεων στο dune, έχουν δημιουργηθεί δύο αποθετήρια: dune-universe/opam-overlays και dune-universe/mirage-opam-overlays, τα οποία ενεργοποιούνται από προεπιλογή κατά τη χρήση του βοηθητικού προγράμματος mirage CLI.
  • Η ενοποίηση του MirageOS με τις βιβλιοθήκες C και Rust έχει απλοποιηθεί.
  • Ένας νέος χρόνος εκτέλεσης OCaml έχει προταθεί που σας επιτρέπει να κάνετε χωρίς libc (libc-free).
  • Είναι δυνατή η χρήση της υπηρεσίας Merlin για ενοποίηση με τυπικά ολοκληρωμένα περιβάλλοντα ανάπτυξης.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο