Kerla-prosjektet utvikler en Linux-kompatibel kjerne på Rust-språket

Kerla-prosjektet utvikler en operativsystemkjerne skrevet på Rust-språket. Den nye kjernen er i utgangspunktet fokusert på å gi kompatibilitet med Linux-kjernen på ABI-nivå, som vil tillate umodifiserte kjørbare filer kompilert for Linux å kjøre i et Kerla-basert miljø. Koden distribueres under Apache 2.0- og MIT-lisensene. Prosjektet utvikles av den japanske utvikleren Seiya Nuta, kjent for å lage mikrokjerneoperativsystemet Resea, skrevet på C-språket.

På det nåværende utviklingsstadiet kan Kerla bare kjøre på x86_64-systemer og implementerer grunnleggende systemanrop som skrive, stat, mmap, pipe og poll, støtter signaler, navnløse rør og kontekstbrytere. Samtaler som fork, wait4 og execve er gitt for å kontrollere prosesser. Det er støtte for tty og pseudo-terminaler (pty). De for øyeblikket støttede filsystemene er initramfs (brukes til å montere rotfilsystemet), tmpfs og devfs. En nettverksstabel med støtte for TCP- og UDP-sockets er gitt, implementert basert på smoltcp-biblioteket.

Utvikleren har utarbeidet et oppstartsmiljø som kjører i QEMU eller i den virtuelle Firecracker-maskinen med virtio-net-driveren, som du allerede kan koble til via SSH. musl brukes som et systembibliotek, og BusyBox brukes som brukerverktøy.

Kerla-prosjektet utvikler en Linux-kompatibel kjerne på Rust-språket

Et Docker-basert byggesystem er utarbeidet som lar deg lage dine egne oppstartsinitramfs med Kerla-kjernen. Separat utvikles nsh-programvareskallet som ligner på fisk og Kazari GUI-stabelen basert på Wayland-protokollen.

Kerla-prosjektet utvikler en Linux-kompatibel kjerne på Rust-språket

Ved å bruke Rust-språket i et prosjekt kan du redusere antall feil i koden ved å bruke sikre programmeringsteknikker og øke effektiviteten til å identifisere problemer når du arbeider med minne. Rust håndhever minnesikkerhet ved kompilering gjennom referansesjekking, objekteierskap og objektlevetidssporing (scopes), og ved å evaluere riktigheten av minnetilganger under kjøring. I tillegg gir Rust beskyttelse mot heltallsoverløp, krever at variabelverdier initialiseres før bruk, håndhever konseptet med uforanderlige referanser og variabler som standard, tilbyr sterk statisk skriving for å minimere logiske feil, og forenkler håndteringen av inngangsverdier takket være mønstertilpasning. .

For utvikling av komponenter på lavt nivå, som OS-kjernen, gir Rust støtte for råpekere, strukturpakking, inline-innlegg for assembler og innebygging av assembler-filer. For å fungere uten å være bundet til standardbiblioteket, finnes det separate kassepakker for å utføre operasjoner med strenger, vektorer og bitflagg. En annen fordel er de innebygde verktøyene for å vurdere kodekvalitet (linter, rust-analysator) og lage enhetstester som kan kjøres ikke bare på ekte maskinvare, men også i QEMU.

Kilde: opennet.ru

Legg til en kommentar