Het Kerla-project ontwikkelt een Linux-compatibele kernel in Rust

Het Kerla-project ontwikkelt een besturingssysteemkernel geschreven in Rust. De nieuwe kernel is in eerste instantie bedoeld om compatibiliteit te bieden met de Linux-kernel op ABI-niveau, waardoor ongewijzigde binaire bestanden die voor Linux zijn gebouwd, in een Kerla-gebaseerde omgeving kunnen draaien. De code wordt gedistribueerd onder de Apache 2.0- en MIT-licenties. Het project wordt ontwikkeld door de Japanse ontwikkelaar Seiya Nuta, bekend van het creëren van het Resea microkernel-besturingssysteem geschreven in C.

In de huidige ontwikkelingsfase kan Kerla alleen draaien op x86_64-systemen en implementeert het basissysteemaanroepen zoals write, stat, mmap, pipe en poll, ondersteunt signalen, naamloze pipelines en contextswitches. Voor procesbeheer zijn oproepen zoals fork, wait4 en execve beschikbaar. Er is ondersteuning voor tty en pseudo-terminals (pty). Van de bestandssystemen worden initramfs (gebruikt om de root-FS te mounten), tmpfs en devfs nog steeds ondersteund. Er is een netwerkstack voorzien met ondersteuning voor TCP- en UDP-sockets, geïmplementeerd op basis van de smoltcp-bibliotheek.

De ontwikkelaar heeft een opstartbare omgeving voorbereid die draait in QEMU of in de Firecracker virtuele machine met de virtio-net driver, waarmee je al verbinding kunt maken via SSH. Musl wordt gebruikt als systeembibliotheek en BusyBox wordt gebruikt als gebruikershulpprogramma's.

Het Kerla-project ontwikkelt een Linux-compatibele kernel in Rust

Op basis van Docker is een build-systeem voorbereid waarmee u uw eigen boot-initramfs kunt maken met de Kerla-kern. De visachtige nsh-shell en de Kazari GUI-stack gebaseerd op het Wayland-protocol worden afzonderlijk ontwikkeld.

Het Kerla-project ontwikkelt een Linux-compatibele kernel in Rust

Het gebruik van de Rust-taal in een project vermindert het aantal bugs in de code door veilige codeertechnieken toe te passen en de efficiëntie van het identificeren van problemen bij het werken met geheugen te verbeteren. Geheugenveiligheid wordt in Rust geboden tijdens het compileren door referentiecontrole, het bijhouden van objecteigendom en de levensduur van het object (scope), evenals door evaluatie van de juistheid van geheugentoegang tijdens de uitvoering van de code. Bovendien biedt Rust bescherming tegen overflows van gehele getallen, vereist het verplichte initialisatie van variabelewaarden vóór gebruik, past het concept van onveranderlijke referenties en variabelen standaard toe, biedt het sterke statische typering om logische fouten te minimaliseren en vereenvoudigt het de verwerking van invoerwaarden via patroonmatchingfaciliteiten. .

Voor de ontwikkeling van componenten op een laag niveau, zoals de OS-kernel, biedt Rust ondersteuning voor onbewerkte pointers, structuurverpakking, inline-invoegingen van assembler en inlining van assembler-bestanden. Om te kunnen werken zonder gebonden te zijn aan de standaardbibliotheek, zijn er afzonderlijke kratpakketten voor het uitvoeren van bewerkingen op strings, vectoren en bitvlaggen. Tot de voordelen behoren ook ingebouwde tools voor het beoordelen van de codekwaliteit (linter, roest-analyzer) en het maken van unit-tests die niet alleen op echte hardware kunnen worden uitgevoerd, maar ook in QEMU.

Bron: opennet.ru

Voeg een reactie