Το έργο Asterinas κυκλοφόρησε την έκδοση 0.18, έναν πυρήνα γραμμένο σε Rust και σχεδιασμένο για χρήση σε λειτουργικά συστήματα γενικής χρήσης. Ο πυρήνας παρέχει ένα ABI (Application Binary Interface) συμβατό με τον πυρήνα. Linux και μπορεί να χρησιμοποιηθεί αντ' αυτού. Η διανομή Asterinas NixOS, η οποία συνδυάζει τον πυρήνα Asterinas με το περιβάλλον συστήματος NixOS, αναπτύσσεται παράλληλα. Ο κώδικας του έργου διανέμεται υπό την MPL (Mozilla Public License).
Αυτή τη στιγμή, υπάρχουν περίπου 240 κλήσεις συστήματος που έχουν υλοποιηθεί στον πυρήνα. LinuxΗ διανομή Asterinas NixOS έχει επαληθευτεί ότι λειτουργεί πάνω από τον πυρήνα Asterinas με πάνω από 100 πακέτα NixOS. Τα υποστηριζόμενα πακέτα περιλαμβάνουν: Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama και Codex.
Ο πυρήνας παρέχει πλήρη υποστήριξη για την αρχιτεκτονική x86-64, μερική υποστήριξη για RISC-V 64 και x86-64 με απομόνωση που βασίζεται στο Intel TDX, καθώς και αρχική υποστήριξη για την αρχιτεκτονική LoongArch 64. Οι τομείς προτεραιότητας εφαρμογής περιλαμβάνουν συστήματα που βασίζονται σε Linux ABI, αλλά απαιτούν υψηλότερο επίπεδο ασφάλειας. Για παράδειγμα, το Asterinas προτείνεται για χρήση στη δημιουργία ενός ασφαλούς περιβάλλοντος συστήματος. εικονικές μηχανές, για την απομόνωση των οποίων χρησιμοποιούνται τεχνολογίες όπως ARM CCA, AMD SEV και Intel TDX, καθώς και από την πλευρά του συστήματος υποδοχής, η οποία διασφαλίζει την εκτόξευση κοντέινερ.
Για να μειώσει την πιθανότητα σφαλμάτων μνήμης, που αποτελούν την κύρια πηγή των πιο επικίνδυνων τρωτών σημείων, το Asterinas χρησιμοποιεί τη γλώσσα Rust και περιορισμένη χρήση μη ασφαλών μπλοκ. Ο πυρήνας κατασκευάζεται χρησιμοποιώντας την αρχιτεκτονική framekernel, η οποία επιχειρεί να συνδυάσει τις δυνατότητες απομόνωσης των μικροπυρήνων με την αποτελεσματικότητα των μονολιθικών πυρήνων.
Τα στοιχεία του πυρήνα στο Asterinas βρίσκονται σε έναν κοινόχρηστο χώρο διευθύνσεων και η ασφάλεια επιτυγχάνεται μέσω του λογικού διαχωρισμού του ασφαλούς κώδικα από τον κώδικα που θα μπορούσε ενδεχομένως να είναι ευάλωτος. Ο πυρήνας χωρίζεται σε δύο μέρη, και τα δύο γραμμένα σε Rust: OS Framework και OS Services. Οι OS Services απαγορεύουν τη χρήση μη ασφαλών μπλοκ και όλες οι λειτουργίες χαμηλού επιπέδου που απαιτούν εκτέλεση κώδικα σε μη ασφαλή μπλοκ μετακινούνται στο OS Framework και είναι προσβάσιμες μόνο μέσω ενός API υψηλού επιπέδου. Όλες οι κλήσεις συστήματος, τα συστήματα αρχείων και τα προγράμματα οδήγησης υλοποιούνται σε επίπεδο OS Services και δεν μπορούν να περιλαμβάνουν μη ασφαλή μπλοκ.
Για την ανάπτυξη υπηρεσιών συστήματος και μονάδων πυρήνα, παρέχεται το OSDK (Operating System Development Kit), το οποίο παρέχει το βοηθητικό πρόγραμμα cargo-osdk για τη δημιουργία, την κατασκευή, τον έλεγχο και την εκτέλεση στοιχείων του λειτουργικού συστήματος. Οι προγραμματιστές μπορούν επίσης να χρησιμοποιήσουν το σύνολο OSTD (Operating System Standard Library), το οποίο περιλαμβάνει μια έκδοση των τυπικών βιβλιοθηκών Rust (crate std) προσαρμοσμένη για χρήση σε στοιχεία του λειτουργικού συστήματος.
Μεταξύ των αλλαγών στην έκδοση 0.18:
- Στο πλαίσιο των εργασιών για να διασφαλιστεί ότι το Asterinas εκτελείται ως σύστημα guest σε κοντέινερ Kata Containers και Confidential Containers VM, έχει υλοποιηθεί υποστήριξη για χώρους ονομάτων IPC και cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (για πρόσβαση σε ένα σύστημα αρχείων που χρησιμοποιείται από κοινού με το σύστημα κεντρικού υπολογιστή), virtio-rng (/dev/hwrng για εντροπία για τη γεννήτρια ψευδοτυχαίων αριθμών) και vsock (για επικοινωνία μεταξύ του συστήματος κεντρικού υπολογιστή και των συστημάτων guest).
- Υλοποίησα τις δυνατότητες κλήσης συστήματος ptrace και εντοπισμού σφαλμάτων χώρου χρήστη χρησιμοποιώντας GDB και strace.
- Έχει προταθεί μια νέα υλοποίηση του συστήματος αρχείων ext2 και έχει προστεθεί ένα πρόγραμμα οδήγησης NVMe. Έχει προστεθεί ένας μηχανισμός Dentry (Καταχώρηση Καταλόγου) στο VFS και η υλοποίηση της προσωρινής μνήμης σελίδων έχει επανασχεδιαστεί.
- Η διανομή Asterinas NixOS έχει τη δυνατότητα να εκτελεί Codex, QEMU και Firefox.
- Προστέθηκαν οι κλήσεις συστήματος pidfd_getfd, pidfd_send_signal, pivot_root.
- Προστέθηκε αρχικό Υποστήριξη IPv6.
- Έχει εφαρμοστεί ένα σύστημα δυνατοτήτων για την ανάθεση μεμονωμένων προνομιακών λειτουργιών.
- Προστέθηκε η αρχική υλοποίηση του πλαισίου LSM (Linux Μονάδες Ασφαλείας).
Πηγή: opennet.ru
