Kerla: een nieuwe kernel geschreven in Rust en compatibel met de Linux ABI

Onlangs is informatie vrijgegeven over het Kerla-project, dat wordt ontwikkeld als een besturingssysteemkernel die is geschreven in de Rust-taal. 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 maken van het microkernel-besturingssysteem Resea, geschreven in de C-taal.

De nieuwe kernel is in eerste instantie bedoeld zorgen voor compatibiliteit met de Linux-kernel op ABI-niveau, waarmee ongewijzigde binaire bestanden die voor Linux zijn gebouwd, kunnen worden uitgevoerd in een op Kerla gebaseerde omgeving.

Over Keral

Kerla is een monolithische kernel van het besturingssysteem helemaal opnieuw gemaakt in Rust. In het huidige stadium van ontwikkeling, Kerla kan alleen worden uitgevoerd op systemen met x86_64-architectuur en implementeert basissysteemaanroepen zoals schrijven, stat, mmap, pipe en poll, ondersteunt signalen, naamloze buizen en contextswitches. Aanroepen zoals fork, wait4 en execve zorgen voor controle over de processen. Er is ondersteuning voor tty en pseudo-terminals (pty). Onder de initramfs-bestandssystemen (gebruikt om de root-FS aan te koppelen), worden tmpfs en devfs nog steeds ondersteund.

Er is ook een netwerkstack met ondersteuning voor TCP- en UDP-sockets, gebaseerd op de smoltcp-bibliotheek. De ontwikkelaar heeft een opstartomgeving voorbereid die werkt in QEMU of Firecracker VM met het stuurprogramma virtio-net, waar je al verbinding mee kunt maken via SSH. Musl wordt gebruikt als een systeembibliotheek en BusyBox wordt gebruikt als een gebruikershulpprogramma. Op basis van Docker is een bouwsysteem voorbereid waarmee je je eigen initramfs-boot kunt maken met de Kerla-kernel.

Tot nu toe zijn er weinig details gegeven over de nieuwe kernel, maar wat de meeste aandacht trekt voor Kerla's functies is het feit dat het in Rust is geschreven. Heeft het schrijven in Rust dus enig voordeel ten opzichte van andere talen of ten opzichte van bestaande code? Velen hebben deze vraag met ja beantwoord en benadrukten de voordelen van geheugenbeveiliging die taal biedt.

Het wordt ook geleverd bij het evalueren van de nauwkeurigheid van geheugentoegangen tijdens runtime. Bovendien, Mozilla gelooft dat Rust bescherming biedt tegen integer overflows, vereist verplichte initialisatie van variabelewaarden vóór gebruik, neemt standaard het concept van verwijzingen en onveranderlijke variabelen over, biedt sterk statisch typen om logische fouten te minimaliseren en vereenvoudigt invoerverwerking door het matchen van patronen.

Een van de voordelen zijn de geïntegreerde tools om de kwaliteit van de code te evalueren en het maken van unit-tests die niet alleen op echte hardware kunnen worden uitgevoerd, maar ook op QEMU. Kortom, Mozilla vindt Rust gemakkelijker te debuggen omdat de compiler fouten zal afwijzen. De baaien wezen echter op enkele nadelen met Rust.

“Net als bij C ++ is het bijna onmogelijk om idiomatische Rust te schrijven zonder sjablonen te gebruiken, dus het heeft opgeblazen binaire bestanden en trage compilatietijden. Aan al deze compilatiecontroles zijn ook kosten verbonden. Als je iets herschrijft, verlies je ook de oude volwassen codebase, en het is onmogelijk om binnen een redelijke tijd een codebase van vergelijkbare kwaliteit te produceren; het is veel beter om het programma in Rust uit te breiden in plaats van te herschrijven. Het is beter om het programma uit te breiden dan het in Rust te herschrijven”, zegt een software-engineer.

Volgens de maker is het om deze reden dat Linux-ontwikkelaars, in het bijzonder Linus Torvalds zelf, ze verwierpen het idee om de hele kernel in Rust te herschrijven.

"Doe wat werk om veilige koppelingen te maken, schrijf vervolgens de aanvullende code in Rust en je kunt nog steeds genieten van die volwassen code. (Dat is wat Linux doet, er zijn pogingen om de mogelijkheid toe te voegen om een ​​kernelmodule in Rust te schrijven), "voegde hij eraan toe. Linux-ontwikkelaars onderzoeken al ongeveer drie jaar de mogelijkheden om bepaalde nieuwe kernelmodules te schrijven met behulp van de Rust-taal. Dit leidde tot het project »Rust for Linux«.

Als u er tenslotte meer over wilt weten, kunt u de details raadplegen In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.