Projekt Kerla vyvíja Linux-kompatibilné jadro v jazyku Rust

V rámci projektu Kerla prebieha vývoj jadra operačného systému, napísaného v programovacom jazyku Rust. Nové jadro je od začiatku zamerané na zabezpečenie kompatibility s jadrom Linux na úrovni ABI, čo umožní spúšťanie nemodifikovaných spustiteľných súborov, zostavených pre Linux, v prostredí založenom na Kerla. Kód je distribuovaný pod licenciami Apache 2.0 a MIT. Projekt rozvíja japonský vývojár Seiya Nuta, známy vytvorením mikrojadrovej operačného systému Resea, napísaného v jazyku C.

V súčasnej fáze vývoja Kerla môže pracovať iba na systémoch s architektúrou x86_64 a implementuje základné systémové volania, ako write, stat, mmap, pipe a poll, podporuje signály, anonymné kanály a prechody kontextu. Na správu procesov sú k dispozícii také volania, ako fork, wait4 a execve. Existuje podpora pre tty a pseudoterminály (pty). Z aktuálnych súborových systémov sú zatiaľ podporované initramfs (používaný na montovanie koreňového FS), tmpfs a devfs. Poskytuje sa sieťový zásobník s podporou TCP a UDP soketov, implementovaný na báze knižnice smoltcp.

Vývojár pripravil zavádzacie prostredie, spúšťané v QEMU alebo v virtuálnom stroji Firecracker s ovládačom virtio-net, ku ktorému sa už dá pripojiť cez SSH. Ako systémová knižnica sa používa musl, a ako používateľské nástroje — BusyBox.

Projekt Kerla vyvíja Linux-kompatibilné jadro v jazyku Rust

Na báze Docker bola pripravená systémová zostava, umožňujúca vytvárať vlastné zavádzacie initramfs s jadrom Kerla. Samostatne sa rozvíja podobná shell ako fish nazvaná nsh a GUI-stack Kazari na báze protokolu Wayland.

Projekt Kerla vyvíja Linux-kompatibilné jadro v jazyku Rust

Použitie jazyka Rust v projekte umožňuje znížiť počet chýb v kóde vďaka použitiu metód bezpečného programovania a zvýšeniu efektivity odhaľovania problémov pri práci s pamäťou. Bezpečné zaobchádzanie s pamäťou je v Rust zabezpečené počas kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektov a zohľadňovania času existencie objektov (oblastí platnosti), ako aj prostredníctvom hodnotenia správnosti prístupu k pamäti počas vykonávania kódu. Okrem toho Rust poskytuje prostriedky na ochranu pred pretečením celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred ich použitím, aplikuje koncept nemennosti (immutable) referencií a premenných ako predvolené, ponúka silnú statickú typizáciu na minimalizáciu logických chýb a zjednodušuje spracovanie vstupných hodnôt vďaka prostriedkom na porovnávanie s predlohou.

Na vývoj nízkoúrovňových komponentov, ako je jadro operačného systému, Rust poskytuje podporu raw-pointerov, balenia štruktúr, inline assemblerových vložení a vkladania súborov v assembleri. Na prácu bez väzby na štandardnú knižnicu sú dostupné samostatné crate-podklady na vykonávanie operácií so reťazcami, vektormi a bitovými prápormi. Medzi výhody patrí aj zabudované nástroje na hodnotenie kvality kódu (linter, rust-analyzer) a tvorbu jednotkových testov, ktoré je možné spúšťať nielen na reálnom hardvéri, ale aj v QEMU.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster