Het project voor de ontwikkeling van een lichtgewicht Unix-achtig kernel in Rust is gepresenteerd en implementeert een subset van systeemaanroepen van de Linux-kernel, die voldoende is voor het creƫren van typische werkomgevingen. Het project werd in 2018 opgericht en gebruikte aanvankelijk de programmeertaal C, maar werd in 2020 volledig herstart vanaf nul, rekening houdend met de opgedane ervaring, en is overgestapt naar Rust om de kans op geheugenfouten te verminderen. De kernelcode wordt verspreid onder de MIT-licentie. Naast de kernel worden met Rust ook X11-server, een pakketbeheerder, een bootloader, een installer, hulpprogramma's en andere componenten ontwikkeld die nodig zijn voor het bouwen van een besturingssysteem.
De kernel heeft een monolithische architectuur en ondersteunt momenteel alleen x86-systemen in 32-bits modus. De codebasis van de kernel telt 48,8 duizend regels code (ter vergelijking: de Linux-kernel heeft 33 miljoen regels code). Het kan draaien in QEMU, VirtualBox of op fysieke hardware. In de huidige ontwikkelingsfase ondersteunt Maestro 31% (135 van de 437) systeemaanroepen van Linux, wat voldoende is om een consoleomgeving op basis van bash en de standaard C-bibliotheek Musl te laden. In de Maestro-omgeving kunnen ook enkele hulpprogramma's uit de GNU coreutils-suite worden uitgevoerd, zoals ls, cat, mkdir, rm, rmdir, uname en whoami.

Onder de beschikbare mogelijkheden van Maestro:
- Drivers voor PS/2-toetsel en terminal met tekstmodus en gedeeltelijke ondersteuning voor ANSI-sequenties.
- Een geheugentoewijzingssysteem dat virtueel geheugen ondersteunt.
- Een takenplanner op basis van het round-robin-algoritme met ondersteuning voor POSIX-signalen.
- Detectie van PCI-apparaten.
- IDE/PATA-driver.
- Ext2-bestandssysteem.
- Ondersteuning voor virtuele FS /tmp en /proc.
- Ondersteuning voor het mounten van FS en schijfpartities MBR en GPT.
- Ondersteuning voor initramfs.
- RTC-driver voor een timer en nauwkeurige tijd.
- Ondersteuning voor het laden van kernelmodules.
- Mogelijkheid om uitvoerbare bestanden in ELF-indeling uit te voeren.
Momenteel wordt er gewerkt aan de ontwikkeling van een netwerkstack, waarna ondersteuning voor directe geheugenmapping van bestanden en gedeelde bibliotheken zal worden gerealiseerd.
Bron: opennet.ru
