Nach acht Jahren Entwicklung wurde die Version 1.0 des Projekts Muen veröffentlicht, das einen Separation Kernel entwickelt, dessen Quelltexte mithilfe mathematischer Methoden zur formalen Verifikation von ZuverlĂ€ssigkeit auf Fehlerfreiheit ĂŒberprĂŒft wurden. 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 Garantien gegen AusfĂ€lle erfordern. Die Quelltexte des Projekts sind in der Programmiersprache Ada und ihrem verifizierbaren Dialekt SPARK 2014 geschrieben. Der Code wird unter der GPLv3-Lizenz vertrieben.
Der Separation Kernel ist ein Mikrokernel, der eine Umgebung fĂŒr die AusfĂŒhrung isolierter Komponenten bereitstellt, deren Interaktionen streng durch festgelegte Regeln geregelt sind. Die Isolation basiert auf der Nutzung von Virtualisierungs-Extensions wie Intel VT-x und umfasst Mechanismen zum Schutz gegen die Bildung versteckter KommunikationskanĂ€le. Der Separation Kernel ist im Vergleich zu anderen Mikrokernen minimaler und statischer, was die Anzahl der Situationen verringert, die zu einem Ausfall fĂŒhren können.
Der Kernel wird im VMX-Ring 0 ausgefĂŒhrt, Ă€hnlich wie ein Hypervisor, wĂ€hrend alle anderen Komponenten im VMX-Ring 1 ausgefĂŒhrt werden, Ă€hnlich wie Gastbetriebssysteme. Der Zugriff auf die Hardware erfolgt unter Verwendung von Intel VT-d DMA-Extensions und der Umleitung von Interrupts, was die sichere Bindung von PCI-GerĂ€ten an unter Muen laufende Komponenten ermöglicht.

Zu den FĂ€higkeiten von Muen zĂ€hlen die UnterstĂŒtzung von Mehrkernsystemen, Nested Page Tables (EPT), MSI (Message Signaled Interrupts) und Page Attribute Tables (PAT). Muen bietet auĂerdem einen festen, zyklischen Scheduler basierend auf dem preemptiven Timer von Intel VMX, ein kompaktes Runtime-System ohne LeistungseinbuĂen, ein Ăberwachungsmechanismus fĂŒr AbstĂŒrze, eine statische Ressourcen-Zuweisung basierend auf Regeln, ein Ereignisverarbeitungssystem und Shared Memory-KanĂ€le fĂŒr die Interaktion zwischen den laufenden Komponenten.
Die AusfĂŒhrung von Muen-Komponenten mit 64-Bit-Maschinen-Code, 32- oder 64-Bit-Anwendungen in den Sprachen Ada und SPARK 2014, virtuellen Maschinen mit Linux und selbstĂ€ndigen 'Unikernel'-Systemen auf Basis von MirageOS wird unterstĂŒtzt. virtuelle Maschinen, 64-Bit-Anwendungen in den Sprachen Ada und SPARK 2014, virtuellen Maschinen mit Linux und eigenstĂ€ndigen âUnikernelsâ basierend auf MirageOS.
Die wichtigsten Neuerungen, die mit der Veröffentlichung von Muen 1.0 eingefĂŒhrt wurden:
- Dokumente mit den Spezifikationen des Kernels (Architektur und Design), des Systems (Systemrichtlinien, Tau0 und Werkzeuge) und der Komponenten wurden veröffentlicht, in denen alle Aspekte der Projektarbeit dokumentiert sind.
- Das Tau0-Werkzeugset (Muen System Composer) wurde hinzugefĂŒgt, das eine Sammlung von verifizierten Komponenten zur Erstellung von Systemabbildern und zur Entwicklung typischer Dienste umfasst, die ĂŒber Muen ausgefĂŒhrt werden. Zu den bereitgestellten Komponenten gehören der AHCI-Treiber (SATA), der GerĂ€temanager (DM), der Bootloader, der Systemmanager, das virtuelle Terminal usw.
- Der Linux-Treiber muenblock (Implementierung eines BlockgerĂ€ts, das ĂŒber gemeinsam genutzten Speicher von Muen arbeitet) wurde auf die Verwendung der API blockdev 2.0 umgestellt.
- Werkzeuge zur Verwaltung des Lebenszyklus von nativen Komponenten wurden 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, der in der Sprache SPARK 2014 geschrieben wurde, wurde implementiert, der es ermöglicht, Speichermedien, die das ATA-Interface unterstĂŒtzen, oder einzelne Festplattenteile an die Komponenten anzuschlieĂen.
- Die UnterstĂŒtzung von Unikernels aus den Projekten MirageOS und Solo5 wurde verbessert.
- Das Werkzeugset fĂŒr die Programmiersprache Ada wurde auf die Version GNAT Community 2021 aktualisiert.
- Das System zur kontinuierlichen Integration wurde von dem Emulator Bochs auf die verschachtelten Umgebungen QEMU/KVM umgestellt.
- In den Linux-Komponentenabbildern wurde der Linux-Kernel 5.4.66 verwendet.
Quelle: opennet.ru
