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.