Un cadru în Rust ar putea fi implementat în Kernel pentru a îmbunătăți driverele

Rust Linux Kernel

Josh Triplett, o companie bazată pe Intel și membru al comitetului de supraveghere a dezvoltării Crates.io, a prezentat deja un grup de lucru în urmă cu câteva zile în discursul său la Open Source Technology Summit care își propune să aducă Rust la egalitate cu C în programarea kernel-ului Linux.

În grupul de lucru, care este în curs de a fi creat, Dezvoltatorii Rust, împreună cu inginerii Intel, vor pregăti specificații care poate evidenția funcționalitatea pe care Rust trebuie să o implementeze pentru programarea în nucleul Linux. Programarea sistemului necesită adesea manipulări la nivel scăzut, cum ar fi executarea instrucțiunilor privilegiate ale procesorului și obținerea de informații detaliate despre starea procesorului.

Dintre capabilitățile similare deja dezvoltate pentru Rust, este suportat suportul pentru structuri nenumite, uniuni (uniune), inserții de asamblare (macro-ul "asm!") și formatul numărului cu virgulă mobilă BFLOAT16.

Josh consideră că viitorul programării sistemului stă la Rust, iar limbajul C din realitățile moderne pretinde a fi locul Assemblerului în trecut. Rust nu numai că scutește dezvoltatorii de problemele specifice de limbaj C care apar din cauza muncii la nivel scăzut cu memorie, dar oferă și aplicabilitate în dezvoltarea paradigmelor moderne de programare.

În timpul discuției discursului lui Josh, ideea a fost exprimată pentru:

adăugați capacitatea de a dezvolta drivere de limbaj Rust la nucleul Linux, ceea ce ar permite cu un efort minim să creeze drivere mai bune și mai sigure care să atenueze probleme precum accesarea zonei de memorie după eliberarea acesteia, referirea la pointeri nul și ieșirea mai mult dincolo de limitele tampon.

Greg Kroah-Hartman, responsabil pentru menținerea unei ramuri stabile a nucleului Linux șix și-a exprimat dorința de a adăuga un cadru Rust driver la kernel dacă are vreun avantaj real față de C, de exemplu, va oferi legături sigure peste API-ul de bază. De asemenea, Greg consideră acest cadru doar ca o opțiune care nu este activă în mod implicit, pentru a nu include Rust în numărul de dependențe de asamblare de bază.

S-a dovedit că mai multe echipe lucrează deja în această direcție. De exemplu, dezvoltatorii Fish in a Barrel au pregătit un set de instrumente pentru scrierea modulelor încărcabile pentru kernel-ul Linux în limbajul Rust, folosind un set de straturi abstracte deasupra interfețelor și structurilor kernelului pentru a spori securitatea.

Straturile intermediare sunt generate automat pe baza fișierelor antet kernel disponibile folosind utilitarul bindgen. Clang este folosit pentru a construi straturi intermediare. Modulele asamblate, pe lângă straturi, utilizează pachetul staticlib.

În același timp, se dezvoltă un alt proiect, axat pe dezvoltarea de controlere pentru sisteme încorporate și dispozitivele Internet of Things, care utilizează, de asemenea, bindgen pentru a genera coliere bazate pe fișiere antet de nucleu.

Cadrul vă permite să îmbunătățiți securitatea driverului fără a face modificări la kernel; În loc să creeze niveluri de izolare suplimentare pentru driverele din nucleu, se propune blocarea problemelor în etapa de compilare folosind un limbaj Rust mai sigur.

Se presupune că producătorii de echipamente pot dezvolta această abordare în grabă fără un audit adecvat.

Nu toate funcționalitățile planificate au fost implementate încă, dar cadrul este deja destul de potrivit pentru job și este utilizat pentru a scrie un driver de lucru pentru controlerul LAN9512 USB Ethernet furnizat pe placa Raspberry Pi 3.

A fost scris driverul smsc95xx existent ca implementare de referință când scrieți driverul Rust în limbajul C.

Se remarcă faptul că dimensiunea modulului și cheltuielile cu componentele runtime nu sunt semnificative atunci când se dezvoltă un driver pentru Rust, care vă permite să utilizați cadrul pentru dispozitive cu resurse limitate.

Fuente: https://hub.packtpub.com


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   L1ch el a spus

    Nu găsesc informații pentru un driver smsc95xx în sursă sau că ceva va fi implementat în Rust pe Linux.