Maestro, een kernel en een Unix-achtig besturingssysteem helemaal opnieuw geschreven in Rust

Maestro

Maestro-screenshot

Rust heeft voldoende populariteit verworven in die mate dat het een van de talen is geworden die zijn gekozen om te worden geïntegreerd als secundaire taal in Linux, maar ook in andere besturingssystemen, zoals het geval is met Android, dat al een deel van de code in Rust heeft, en Windows dat ook heeft onder meer de goedkeuring gegeven.

Roest heeft bewezen een robuuste taal te zijn en zoveel vertrouwen te hebben gegenereerd Sommige besturingssystemen zijn zelfs met deze programmeertaal gemaakt en om er maar een paar te noemen: Redox, We hebben ook kernels die helemaal opnieuw zijn geschreven, zoals Kerla of de kernel die wordt gebruikt in de satelliet die China onlangs heeft gelanceerd.

De reden dat ik dit vermeld, is dat ik onlangs een nieuwsbericht tegenkwam dat mijn aandacht trok en dat is dat Er werd een project gepresenteerd waarin een in Rust geschreven kernel werd ontwikkeld en die gedeeltelijk compatibel is met Linux.

De naam van dit project is "Docent" en zoals gezegd, is een Unix-achtige kernel geschreven in Rust en implementeert een subset van systeemaanroepen vanuit de Linux-kernel voldoende om standaard werkomgevingen te creëren. Als zodanig is het "Maestro"-project niet iets nieuws, aangezien de ontwikkelaar vermeldt dat het project in 2018 is geboren, maar destijds in C is geschreven en vanwege de verschillende voordelen en kenmerken van Rust is het project herschreven van nul.

Op de projectpagina De redenen voor de wijziging worden beschreven:

Op dat moment besloot ik over te stappen naar Rust (mijn eerste project in deze taal), wat verschillende voordelen met zich meebracht:

  • Start het project opnieuw vanaf het begin en gebruik de lessen die zijn geleerd uit eerdere fouten.
  • Wees iets innovatiever dan alleen maar een Linux-achtige kernel in C schrijven. Gebruik destijds immers gewoon Linux.
  • Gebruik de veiligheid van de Rust-taal om te profiteren van enkele kernelprogrammeerproblemen. Door het Rust-schrijfsysteem te gebruiken, kunt u een deel van de verantwoordelijkheid voor de geheugenveiligheid overdragen van de programmeur naar de compiler.

Bij kernelontwikkeling is het debuggen om verschillende redenen erg moeilijk:

  • Documentatie is vaak moeilijk te vinden en BIOS-implementaties kunnen fouten bevatten (vaker dan u denkt).
  • Bij het opstarten heeft de kernel volledige toegang tot het geheugen en kan schrijven waar dat niet zou moeten gebeuren (zijn eigen code bijvoorbeeld).
  • Het oplossen van geheugenlekken is niet eenvoudig. Gereedschappen zoals valgrind kunnen niet worden gebruikt.
  • gdb kan worden gebruikt met QEMU en VMWare, maar de kernel kan zich anders gedragen als deze op een andere emulator of virtuele machine wordt uitgevoerd. Bovendien ondersteunen deze emulators mogelijk geen gdb (bijvoorbeeld VirtualBox).
  • Sommige functies ontbreken in gdb-ondersteuning in QEMU of VMWare en gdb kan soms zelfs crashen

Wat betreft kenmerken van het project valt op dat de Kernel monolithisch is en wordt momenteel alleen ondersteund op x86-systemen in 32-bits modus. De kernelcodebasis beslaat ongeveer 49 regels en kan zowel op echte hardware als in gevirtualiseerde omgevingen, zoals QEMU of VirtualBox, worden uitgevoerd.

In de huidige ontwikkeling van «Maestro», 31% is geïmplementeerd (135 van 437) van Linux-systeemaanroepen. Dit is genoeg om een ​​consoleomgeving te laden op basis van Bash en de Musl standaard C-bibliotheek. Bovendien kan de op Maestro gebaseerde omgeving enkele hulpprogramma's uit de GNU coreutils-suite en basispakketten uitvoeren vanaf elk Unix-systeem. Momenteel wordt er gewerkt aan de implementatie van een netwerkstack en wordt er ook gewerkt aan de ontwikkeling van een

Onder de De beschikbare functies van Maestro vallen op het volgende::

  • Controllers voor PS/2-toetsenbord en terminal met tekstmodus en gedeeltelijke ondersteuning voor ANSI-sequenties.
  • Geheugentoewijzingssysteem met ondersteuning voor virtueel geheugen.
  • Taakplanner gebaseerd op het round-robin-algoritme met ondersteuning voor POSIX-signalen.
  • Definitie van PCI-apparaten.
  • IDE/PATA-controller.
  • Ext2-bestandssysteem.
  • Ondersteuning voor /tmp en /proc virtuele bestandssystemen.
  • Mogelijkheid om FS-, MBR- en GPT-schijfpartities te mounten.
  • initramfs-ondersteuning.
  • RTC-controller voor timer en nauwkeurige tijd.
  • Ondersteuning voor het laden van kernelmodules.
  • Mogelijkheid om uitvoerbare bestanden in ELF-formaat uit te voeren.

Voor geïnteresseerd om iets meer over het project te weten te komen, kunt u de details controleren In de volgende link.  Degenen die geïnteresseerd zijn in de projectcode, moeten weten dat dit zo is gedistribueerd onder de MIT-licentie.