Projekt Kerla vyvíjí jádro kompatibilní s Linuxem v Rustu

Projekt Kerla vyvíjí jádro operačního systému napsané v Rustu. Nové jádro je zpočátku orientováno na zajištění kompatibility s linuxovým jádrem na úrovni ABI, což umožní běh neupravených binárních souborů vytvořených pro Linux v prostředí založeném na Kerla. Kód je distribuován pod licencemi Apache 2.0 a MIT. Projekt vyvíjí japonský vývojář Seiya Nuta, známý pro vytvoření operačního systému mikrokernelu Resea napsaného v C.

V současné fázi vývoje může Kerla běžet pouze na systémech x86_64 a implementuje základní systémová volání, jako jsou write, stat, mmap, pipe a poll, podporuje signály, nepojmenované kanály a kontextové přepínače. Pro řízení procesů jsou k dispozici volání jako fork, wait4 a execve. Existuje podpora pro tty a pseudoterminály (pty). Ze souborových systémů jsou stále podporovány initramfs (používá se k připojení kořenového FS), tmpfs a devfs. Síťový zásobník je vybaven podporou pro TCP a UDP sokety, implementované na základě knihovny smoltcp.

Vývojář připravil bootovatelné prostředí, které běží v QEMU nebo ve virtuálním stroji Firecracker s ovladačem virtio-net, ke kterému se již můžete připojit přes SSH. Musl se používá jako systémová knihovna a BusyBox se používá jako uživatelské nástroje.

Projekt Kerla vyvíjí jádro kompatibilní s Linuxem v Rustu

Na základě Dockeru byl připraven systém sestavení, který umožňuje vytvářet vlastní bootovací initramfs s jádrem Kerla. nsh shell podobný rybě a zásobník Kazari GUI založený na protokolu Wayland jsou vyvíjeny samostatně.

Projekt Kerla vyvíjí jádro kompatibilní s Linuxem v Rustu

Použití jazyka Rust v projektu snižuje počet chyb v kódu použitím technik bezpečného kódování a zlepšuje efektivitu identifikace problémů při práci s pamětí. Paměťově bezpečná manipulace je v Rustu zajištěna v době kompilace prostřednictvím kontroly referencí, sledováním vlastnictví objektu a životnosti objektu (rozsahu) a také prostřednictvím vyhodnocování správnosti přístupu do paměti během provádění kódu. Rust navíc poskytuje ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, standardně aplikuje koncept neměnných (neměnných) referencí a proměnných, nabízí silné statické typování pro minimalizaci logických chyb, zjednodušuje zpracování vstupních hodnot díky zařízení pro přizpůsobení vzorů..

Pro vývoj nízkoúrovňových komponent, jako je jádro operačního systému, poskytuje Rust podporu pro nezpracované ukazatele, sbalení struktury, inline inserty assembleru a vkládání souborů assembleru. Chcete-li pracovat bez vazby na standardní knihovnu, existují samostatné balíčky přepravek pro provádění operací s řetězci, vektory a bitovými příznaky. Mezi výhody patří i vestavěné nástroje pro hodnocení kvality kódu (linter, rust-analyzer) a vytváření unit testů, které lze provozovat nejen na reálném hardwaru, ale i v QEMU.

Zdroj: opennet.ru

Přidat komentář