Een raamwerk in Rust zou in de Kernel kunnen worden geïmplementeerd om de stuurprogramma's te verbeteren

Roest Linux-kernel

Josh Triplett, een op Intel gebaseerd bedrijf en lid van de commissie voor toezicht op ontwikkeling van Crates.io, presenteerde een paar dagen geleden al een werkgroep in zijn toespraak op de Open Source Technology Summit die als doel heeft Rust op één lijn te brengen met C in Linux-kernelprogrammering.

In de werkgroep, die in oprichting is, Rust-ontwikkelaars zullen samen met Intel-ingenieurs specificaties opstellen dat de functionaliteit kan benadrukken die Rust nodig heeft om te programmeren binnen de Linux-kernel. Systeemprogrammering vereist vaak manipulaties op laag niveau, zoals het uitvoeren van geprivilegieerde processorinstructies en het verkrijgen van gedetailleerde informatie over de processorstatus.

Van de vergelijkbare mogelijkheden die al voor Rust worden ontwikkeld, ondersteuning voor naamloze structuren wordt ondersteund, unions (union), assembler inserts (de "asm!" macro), en het BFLOAT16 floating point getal formaat.

Josh gelooft dat de toekomst van systeemprogrammering bij Rust ligt, en de C-taal in de moderne realiteit beweert de plaats van Assembler in het verleden te zijn. Rust verlost ontwikkelaars niet alleen van specifieke C-taalproblemen die ontstaan ​​door low-level werken met geheugen, maar biedt ook toepasbaarheid bij de ontwikkeling van moderne programmeerparadigma's.

Tijdens de bespreking van de toespraak van Josh werd het idee geuit om:

de mogelijkheid toevoegen om Rust-taalstuurprogramma's te ontwikkelen aan de Linux-kernel, wat het mogelijk zou maken om met minimale inspanning betere en veiligere stuurprogramma's te maken die problemen verlichten, zoals toegang krijgen tot het geheugengebied nadat het is vrijgemaakt, verwijzen naar nulpunten en meer buiten de limieten verlaten van de buffer.

Greg Kroah-Hartman, verantwoordelijk voor het onderhouden van een stabiele tak van de Linux-kernel, enx toonde zich bereid om een ​​Rust driver-framework aan de kernel toe te voegen als het echte voordelen heeft ten opzichte van C, Het biedt bijvoorbeeld veilige bindingen over de kern-API.Ook beschouwt Greg dit raamwerk alleen als een optie die standaard niet actief is, om Rust niet op te nemen in het aantal afhankelijkheden van de kernassemblage.

Het bleek dat er al meerdere teams in deze richting werken. De ontwikkelaars van Fish in a Barrel hebben bijvoorbeeld een toolkit voorbereid voor het schrijven van laadbare modules voor de Linux-kernel in de Rust-taal, met behulp van een set abstracte lagen bovenop kernel-interfaces en -structuren om de beveiliging te verhogen.

Tussenliggende lagen worden automatisch gegenereerd op basis van de kernel-headerbestanden die beschikbaar zijn met het hulpprogramma bindgen. Clang wordt gebruikt om tussenlagen te bouwen. Geassembleerde modules gebruiken naast lagen het staticlib-pakket.

Tegelijkertijd wordt een ander project ontwikkeld, gericht op de ontwikkeling van controllers voor embedded systemen en Internet of Things-apparaten, die ook bindgen gebruiken om halsbanden te genereren op basis van kernel-headerbestanden.

Het framework stelt je in staat om de beveiliging van de driver te verbeteren zonder veranderingen aan de kernel aan te brengen; In plaats van extra isolatieniveaus te creëren voor stuurprogramma's in de kernel, wordt voorgesteld om problemen tijdens het compileren te blokkeren met een veiligere Rust-taal.

Apparatenfabrikanten zouden deze aanpak snel moeten kunnen ontwikkelen zonder een behoorlijke audit.

Nog niet alle geplande functionaliteit is geïmplementeerd, maar het raamwerk is al redelijk geschikt voor de klus en wordt gebruikt om een ​​werkende driver te schrijven voor de meegeleverde LAN9512 USB Ethernet-controller op het Raspberry Pi 3-bord.

Bestaande smsc95xx-driver is geschreven als referentie-implementatie bij het schrijven van de Rust-driver in C-taal.

Opgemerkt wordt dat de modulegrootte en de overhead van runtime-componenten niet significant zijn bij het ontwikkelen van een stuurprogramma voor Rust, waardoor u het framework kunt gebruiken voor apparaten met beperkte bronnen.

bron: https://hub.packtpub.com


Laat je reactie achter

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

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  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.

  1.   L1ch zei

    Ik kan geen informatie vinden voor een smsc95xx-stuurprogramma in de broncode of dat er iets wordt geïmplementeerd in Rust op Linux.