Maestro, ένας πυρήνας και ένα λειτουργικό σύστημα τύπου Unix γραμμένο από την αρχή στο Rust

Maestro

Στιγμιότυπο οθόνης Maestro

Το Rust έχει κερδίσει αρκετή δημοτικότητα σε τέτοιο βαθμό που έχει γίνει μία από αυτές που επιλέχθηκε να ενσωματωθεί ως δευτερεύουσα γλώσσα στο Linux, καθώς και σε άλλα λειτουργικά συστήματα, όπως είναι η περίπτωση του Android, που έχει ήδη μέρος του κώδικα στο Rust, στα Windows που επίσης έχει δώσει την έγκριση, μεταξύ άλλων.

Σκωρία έχει αποδειχθεί μια ισχυρή γλώσσα και έχει δημιουργήσει τέτοια εμπιστοσύνη Μερικά λειτουργικά συστήματα έχουν δημιουργηθεί με αυτήν τη γλώσσα προγραμματισμού και για να αναφέρουμε μόνο μερικά έχουμε: Οξειδοαναγωγή, Έχουμε επίσης πυρήνες γραμμένους από την αρχή όπως π.χ Κέρλα ή τον πυρήνα που χρησιμοποιείται στο δορυφόρο που εκτόξευσε πρόσφατα η Κίνα.

Ο λόγος που το αναφέρω είναι ότι πρόσφατα έπεσα πάνω σε μια είδηση ​​που μου τράβηξε την προσοχή και αυτή είναι Παρουσιάστηκε ένα έργο στο οποίο αναπτύσσεται ένας πυρήνας γραμμένος σε Rust και το οποίο είναι εν μέρει συμβατό με το Linux.

Το όνομα αυτού του έργου είναι "Δάσκαλος" και όπως αναφέρθηκε, είναι ένας πυρήνας τύπου Unix γραμμένος στο Rust και υλοποιεί ένα υποσύνολο κλήσεων συστήματος από τον πυρήνα του Linux επαρκή για τη δημιουργία τυπικών εργασιακών περιβαλλόντων. Ως εκ τούτου, το έργο "Maestro" δεν είναι κάτι νέο, καθώς ο προγραμματιστής αναφέρει ότι το έργο γεννήθηκε το 2018, αλλά εκείνη την εποχή ήταν γραμμένο σε C και λόγω των διαφορετικών πλεονεκτημάτων και χαρακτηριστικών του Rust, το έργο ξαναγράφηκε από μηδέν.

Στη σελίδα του έργου Οι λόγοι της αλλαγής περιγράφονται:

Εκείνη τη στιγμή αποφάσισα να στραφώ στο Rust (το πρώτο μου έργο σε αυτή τη γλώσσα), το οποίο αντιπροσώπευε πολλά πλεονεκτήματα:

  • Επανεκκινήστε το έργο από την αρχή, χρησιμοποιώντας διδάγματα από προηγούμενα λάθη.
  • Να είστε λίγο πιο καινοτόμοι από το να γράφετε απλώς έναν πυρήνα που μοιάζει με Linux σε C. Άλλωστε, απλώς χρησιμοποιήστε το Linux εκείνη τη στιγμή.
  • Χρησιμοποιήστε την ασφάλεια της γλώσσας Rust για να επωφεληθείτε από ορισμένες δυσκολίες προγραμματισμού πυρήνα. Η χρήση του συστήματος γραφής Rust σάς επιτρέπει να μεταφέρετε μέρος της ευθύνης για την ασφάλεια της μνήμης από τον προγραμματιστή στον μεταγλωττιστή.

Στην ανάπτυξη πυρήνα, ο εντοπισμός σφαλμάτων είναι πολύ δύσκολος για διάφορους λόγους:

  • Η τεκμηρίωση είναι συχνά δύσκολο να βρεθεί και οι υλοποιήσεις του BIOS μπορεί να είναι προβληματικές (πιο συχνά από όσο νομίζετε).
  • Κατά την εκκίνηση, ο πυρήνας έχει πλήρη πρόσβαση στη μνήμη και μπορεί να γράψει εκεί που δεν πρέπει (για παράδειγμα, τον δικό του κώδικα).
  • Η αντιμετώπιση προβλημάτων διαρροής μνήμης δεν είναι εύκολη. Δεν μπορούν να χρησιμοποιηθούν εργαλεία όπως το valgrind.
  • Το gdb μπορεί να χρησιμοποιηθεί με το QEMU και το VMWare, αλλά ο πυρήνας μπορεί να συμπεριφέρεται διαφορετικά όταν εκτελείται σε διαφορετικό εξομοιωτή ή εικονική μηχανή. Επίσης, αυτοί οι εξομοιωτές ενδέχεται να μην υποστηρίζουν gdb (π.χ. VirtualBox).
  • Ορισμένες λειτουργίες λείπουν από την υποστήριξη gdb στο QEMU ή το VMWare και το gdb μπορεί να κολλήσει μερικές φορές

Σε σχέση με χαρακτηριστικά του έργου, ξεχωρίζει ότι ο πυρήνας είναι μονολιθικός και προς το παρόν υποστηρίζεται μόνο σε συστήματα x86 σε λειτουργία 32-bit. Η βάση κώδικα του πυρήνα καλύπτει περίπου 49 χιλιάδες γραμμές, είναι εκτελέσιμη τόσο σε πραγματικό υλικό όσο και σε εικονικά περιβάλλοντα, όπως το QEMU ή το VirtualBox.

Στην τρέχουσα εξέλιξη του «Maestro», Το 31% έχει υλοποιηθεί (135 από 437) των κλήσεων συστήματος Linux. Αυτό είναι αρκετά για να φορτώσει ένα περιβάλλον κονσόλας που βασίζεται στο Bash και στη βιβλιοθήκη Musl standard C. Επιπλέον, το περιβάλλον που βασίζεται στο Maestro μπορεί να εκτελέσει ορισμένα βοηθητικά προγράμματα από τη σουίτα GNU coreutils και βασικές συσκευασίες από οποιοδήποτε σύστημα Unix. Επί του παρόντος, γίνονται εργασίες για την υλοποίηση μιας στοίβας δικτύωσης και γίνονται επίσης εργασίες για την ανάπτυξη ενός

μεταξύ των Τα διαθέσιμα χαρακτηριστικά του Maestro ξεχωρίζουν το ακόλουθο::

  • Ελεγκτές για πληκτρολόγιο PS/2 και τερματικό με λειτουργία κειμένου και μερική υποστήριξη για ακολουθίες ANSI.
  • Σύστημα εκχώρησης μνήμης με υποστήριξη εικονικής μνήμης.
  • Προγραμματιστής εργασιών με βάση τον αλγόριθμο round-robin με υποστήριξη για σήματα POSIX.
  • Ορισμός συσκευών PCI.
  • Ελεγκτής IDE/PATA.
  • Σύστημα αρχείων ext2.
  • Υποστήριξη για /tmp και /proc εικονικά συστήματα αρχείων.
  • Δυνατότητα προσάρτησης κατατμήσεων δίσκων FS, MBR και GPT.
  • υποστήριξη initramfs.
  • Ελεγκτής RTC για χρονοδιακόπτη και ακριβή χρόνο.
  • Υποστήριξη για φόρτωση μονάδων πυρήνα.
  • Δυνατότητα εκτέλεσης εκτελέσιμων αρχείων σε μορφή ELF.

Για ενδιαφέρεται να μάθει λίγα περισσότερα για το έργο, μπορείτε να ελέγξετε τις λεπτομέρειες Στον ακόλουθο σύνδεσμο.  Όσο για όσους ενδιαφέρονται για τον κώδικα του έργου, θα πρέπει να γνωρίζουν ότι είναι διανέμεται υπό την άδεια του MIT.