Maestro, ein Kernel und ein Unix-ähnliches Betriebssystem, das von Grund auf in Rust geschrieben wurde

Maestro

Maestro-Screenshot

Rust hat genug Popularität erlangt In einem solchen Ausmaß, dass es zu einer der Sprachen geworden ist, die als sekundäre Sprache in Linux und auch in andere Betriebssysteme integriert werden sollen, wie es bei Android der Fall ist, das bereits über einen Teil des Codes in Rust verfügt, und auch bei Windows hat unter anderem die Genehmigung erteilt.

Rust hat sich als robuste Sprache erwiesen und großes Vertrauen geschaffen Einige Betriebssysteme wurden sogar mit dieser Programmiersprache erstellt und um nur einige zu nennen: Redox, Wir haben auch von Grund auf neu geschriebene Kernel, z Kerla oder der darin verwendete Kernel Satellit, den China kürzlich gestartet hat.

Der Grund, dies zu erwähnen, ist, dass ich kürzlich auf eine Neuigkeit gestoßen bin, die meine Aufmerksamkeit erregt hat, und das ist es Es wurde ein Projekt vorgestellt, in dem ein in Rust geschriebener Kernel entwickelt wird und das teilweise mit Linux kompatibel ist.

Der Name dieses Projekts ist "Lehrer" und wie erwähnt, ist ein in Rust geschriebener Unix-ähnlicher Kernel, der eine Teilmenge von Systemaufrufen des Linux-Kernels implementiert ausreichend, um Standardarbeitsumgebungen zu schaffen. Daher ist das „Maestro“-Projekt nichts Neues, da der Entwickler erwähnt, dass das Projekt im Jahr 2018 geboren wurde, es damals jedoch in C geschrieben war und aufgrund der unterschiedlichen Vorteile und Eigenschaften von Rust das Projekt neu geschrieben wurde null.

Auf der Projektseite Die Gründe für die Änderung werden beschrieben:

In diesem Moment beschloss ich, zu Rust (meinem ersten Projekt in dieser Sprache) zu wechseln, was mehrere Vorteile mit sich brachte:

  • Starten Sie das Projekt von vorne und nutzen Sie dabei die Lehren aus früheren Fehlern.
  • Seien Sie etwas innovativer, als nur einen Linux-ähnlichen Kernel in C zu schreiben. Schließlich verwenden Sie zu diesem Zeitpunkt einfach Linux.
  • Nutzen Sie die Sicherheit der Rust-Sprache, um einige Schwierigkeiten bei der Kernel-Programmierung auszunutzen. Durch die Verwendung des Rust-Schreibsystems können Sie einen Teil der Verantwortung für die Speichersicherheit vom Programmierer auf den Compiler übertragen.

Bei der Kernel-Entwicklung ist das Debuggen aus mehreren Gründen sehr schwierig:

  • Dokumentation ist oft schwer zu finden und BIOS-Implementierungen können fehlerhaft sein (häufiger als Sie denken).
  • Beim Booten hat der Kernel vollen Zugriff auf den Speicher und kann dort schreiben, wo er nicht hin soll (z. B. seinen eigenen Code).
  • Die Fehlerbehebung bei Speicherlecks ist nicht einfach. Werkzeuge wie Valgrind können nicht verwendet werden.
  • gdb kann mit QEMU und VMWare verwendet werden, aber der Kernel verhält sich möglicherweise anders, wenn er auf einem anderen Emulator oder einer anderen virtuellen Maschine ausgeführt wird. Außerdem unterstützen diese Emulatoren möglicherweise kein GDB (z. B. VirtualBox).
  • Einige Funktionen fehlen in der GDB-Unterstützung in QEMU oder VMWare und GDB kann manchmal sogar abstürzen

Im Verhältnis zu Charakteristisch für das Projekt ist, dass der Kernel monolithisch ist und wird derzeit nur auf x86-Systemen im 32-Bit-Modus unterstützt. Die Kernel-Codebasis umfasst etwa 49 Zeilen und ist sowohl auf realer Hardware als auch in virtualisierten Umgebungen wie QEMU oder VirtualBox ausführbar.

In der aktuellen Entwicklung von «Maestro» 31 % wurden umgesetzt (135 von 437) von Linux-Systemaufrufen. Das ist genug, um eine Konsolenumgebung basierend auf Bash und der Musl-Standard-C-Bibliothek zu laden. Darüber hinaus können in der Maestro-basierten Umgebung einige Dienstprogramme aus der GNU-Coreutils-Suite und Basispaketen von jedem Unix-System ausgeführt werden. Derzeit wird an der Implementierung eines Netzwerk-Stacks und an der Entwicklung eines gearbeitet

Zwischen den Die verfügbaren Funktionen von Maestro stechen hervor die folgende::

  • Controller für PS/2-Tastatur und -Terminal mit Textmodus und teilweiser Unterstützung für ANSI-Sequenzen.
  • Speicherzuweisungssystem mit Unterstützung für virtuellen Speicher.
  • Aufgabenplaner basierend auf dem Round-Robin-Algorithmus mit Unterstützung für POSIX-Signale.
  • Definition von PCI-Geräten.
  • IDE/PATA-Controller.
  • Ext2-Dateisystem.
  • Unterstützung für die virtuellen Dateisysteme /tmp und /proc.
  • Möglichkeit zum Mounten von FS-, MBR- und GPT-Festplattenpartitionen.
  • initramfs-Unterstützung.
  • RTC-Controller für Timer und genaue Zeit.
  • Unterstützung für das Laden von Kernelmodulen.
  • Möglichkeit, ausführbare Dateien im ELF-Format auszuführen.

Für Interesse daran, etwas mehr über das Projekt zu erfahren, Sie können die Details überprüfen im folgenden Link.  Diejenigen, die sich für den Projektcode interessieren, sollten wissen, dass dies der Fall ist vertrieben unter der MIT-Lizenz. 


Schreiben Sie den ersten Kommentar

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.