Framework per scrive driver sicuri per u kernel Linux in Rust

Josh Triplett, chì travaglia in Intel è face parte di u cumitatu chì supervise u sviluppu di Crates.io, parlendu à u Summit di Tecnulugia Open Source. introduttu un gruppu di travagliu destinatu à purtà a lingua Rust à parità cù a lingua C in u campu di a prugrammazione di sistemi.

In un gruppu di travagliu chì hè in u prucessu di creazione, i sviluppatori di Rust, inseme cù l'ingegneri di Intel, preparanu specificazioni chì definiscenu a funziunalità chì deve esse implementata in Rust per a prugrammazione di sistemi. A prugrammazione di u sistema spessu richiede una manipulazione di livellu bassu, cum'è eseguisce struzzioni di prucessori privilegiati è ottene infurmazioni detallate nantu à u statu di u processatore. Di e funzioni simili chì sò digià sviluppati per Rust, u supportu per strutture senza nome, unioni, inserti di lingua d'assemblea (a macro "asm!") è u formatu di numeri in virgule flottante BFLOAT16 hè nutatu.

Josh crede chì l'avvene di u prugramma di u sistema appartene à Rust, è a lingua C in realità muderni riclamà u locu chì in l'anni passati era occupatu da l'Assemblea. Ruggine
micca solu alleva i sviluppatori da i prublemi inherenti à a lingua C chì si sviluppanu per via di u travagliu di pocu livellu cù memoria, ma ancu furnisce l'uppurtunità di aduprà in u sviluppu di paradigmi di prugrammazione muderni.

Durante discussioni spettaculi
Josh hà avutu l'idea di aghjunghje l'abilità di sviluppà i drivers in u kernel Linux in a lingua Rust, chì permetterebbe di creà drivers più sicuri è megliu cù u minimu sforzu, senza prublemi cum'è l'accessu à a memoria dopu a liberazione, null. dereferences di puntatore, è buffer overruns.

Greg Kroah-Hartman, chì hè rispunsevuli di mantene a ramu stabile di u kernel Linux, hà spressu a so prontezza à aghjunghje un framework per u sviluppu di drivers in a lingua Rust à u kernel s'ellu hà vantaghji veri nantu à C, per esempiu, furnisce una sicura. associazioni sopra l'API Kernel. Inoltre, Greg cunsidereghja stu quadru solu cum'è una opzione, micca attiva per automaticamente, per ùn include micca Rust cum'è una dependenza di custruzzione di u kernel.

Ci hè statu chì parechji squadre sò digià travagliatu in questa direzzione. Per esempiu, i sviluppatori di a cumpagnia "Fish in a Barrel" preparatu un toolkit per scrive moduli caricabili per u kernel Linux in a lingua Rust, utilizendu un inseme di strati astratti nantu à l'interfacce è strutture di kernel per aumentà a sicurità. I strati sò generati automaticamente in basa di i fugliali di l'intestazione di u kernel esistenti chì utilizanu l'utilità bindgen. Clang hè utilizatu per custruisce strati. In più di interlayers, i moduli assemblati utilizanu u pacchettu staticlib.

Parallelamente si sviluppa Un altru prughjettu fucalizza nantu à u sviluppu di driver per i sistemi integrati è i dispositi IoT, chì usa ancu Bindgen per generà strati basati in i fugliali di l'intestazione di u kernel. U quadru permette di migliurà a sicurità di u driver senza fà cambiamenti à u kernel - invece di creà livelli d'isolazione supplementari per i cunduttori in u kernel, hè prupostu di bluccà i prublemi in a fase di compilazione, utilizendu a lingua Rust più sicura. Si assume chì un tali approcciu pò esse dumandatu da i fabricatori di l'equipaggiu chì sviluppanu cunduttori proprietarii in fretta senza fà un auditu propiu.

Ùn sò micca tutte e funziunalità previste sò ancu implementate, ma u quadru hè digià abbastanza adattatu per u travagliu è hè stata utilizata per scrive un driver di travagliu per u controller Ethernet LAN9512 USB furnitu in a scheda Raspberry Pi 3. U driver smsc95xx esistente, scrittu da in lingua C. Hè nutatu chì a dimensione di u modulu è l'overhead da i cumpunenti di runtime quandu u sviluppu di un driver in Rust sò insignificanti, chì permette à u quadru per esse usatu per i dispositi cù risorse limitate.

Source: opennet.ru

Add a comment