Okvir za pisanje sigurnih upravljačkih programa za Linux kernel u Rustu

Josh Triplett, koji radi u Intelu i član je odbora koji nadzire razvoj Crates.io, govoreći na Open Source Technology Summitu podnijeti radna grupa čiji je cilj dovođenje jezika Rust u ravnotežu s jezikom C u području sistemskog programiranja.

U radnoj skupini koja je u stvaranju, Rust programeri će zajedno s inženjerima iz Intela pripremiti specifikacije koje definiraju funkcionalnosti koje je potrebno implementirati u Rust za sistemsko programiranje. Programiranje sustava često zahtijeva manipulaciju niske razine, kao što je izvršavanje privilegiranih instrukcija procesora i dobivanje detaljnih informacija o stanju procesora. Od sličnih značajki koje su već razvijene za Rust, primjećuje se podrška za neimenovane strukture, unije, umetke asemblerskog jezika (makro "asm!") i BFLOAT16 format broja s pomičnim zarezom.

Josh vjeruje da budućnost sistemskog programiranja pripada Rustu, a jezik C u modernim stvarnostima zauzima mjesto koje je prethodnih godina zauzimao Assembly. hrđati
ne samo da oslobađa programere od problema svojstvenih jeziku C koji nastaju zbog rada s memorijom na niskoj razini, već također pruža mogućnost korištenja u razvoju modernih programskih paradigmi.

Tijekom rasprave izvedbe
Josh je došao na ideju dodavanja mogućnosti razvoja upravljačkih programa u Linux kernelu na Rust jeziku, što bi omogućilo stvaranje sigurnijih i boljih upravljačkih programa uz minimalan napor, bez problema kao što je pristup memoriji nakon oslobađanja, null dereferenciranja pokazivača i prekoračenja međuspremnika.

Greg Kroah-Hartman, koji je odgovoran za održavanje stabilne grane jezgre Linuxa, izrazio je spremnost da jezgri doda okvir za razvoj upravljačkih programa u jeziku Rust ako ima stvarne prednosti u odnosu na C, na primjer, omogućit će sigurnu povezivanja preko Kernel API-ja. Osim toga, Greg ovaj okvir smatra samo opcijom, koja nije aktivna prema zadanim postavkama, kako ne bi uključio Rust kao ovisnost o izgradnji na kernelu.

Ispostavilo se da nekoliko timova već radi u tom smjeru. Na primjer, programeri iz tvrtke "Riba u bačvi" pripremljeni skup alata za pisanje modula koji se mogu učitavati za jezgru Linuxa u jeziku Rust, korištenjem skupa apstraktnih slojeva preko sučelja i struktura jezgre za povećanje sigurnosti. Slojevi se automatski generiraju na temelju postojećih datoteka zaglavlja kernela pomoću uslužnog programa bindgen. Clang se koristi za izgradnju slojeva. Osim međuslojeva, sklopljeni moduli koriste staticlib paket.

Paralelno razvija se Drugi projekt usmjeren je na razvoj upravljačkih programa za ugrađene sustave i IoT uređaje, koji također koristi bindgen za generiranje slojeva na temelju datoteka zaglavlja kernela. Okvir vam omogućuje da poboljšate sigurnost upravljačkih programa bez promjena u kernelu - umjesto stvaranja dodatnih razina izolacije za upravljačke programe u jezgri, predlaže se blokiranje problema u fazi kompilacije, korištenjem sigurnijeg jezika Rust. Pretpostavlja se da bi takav pristup mogao biti tražen od strane proizvođača opreme koji žurno razvijaju vlasničke upravljačke programe bez provođenja odgovarajuće revizije.

Nisu još implementirane sve predviđene funkcionalnosti, ali okvir je već prilično prikladan za rad i korišten je za pisanje radnog upravljačkog programa za LAN9512 USB Ethernet kontroler isporučen u ploči Raspberry Pi 3. Postojeći upravljački program smsc95xx, koji je napisao u C jezik. Napominje se da su veličina modula i opterećenje od komponenti vremena izvođenja pri razvoju upravljačkog programa u Rustu beznačajni, što omogućuje korištenje okvira za uređaje s ograničenim resursima.

Izvor: opennet.ru

Dodajte komentar