Eine Entwicklergruppe aus China entwickelt den Asterinas-Kernel, der in der Programmiersprache Rust geschrieben ist und für den Einsatz in allgemeinen Betriebssystemen vorgesehen ist. Um die Integration mit bereits entwickelten Systemkomponenten zu erleichtern, bietet der Kernel eine ABI (Application Binary Interface), die mit dem Linux-Kernel kompatibel ist und als dessen Ersatz verwendet werden kann. Der Code des Projekts wird unter der Lizenz MPL (Mozilla Public License) verbreitet.
Das Projekt entwickelt sich seit Herbst 2022 und hat bereits in diesem Jahr das Ziel, ein Niveau zu erreichen, das für eine breite Nutzung geeignet ist. virtuellen Maschinen mit der Architektur x86-64. Ab dem nächsten Jahr plant man, den Fokus auf die Implementierung der Unterstützung für Hardware und andere CPU-Architekturen zu verlagern. Zu den priorisierten Anwendungsbereichen gehören Systeme, die auf Linux ABI basieren, aber ein höheres Maß an Sicherheit erfordern. Zum Beispiel wird empfohlen, Asterinas zur Schaffung einer geschützten Systemumgebung zu verwenden. 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 das Risiko von Speicherfehlern zu verringern, die die Hauptquelle für die gefährlichsten Sicherheitsanfälligkeiten darstellen, wurde bei der Programmierung von Asterinas die Programmiersprache Rust und eine Strategie zur eingeschränkten Verwendung von Unsafe-Blöcken eingesetzt. Der Kernel wurde unter Verwendung der Framekernel-Architektur entwickelt, in der die Entwickler versucht haben, die Isolationsmöglichkeiten von Mikrokernen mit der Effizienz monolithischer Kerne zu verbinden.
Die Kernel-Komponenten in Asterinas werden im gemeinsamen Adressraum platziert, und die Sicherheit wird durch logische Trennung von sicherem Code und potenziell unsicherem Code erreicht. Der Kernel ist in zwei Teile gegliedert, die in Rust geschrieben sind: OS Framework und OS Services. In OS Services ist die Verwendung von Unsafe-Blöcken verboten, und alle Low-Level-Operationen, die die Ausführung von Code in Unsafe-Blöcken erfordern, wurden in OS Framework verlagert und sind nur über eine High-Level-API zugänglich. Alle Systemaufrufe, Dateisysteme und Treiber werden auf der Ebene von OS Services umgesetzt und dürfen keine Unsafe-Blöcke enthalten.
Bei der Entwicklung von Systemdiensten und Kernmodulen wird empfohlen, das OSDK (Operating System Development Kit) zu verwenden, das das Dienstprogramm cargo-osdk zur Erstellung, Kompilierung, Testung und Ausführung von Betriebssystemkomponenten bereitstellt. Für Entwickler wurde ein Satz von Bibliotheken OSTD (Operating System Standard Library) vorbereitet, der eine Bearbeitung der Standardbibliotheken Rust (crate std) darstellt, die für die Verwendung in Betriebssystemkomponenten angepasst wurde.
Quelle: opennet.ru
