Maestro, jádro a operační systém podobný Unixu napsaný od nuly v Rustu

Maestro

Snímek obrazovky Maestro

Rust si získal dostatečnou popularitu do takové míry, že se stal jedním z jazyků vybraných k integraci jako sekundární jazyk v Linuxu i v jiných operačních systémech, jako je případ Androidu, který již má část kódu v Rustu, Windows, které také udělil souhlas mimo jiné.

Rez se ukázal jako robustní jazyk a vyvolal takovou důvěru Některé operační systémy byly dokonce vytvořeny s tímto programovacím jazykem a abychom zmínili několik z nich: redox, Máme také jádra napsaná od začátku jako např Kerla nebo jádro použité v satelit, který Čína nedávno vypustila.

Důvodem pro zmínku je, že jsem nedávno narazil na novinku, která mě zaujala, a to je vše Byl představen projekt, ve kterém je vyvinuto jádro napsané v Rustu a který je částečně kompatibilní s Linuxem.

Název tohoto projektu je "Učitel" a jak bylo zmíněno, je unixové jádro napsané v Rustu implementující podmnožinu systémových volání z linuxového jádra dostatečné k vytvoření standardního pracovního prostředí. Projekt "Maestro" jako takový není žádnou novinkou, protože vývojář uvádí, že projekt se narodil v roce 2018, ale v té době byl napsán v C a vzhledem k různým výhodám a vlastnostem Rustu byl projekt přepsán z nula.

Na stránce projektu Důvody změny jsou popsány:

V tu chvíli jsem se rozhodl přejít na Rust (můj první projekt v tomto jazyce), což představovalo několik výhod:

  • Restartujte projekt od začátku s využitím poučení z předchozích chyb.
  • Buďte trochu inovativnější, než jen psát linuxové jádro v C. Koneckonců, v tu chvíli používejte Linux.
  • Použijte zabezpečení jazyka Rust, abyste využili některé potíže s programováním jádra. Použití systému zápisu Rust umožňuje přenést část odpovědnosti za bezpečnost paměti z programátora na kompilátor.

Při vývoji jádra je ladění velmi obtížné z několika důvodů:

  • Dokumentaci je často obtížné najít a implementace systému BIOS mohou být chybné (častěji, než si myslíte).
  • Při bootování má jádro plný přístup k paměti a může zapisovat tam, kam by nemělo (například svůj vlastní kód).
  • Řešení problémů s úniky paměti není snadné. Nástroje jako valgrind nelze použít.
  • gdb lze použít s QEMU a VMWare, ale jádro se může při spuštění na jiném emulátoru nebo virtuálním stroji chovat jinak. Tyto emulátory také nemusí podporovat gdb (např. VirtualBox).
  • Některé funkce chybí v podpoře gdb v QEMU nebo VMWare a gdb může někdy dokonce spadnout

Ve vztahu k Charakteristikou projektu je, že jádro je monolitické a je v současné době podporován pouze na systémech x86 v 32bitovém režimu. Základ kódu jádra pokrývá asi 49 tisíc řádků a je spustitelný jak na skutečném hardwaru, tak ve virtualizovaných prostředích, jako je QEMU nebo VirtualBox.

V současném vývoji «Maestro», 31 % bylo implementováno (135 z 437) systémových volání Linuxu. Tohle je dost k načtení konzolového prostředí založeného na Bash a standardní C knihovně Musl. Kromě toho může prostředí založené na Maestro spouštět některé nástroje ze sady GNU coreutils a základní balíky z jakéhokoli unixového systému. V současné době se pracuje na implementaci síťového zásobníku a pracuje se také na vývoji

Mezi Dostupné funkce Maestra vynikají následující::

  • Ovladače pro PS/2 klávesnici a terminál s textovým režimem a částečnou podporou ANSI sekvencí.
  • Systém přidělování paměti s podporou virtuální paměti.
  • Plánovač úloh založený na algoritmu round-robin s podporou signálů POSIX.
  • Definice PCI zařízení.
  • IDE/PATA řadič.
  • Souborový systém Ext2.
  • Podpora pro virtuální souborové systémy /tmp a /proc.
  • Možnost připojit diskové oddíly FS, MBR a GPT.
  • podpora initramfs.
  • RTC regulátor pro časovač a přesný čas.
  • Podpora pro načítání modulů jádra.
  • Schopnost spouštět spustitelné soubory ve formátu ELF.

pro zájem dozvědět se o projektu trochu více, můžete zkontrolovat podrobnosti Na následujícím odkazu.  Pokud jde o zájemce o kód projektu, měli by vědět, že je distribuován pod licencí MIT.