Das Asterinas-Projekt hat Version 0.18 veröffentlicht, einen in Rust geschriebenen Kernel, der für den Einsatz auf Allzweck-Betriebssystemen konzipiert ist. Der Kernel bietet eine mit dem Kernel kompatible ABI (Application Binary Interface). Linux und kann stattdessen verwendet werden. Die Asterinas NixOS-Distribution, die den Asterinas-Kernel mit der NixOS-Systemumgebung kombiniert, wird parallel entwickelt. Der Code des Projekts wird unter der MPL (Mozilla Public License) vertrieben.
Aktuell sind im Kernel etwa 240 Systemaufrufe implementiert. LinuxDie Asterinas NixOS-Distribution läuft nachweislich auf dem Asterinas-Kernel und enthält über 100 NixOS-Pakete. Zu den unterstützten Paketen gehören: 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 und Codex.
Der Kernel bietet volle Unterstützung für die x86-64-Architektur, teilweise Unterstützung für RISC-V 64 und x86-64 mit Isolation basierend auf Intel TDX sowie erste Unterstützung für die LoongArch 64-Architektur. Zu den prioritären Anwendungsbereichen gehören Systeme, die auf … basieren. Linux ABIs, die jedoch ein höheres Sicherheitsniveau erfordern. Beispielsweise wird Asterinas für die Schaffung einer sicheren Systemumgebung vorgeschlagen. virtuelle MaschinenZur Isolation werden Technologien wie ARM CCA, AMD SEV und Intel TDX eingesetzt, und auf der Host-Systemseite wird der Start von Containern sichergestellt.
Um die Wahrscheinlichkeit von Speicherfehlern, der Hauptursache der gefährlichsten Sicherheitslücken, zu reduzieren, verwendet Asterinas die Programmiersprache Rust und beschränkt den Einsatz unsicherer Blöcke. Der Kernel basiert auf der Framekernel-Architektur, die versucht, die Isolationsfähigkeiten von Mikrokerneln mit der Effizienz monolithischer Kernel zu kombinieren.
Die Kernelkomponenten in Asterinas befinden sich in einem gemeinsamen Adressraum. Die Sicherheit wird durch die logische Trennung von sicherem und potenziell angreifbarem Code gewährleistet. Der Kernel ist in zwei in Rust geschriebene Teile unterteilt: das OS-Framework und die OS-Dienste. Die OS-Dienste verbieten die Verwendung unsicherer Codeblöcke. Alle Low-Level-Operationen, die die Ausführung von Code in unsicheren Blöcken erfordern, werden in das OS-Framework ausgelagert und sind nur über eine High-Level-API zugänglich. Alle Systemaufrufe, Dateisysteme und Treiber sind auf der Ebene der OS-Dienste implementiert und dürfen keine unsicheren Blöcke enthalten.
Für die Entwicklung von Systemdiensten und Kernelmodulen steht das OSDK (Operating System Development Kit) zur Verfügung, das das Dienstprogramm cargo-osdk zum Erstellen, Kompilieren, Testen und Ausführen von Betriebssystemkomponenten bereitstellt. Entwickler können außerdem die OSTD (Operating System Standard Library) nutzen, die eine für die Verwendung in Betriebssystemkomponenten angepasste Edition der Rust-Standardbibliotheken (crate std) enthält.
Zu den Änderungen in Version 0.18:
- Im Rahmen der Arbeiten, um sicherzustellen, dass Asterinas als Gastsystem in Kata Containers und Confidential Containers VM-Containern läuft, wurde die Unterstützung für IPC- und cgroup-Namespaces, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (für den Zugriff auf ein mit dem Hostsystem gemeinsam genutztes Dateisystem), virtio-rng (/dev/hwrng für die Entropie des Pseudozufallszahlengenerators) und vsock (für die Kommunikation zwischen Host- und Gastsystem) implementiert.
- Implementierte den ptrace-Systemaufruf und die Debugging-Funktionen im Benutzermodus mithilfe von GDB und strace.
- Es wurde eine neue Implementierung des ext2-Dateisystems vorgeschlagen und ein NVMe-Treiber hinzugefügt. Dem virtuellen Dateisystem (VFS) wurde ein Dentry-Mechanismus (Verzeichniseintrag) hinzugefügt und die Implementierung des Seitencaches überarbeitet.
- Die Asterinas NixOS-Distribution ist in der Lage, Codex, QEMU und Firefox auszuführen.
- Systemaufrufe pidfd_getfd, pidfd_send_signal, pivot_root hinzugefügt.
- Anfangsbuchstaben hinzugefügt IPv6-Unterstützung.
- Es wurde ein Berechtigungssystem zur Delegierung einzelner privilegierter Operationen implementiert.
- Erste Implementierung des LSM-Frameworks hinzugefügt (Linux Sicherheitsmodule).
Source: opennet.ru
