Kerla-projektet udvikler en Linux-kompatibel kerne i Rust

Kerla-projektet udvikler en operativsystemkerne skrevet på Rust-sproget. Den nye kerne er oprindeligt fokuseret på at give kompatibilitet med Linux-kernen på ABI-niveau, hvilket vil tillade umodificerede eksekverbare filer, der er kompileret til Linux, at køre i et Kerla-baseret miljø. Koden distribueres under Apache 2.0- og MIT-licenserne. Projektet udvikles af den japanske udvikler Seiya Nuta, kendt for at skabe mikrokerneoperativsystemet Resea, skrevet på C-sproget.

På dets nuværende udviklingstrin kan Kerla kun køre på x86_64-systemer og implementerer grundlæggende systemopkald som skrive, stat, mmap, pipe og poll, understøtter signaler, unavngivne rør og kontekstswitche. Opkald som fork, wait4 og execve leveres til at kontrollere processer. Der er understøttelse af tty og pseudo-terminaler (pty). De aktuelt understøttede filsystemer er initramfs (bruges til at montere rodfilsystemet), tmpfs og devfs. En netværksstak med understøttelse af TCP- og UDP-sockets er tilvejebragt, implementeret baseret på smoltcp-biblioteket.

Udvikleren har udarbejdet et boot-miljø, der kører i QEMU eller i den virtuelle Firecracker-maskine med virtio-net-driveren, som du allerede kan oprette forbindelse til via SSH. musl bruges som et systembibliotek, og BusyBox bruges som brugerværktøjer.

Kerla-projektet udvikler en Linux-kompatibel kerne i Rust

Et Docker-baseret byggesystem er blevet forberedt, der giver dig mulighed for at oprette dine egne boot-initramfs med Kerla-kernen. Separat udvikles nsh-softwareskallen, der ligner fisk, og Kazari GUI-stakken baseret på Wayland-protokollen.

Kerla-projektet udvikler en Linux-kompatibel kerne i Rust

Brug af Rust-sproget i et projekt giver dig mulighed for at reducere antallet af fejl i koden ved at bruge sikre programmeringsteknikker og øge effektiviteten af ​​at identificere problemer, når du arbejder med hukommelse. Rust håndhæver hukommelsessikkerhed ved kompilering gennem referencekontrol, objektejerskab og objektlevetidssporing (scopes) og ved at evaluere korrektheden af ​​hukommelsesadgange under kørsel. Derudover giver Rust beskyttelse mod heltalsoverløb, kræver at variabelværdier initialiseres før brug, håndhæver konceptet med uforanderlige referencer og variabler som standard, tilbyder stærk statisk skrivning for at minimere logiske fejl og forenkler håndteringen af ​​inputværdier takket være mønstermatchning..

Til udvikling af komponenter på lavt niveau, såsom OS-kernen, giver Rust understøttelse af rå pointere, strukturpakning, assembler-inline-indsættelser og indlejring af assembler-filer. For at arbejde uden at være bundet til standardbiblioteket er der separate kassepakker til at udføre operationer med strenge, vektorer og bitflag. En anden fordel er de indbyggede værktøjer til at vurdere kodekvalitet (linter, rust-analyzer) og skabe enhedstests, der ikke kun kan køres på rigtig hardware, men også i QEMU.

Kilde: opennet.ru

Tilføj en kommentar