Die Veröffentlichung des Projekts Asterinas 0.19 wurde angekĂŒndigt, das den Kernel entwickelt, der in Rust geschrieben ist und fĂŒr den Einsatz in allgemeinen Betriebssystemen vorgesehen ist. Der Kernel bietet eine ABI (Application Binary Interface), die mit dem Linux-Kernel kompatibel ist und als Ersatz verwendet werden kann. Parallel dazu wird die Distribution Asterinas NixOS entwickelt, die den Asterinas-Kernel mit der Systemumgebung NixOS kombiniert. Der Code des Projekts wird seit 2022 entwickelt und unter der MPL (Mozilla Public License) lizenziert.
Aktuell sind im Kernel mehr als 240 Systemaufrufe von Linux implementiert. In der Distribution Asterinas NixOS wurde die FunktionalitĂ€t von mehr als 100 Paketen aus NixOS ĂŒber dem Asterinas-Kernel verifiziert. 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 vollstĂ€ndige UnterstĂŒtzung fĂŒr die Architektur x86-64, teilweise UnterstĂŒtzung fĂŒr ARM64, RISC-V 64 und x86-64 mit Isolation auf Basis von Intel TDX sowie erste UnterstĂŒtzung fĂŒr die Architektur LoongArch 64. Zu den priorisierten Anwendungsbereichen gehören Systeme, die auf Linux ABI basieren, jedoch ein höheres MaĂ an Sicherheit erfordern. Beispielsweise wird Asterinas zur Erstellung des Systemumfelds fĂŒr sichere Systeme empfohlen. virtuelle Maschinen, wobei Technologien wie ARM CCA, AMD SEV und Intel TDX zur Isolation verwendet werden, sowie auf der Host-Systemseite zur AusfĂŒhrung von Containern.
Um die Wahrscheinlichkeit von Speicherfehlern, die die Hauptursache der gefÀhrlichsten SicherheitsanfÀlligkeiten darstellen, zu verringern, wurde bei der Entwicklung von Asterinas die Programmiersprache Rust und die Taktik der begrenzten Verwendung von unsafe-Blöcken verwendet. Der Kernel basiert auf der framekernel-Architektur, die versucht, die IsolationsfÀhigkeiten von Mikrokernen mit der Effizienz monolithischer Kerne zu kombinieren.
Die Komponenten des Kernels in Asterinas sind im gemeinsamen Adressraum angeordnet, und die Sicherheit wird durch logische Trennung von sicherem Code und Code, in dem Sicherheitsprobleme auftreten können, erreicht. Der Kernel ist in zwei Teile unterteilt, die in Rust geschrieben sind: OS Framework und OS Services. In OS Services ist die Verwendung von unsafe-Blöcken untersagt, und alle niedrigstufigen Operationen, die die AusfĂŒhrung von Code in unsafe-Blöcken erfordern, wurden in das OS Framework ausgelagert und sind nur ĂŒber eine hochgradig abstrahierte API zugĂ€nglich. Alle Systemaufrufe, Dateisysteme und Treiber werden auf der Ebene von OS Services umgesetzt und dĂŒrfen keine unsafe-Blöcke enthalten.
FĂŒr die Entwicklung von Systemdiensten und Kernelmodulen wird das OSDK (Operating System Development Kit) bereitgestellt, das das Tool cargo-osdk enthĂ€lt, um Komponenten des Betriebssystems zu erstellen, zu kompilieren, zu testen und auszufĂŒhren. FĂŒr Entwickler steht ein Satz von OSTD (Operating System Standard Library) Bibliotheken zur VerfĂŒgung, der eine Edition der Standardbibliotheken von Rust (crate std) umfasst, die fĂŒr die Verwendung in Komponenten des Betriebssystems angepasst wurde.
Zu den Ănderungen in Asterinas 0.19 gehören:
- Das Subsystem DRM (Direct Rendering Manager), das GerĂ€t /dev/dri, die Schnittstelle KMS (kernel mode setting) und der Treiber âmodesettingâ wurden implementiert, sodass der Standard-Grafikstack auf Basis von X.Org Server und Mesa anstelle des zuvor verwendeten Treibers fbdev, derFramebuffer verwendet, gestartet werden kann.
- UnterstĂŒtzung fĂŒr die Architektur AArch64 (ARM64) wurde hinzugefĂŒgt, die nun als Hauptarchitektur fĂŒr die Entwicklung verwendet wird, neben x86-64. FĂŒr AArch64 wurde eine zweite UnterstĂŒtzungsebene implementiert, die die FunktionsfĂ€higkeit der Grundfunktionen, die PrĂŒfung im kontinuierlichen Integrationssystem und eine teilweise Abdeckung durch Tests umfasst.
- Die Arbeiten zur Anpassung von Asterinas zum Start als Gastsystem in VM-Containern von Kata Containers und Confidential Containers wurden fortgesetzt. Eine neue Implementierung von Overlayfs wurde vorgeschlagen, die erfolgreich die Standard-Test-Cases fĂŒr das Linux-Kernel-Dateisystem und xfstests besteht. Eine neue API fĂŒr das EinhĂ€ngen wurde implementiert. Der Code von virtio-fs wurde stabilisiert. UnterstĂŒtzung fĂŒr das Protokoll
direct-boot, das in QEMU, Cloud Hypervisor und Firecracker verwendet wird, wurde beschleunigt. virtuellen Maschinen, deren Speicher mit der Intel TDX-Technologie verschlĂŒsselt wird. - Im OSTD-Framework (Operating System Standard Library) wurde eine grundlegende API zur Erstellung minimalistischer Hypervisoren auf Basis von Intel VMX implementiert.
- UnterstĂŒtzung fĂŒr das Treiberentwicklungsmodell in der Programmiersprache Rust wurde hinzugefĂŒgt. Die Komponente aster-device mit Funktionen, die den Komponenten des Linux-Kernels mit grundlegenden Primitiven und Abstraktionen zur Treiberentwicklung Ă€hneln, wurde hinzugefĂŒgt, jedoch in Rust ohne unsafe-Code geschrieben.
- Die Möglichkeit der Selbstkompilierung (Self-Hosting) wurde sichergestellt â aus einer Umgebung mit dem Asterinas-Kernel und NixOS-Paketen kann jetzt der Asterinas-Kernel erstellt werden.
Quelle: opennet.ru
