Nach achtjĂ€hriger Entwicklung wurde das Projekt Muen 1.0 veröffentlicht, das einen Separation Kernel entwickelt. Die Fehlerfreiheit des Quellcodes wurde durch mathematische Methoden der formalen Verifizierung der ZuverlĂ€ssigkeit bestĂ€tigt. Der Kernel ist fĂŒr die Architektur x86_64 verfĂŒgbar und kann in sicherheitskritischen Systemen eingesetzt werden, die ein hohes MaĂ an ZuverlĂ€ssigkeit und Garantie fĂŒr Störungsfreiheit erfordern. Der Quellcode des Projekts ist in der Programmiersprache Ada und dessen verifizierbarem Dialekt SPARK 2014 geschrieben. Der Code wird unter der Lizenz GPLv3 verbreitet.
Der Separation Kernel ist ein Mikrokernel, der eine Umgebung fĂŒr die AusfĂŒhrung isolierter Komponenten bereitstellt, deren Interaktion streng durch festgelegte Regeln geregelt ist. Die Isolation basiert auf der Verwendung der Intel VT-x Virtualisierungs-Extensions und umfasst auch Schutzmechanismen zur Verhinderung versteckter KommunikationskanĂ€le. Im Vergleich zu anderen Mikrokernen ist der Separation Kernel minimalistischer und stabiler, was die Anzahl möglicher Fehlerszenarien verringert.
Der Kernel lĂ€uft im Root-Modus VMX Ă€hnlich wie ein Hypervisor, wĂ€hrend alle anderen Komponenten im Non-Root-Modus VMX Ă€hnlich wie Gastsysteme ausgefĂŒhrt werden. Der Zugriff auf die Hardware erfolgt ĂŒber die Intel VT-d DMA-Extensions und Interrupt-Remapping, was die sichere Bindung von PCI-GerĂ€ten an unter Muen ausgefĂŒhrte Komponenten ermöglicht.

Die Möglichkeiten von Muen beinhalten die UnterstĂŒtzung von Mehrkernsystemen, verschachtelten Seitentabellen (EPT, Extended Page Tables), MSI (Message Signaled Interrupts), und Seitenattributtabellen (PAT, Page Attribute Table). Muen bietet auĂerdem einen festen zyklischen Scheduler auf Basis des preemptiven Timers Intel VMX, ein kompaktes Runtime, das die Leistung nicht beeintrĂ€chtigt, ein Absturz-Audit-System, einen statischen Ressourcen-Zuweisungsmechanismus basierend auf Regeln, ein Ereignisverarbeitungssystem und Shared-Memory-KanĂ€le fĂŒr die Interaktion innerhalb der laufenden Komponenten.
Der Start von Muen-Komponenten mit 64-Bit-Maschinencode, 32-Bit- oder 64-Bit-Anwendungen in den Sprachen Ada und SPARK 2014 sowie virtuellen Maschinen mit Linux und eigenstĂ€ndigen "unikernel"-Systemen basierend auf MirageOS wird unterstĂŒtzt. virtuellen Maschinen, 64-bit Anwendungen in den Programmiersprachen Ada und SPARK 2014, virtuellen Maschinen mit Linux und eigenstĂ€ndigen «unikernel» basierend auf MirageOS.
Die wichtigsten Neuerungen in der Version Muen 1.0:
- Dokumente mit den Spezifikationen des Kernels (GerÀt und Architektur), des Systems (Systempolitiken, Tau0 und Werkzeuge) und der Komponenten wurden veröffentlicht, in denen alle Aspekte der Funktionsweise des Projekts dokumentiert sind.
- Das Tau0-Toolkit (Muen System Composer) wurde hinzugefĂŒgt, das eine Reihe von verifizierten Komponenten zur Erstellung von Systemabbildern und zur Entwicklung von Standarddiensten, die auf Muen laufen, beinhaltet. Zu den bereitgestellten Komponenten gehören der AHCI (SATA) Treiber, der Device Manager (DM), der Bootloader, der Systemmanager, das virtuelle Terminal usw.
- Der Linux-Treiber muenblock (Implementierung eines BlockgerĂ€ts, das ĂŒber gemeinsamen Speicher Muen funktioniert) wurde auf die Verwendung der API blockdev 2.0 umgestellt.
- Es wurden Werkzeuge zur Verwaltung des Lebenszyklus nativer Komponenten implementiert.
- Die Systemabbilder wurden auf die Verwendung von SBS (Signed Block Stream) und CSL (Command Stream Loader) umgestellt, um die IntegritĂ€t zu schĂŒtzen.
- Ein verifizierter AHCI-DRV-Treiber, geschrieben in SPARK 2014, wurde implementiert, der die Verbindung zu Speichermedien unterstĂŒtzt, die das ATA-Interface oder einzelne Festplattenpartitionen nutzen.
- Die UnterstĂŒtzung fĂŒr Unikernel von den Projekten MirageOS und Solo5 wurde verbessert.
- Das Toolkit fĂŒr die Programmiersprache Ada wurde auf die GNAT Community 2021-Version aktualisiert.
- Das System zur kontinuierlichen Integration wurde von dem Emulator Bochs auf verschachtelte Umgebungen QEMU/KVM umgestellt.
- In den Komponentenabbildern mit Linux wird der Linux-Kernel 5.4.66 verwendet.
Quelle: opennet.ru
