Kerla-projektet utvecklar en Linux-kompatibel kärna på språket Rust

Kerla-projektet utvecklar en operativsystemkärna skriven på språket Rust. Den nya kärnan är initialt fokuserad på att tillhandahålla kompatibilitet med Linux-kärnan på ABI-nivå, vilket gör att omodifierade körbara filer kompilerade för Linux kan köras i en Kerla-baserad miljö. Koden distribueras under Apache 2.0 och MIT-licenserna. Projektet utvecklas av den japanska utvecklaren Seiya Nuta, känd för att skapa mikrokärnoperativsystemet Resea, skrivet på C-språket.

I sitt nuvarande utvecklingsskede kan Kerla endast köra på x86_64-system och implementerar grundläggande systemanrop som skriv, stat, mmap, pipe och poll, stöder signaler, namnlösa pipes och kontextväxlar. Samtal som fork, wait4 och execve tillhandahålls för att styra processer. Det finns stöd för tty och pseudoterminaler (pty). De filsystem som för närvarande stöds är initramfs (används för att montera rotfilsystemet), tmpfs och devfs. En nätverksstack med stöd för TCP- och UDP-sockets tillhandahålls, implementerad baserat på smoltcp-biblioteket.

Utvecklaren har förberett en startmiljö som körs i QEMU eller i den virtuella Firecracker-maskinen med virtio-net-drivrutinen, som du redan kan ansluta till via SSH. musl används som ett systembibliotek och BusyBox används som användarverktyg.

Kerla-projektet utvecklar en Linux-kompatibel kärna på språket Rust

Ett Docker-baserat byggsystem har förberetts som låter dig skapa dina egna boot-initramfs med Kerla-kärnan. Separat utvecklas nsh-mjukvaruskalet som liknar fish och Kazari GUI-stacken baserad på Wayland-protokollet.

Kerla-projektet utvecklar en Linux-kompatibel kärna på språket Rust

Genom att använda Rust-språket i ett projekt kan du minska antalet fel i koden genom att använda säkra programmeringstekniker och öka effektiviteten för att identifiera problem när du arbetar med minne. Rust upprätthåller minnessäkerheten vid kompilering genom referenskontroll, objektägande och objektlivstidsspårning (scopes) och genom att utvärdera riktigheten av minnesåtkomster under körning. Dessutom ger Rust skydd mot heltalsspill, kräver att variabelvärden initieras före användning, upprätthåller konceptet med oföränderliga referenser och variabler som standard, erbjuder stark statisk typning för att minimera logiska fel och förenklar hanteringen av ingångsvärden tack vare mönstermatchning..

För utveckling av lågnivåkomponenter, såsom OS-kärnan, tillhandahåller Rust stöd för råpekare, strukturpackning, assembler inline-inlägg och inbäddning av assemblerfiler. För att fungera utan att vara bunden till standardbiblioteket finns det separata lådapaket för att utföra operationer med strängar, vektorer och bitflaggor. En annan fördel är de inbyggda verktygen för att bedöma kodkvalitet (linter, rostanalysator) och skapa enhetstester som inte bara kan köras på riktig hårdvara utan även i QEMU.

Källa: opennet.ru

Lägg en kommentar