Przedstawiono projekt dotyczący opracowania lekkiego rdzenia Unix-podobnego w języku Rust, implementującego podzbiór wywołań systemowych rdzenia Linux, wystarczający do tworzenia typowych środowisk roboczych. Projekt został stworzony w 2018 roku i początkowo używał języka C, jednak w 2020 roku został całkowicie rozpoczęty od nowa z uwzględnieniem zdobytego doświadczenia i przeszedł na Rust, aby zredukować prawdopodobieństwo popełnienia błędów związanych z zarządzaniem pamięcią. Kod rdzenia jest udostępniany na licencji MIT. Oprócz rdzenia, projekt w języku Rust obejmuje również rozwój X11,serwer, menedżera pakietów, bootloader, instalator, zbiory narzędzi oraz inne komponenty potrzebne do budowy systemu operacyjnego.
Rdzeń ma architekturę monolityczną i obecnie wspiera jedynie systemy x86 w trybie 32-bitowym. Baza kodu rdzenia liczy 48,8 tysiąca linii kodu (dla porównania, w jądrze Linux znajduje się 33 miliony linii kodu). Możliwy jest start w QEMU, VirtualBox lub na sprzęcie. Na obecnym etapie rozwoju w Maestro zaimplementowano 31% (135 z 437) wywołań systemowych Linux, co wystarcza do uruchomienia konsolowego środowiska opartego na bashu oraz standardowej biblioteki C Musl. W środowisku opartym na Maestro mogą być również uruchamiane niektóre narzędzia z pakietu GNU coreutils, takie jak ls, cat, mkdir, rm, rmdir, uname i whoami.

Wśród dostępnych możliwości Maestro:
- Sterowniki dla klawiatury PS/2 i terminala z trybem tekstowym oraz częściowym wsparciem dla sekwencji ANSI.
- System przydzielania pamięci z obsługą pamięci wirtualnej.
- Szeregowiec zadań oparty na algorytmie round-robin z obsługą sygnałów POSIX.
- Wykrywanie urządzeń PCI.
- Sterownik IDE/PATA.
- System plików Ext2.
- Wsparcie dla wirtualnych systemów plików /tmp i /proc.
- Wsparcie dla montowania systemów plików i partycji dyskowych MBR i GPT.
- Wsparcie dla initramfs.
- Sterownik RTC dla timera i dokładnego czasu.
- Wsparcie dla ładowania modułów jądra.
- Możliwość uruchamiania plików wykonywalnych w formacie ELF.
Obecnie prowadzone są prace nad stworzeniem stosu sieciowego, po ukończeniu którego planowane jest wprowadzenie wsparcia dla bezpośredniego mapowania plików w pamięci i bibliotek współdzielonych.
Źródło: opennet.ru
