Das Kerla-Projekt entwickelt einen Linux-kompatiblen Kernel in Rust.

Im Rahmen des Kerla-Projekts wird ein Betriebssystem-Kernel entwickelt, der in Rust geschrieben ist. Der neue Kernel ist ursprünglich darauf ausgerichtet, Kompatibilität mit dem Linux-Kernel auf ABI-Ebene zu gewährleisten, was es ermöglicht, unmodifizierte Executables, die für Linux kompiliert wurden, in einer Kerla-basierten Umgebung auszuführen. Der Code wird unter den Lizenzen Apache 2.0 und MIT verbreitet. Das Projekt wird von dem japanischen Entwickler Seiya Nuta vorangetrieben, der bekannt ist für die Erstellung des Mikrokernels Resea, der in C geschrieben ist.

In der aktuellen Entwicklungsphase kann Kerla nur auf Systemen mit x86_64-Architektur betrieben werden und bietet grundlegende Systemaufrufe wie write, stat, mmap, pipe und poll. Es unterstützt Signale, unbenannte Pipes und Kontextwechsel. Für die Prozessverwaltung stehen die Aufrufe fork, wait4 und execve zur Verfügung. Zudem wird tty sowie Unterstützung für pseudoterminals (pty) bereitgestellt. Bislang werden initramfs (verwendet zum Mounten des Root-Dateisystems), tmpfs und devfs als Dateisysteme unterstützt. Ein Netzwerk-Stack mit Unterstützung für TCP- und UDP-Sockets, basierend auf der Smoltcp-Bibliothek, ist ebenfalls verfügbar.

Der Entwickler hat eine Boot-Umgebung vorbereitet, die in QEMU oder in virtuellen Maschine Firecracker mit dem virtio-net Treiber, über den Sie bereits per SSH eine Verbindung herstellen können. Als Systembibliothek wird musl verwendet, während die Benutzerutensilien von BusyBox stammen.

Das Kerla-Projekt entwickelt einen Linux-kompatiblen Kernel in Rust.

Auf Docker basiert ein Build-System, das es ermöglicht, eigene Boot-Initramfs mit dem Kerla-Kernel zu erstellen. Separat entwickelt werden eine Shell, die fish ähnelt, namens nsh, sowie der GUI-Stack Kazari, der auf dem Wayland-Protokoll basiert.

Das Kerla-Projekt entwickelt einen Linux-kompatiblen Kernel in Rust.

Die Verwendung der Programmiersprache Rust in Projekten reduziert die Anzahl der Fehler im Code, da sie Methoden des sicheren Programmierens verwendet und die Effizienz bei der Erkennung von Speicherproblemen erhöht. Rust gewährleistet die sichere Arbeit mit Speicher zur Compile-Zeit durch Referenzprüfungen, das Verfolgen des Eigentums an Objekten und die Berücksichtigung der Lebensdauer von Objekten (Gültigkeitsbereich), sowie durch die Bewertung der Korrektheit des Zugriffs auf den Speicher während der Codeausführung. Darüber hinaus bietet Rust Mittel, um vor Ganzzahlüberläufen zu schützen, erfordert die obligatorische Initialisierung von Variablenwerten vor der Nutzung, wendet das Konzept der Unveränderlichkeit (immutable) für Referenzen und Variablen standardmäßig an und bietet eine starke statische Typisierung zur Minimierung logischer Fehler sowie eine vereinfachte Verarbeitung von Eingabewerten durch Musterabgleich.

Für die Entwicklung von Low-Level-Komponenten wie dem Betriebssystemkern bietet Rust Unterstützung für Raw-Pointer, Struktur-Pakete, Inline-Assembler-Inserts und das Einbetten von Dateien in Assembler. Für die Arbeit ohne Bindung an die Standardbibliothek stehen separate Crate-Pakete zur Verfügung, um Operationen mit Strings, Vektoren und Bit-Flags auszuführen. Zu den Vorteilen gehören auch integrierte Tools zur Bewertung der Codequalität (Linter, rust-analyzer) und zur Erstellung von Unit-Tests, die nicht nur auf echter Hardware, sondern auch in QEMU ausgeführt werden können.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster