Një kornizë për shkrimin e drajverëve të sigurt të kernelit Linux në Rust

Josh Triplett, i cili punon në Intel dhe është në komitetin që mbikëqyr zhvillimin e Crates.io, duke folur në Samitin e Teknologjisë me Burim të Hapur paraqitur një grup pune që synon të sjellë gjuhën Rust në barazi me gjuhën C në fushën e programimit të sistemeve.

Në një grup pune që është në proces të krijimit, zhvilluesit e Rust, së bashku me inxhinierët nga Intel, do të përgatisin specifikimet që përcaktojnë funksionalitetin që duhet të zbatohet në Rust për programimin e sistemeve. Programimi i sistemit shpesh kërkon manipulime të nivelit të ulët, të tilla si ekzekutimi i udhëzimeve të privilegjuara të procesorit dhe marrja e informacionit të detajuar për gjendjen e procesorit. Nga veçoritë e ngjashme që janë zhvilluar tashmë për Rust, vërehet mbështetje për strukturat pa emër, bashkimet, insertet e gjuhës së asamblesë (makro "asm!") dhe formati i numrave me pikë lundruese BFLOAT16.

Josh beson se e ardhmja e programimit të sistemit i përket Rust dhe gjuha C në realitetet moderne po pretendon vendin që në vitet e kaluara zinte Asambleja. Ndryshk
jo vetëm që lehtëson zhvilluesit nga problemet e natyrshme në gjuhën C që lindin për shkak të punës së nivelit të ulët me kujtesën, por gjithashtu ofron mundësinë për ta përdorur atë në zhvillimin e paradigmave moderne të programimit.

Në progres diskutime shfaqje
Josh ishte ai që sugjeroi ta shtonte në thelb Linux Mundësia për të zhvilluar drajverë në gjuhën Rust do t'ju lejojë të krijoni drajverë më të sigurt dhe me cilësi më të lartë me përpjekje minimale, pa probleme të tilla si qasja pas lirimit, heqja e referencave të treguesve NULL dhe tejkalimet e buffer-it.

Greg Kroah-Hartman, mirëmbajtës i degës së qëndrueshme të kernelit Linux, shprehu gatishmërinë për të shtuar një kornizë zhvillimi të drajverëve Rust në bërthamë nëse ajo ofron avantazhe të vërteta ndaj C, siç është ofrimi i mbështjellësve të sigurt rreth API-t të bërthamës. Për më tepër, Greg e sheh këtë kornizë vetëm si një opsion, të çaktivizuar si parazgjedhje, për të shmangur përfshirjen e Rust si një varësi të ndërtimit të bërthamës.

Doli se tashmë disa ekipe po punojnë në këtë drejtim. Për shembull, zhvilluesit nga kompania "Peshku në një fuçi" përgatitur mjete për shkrimin e moduleve të ngarkueshme për bërthamën Linux në gjuhën Rust, duke përdorur një sërë shtresash abstrakte mbi ndërfaqet dhe strukturat e kernelit për të rritur sigurinë. Shtresat gjenerohen automatikisht bazuar në skedarët ekzistues të kokës së kernelit duke përdorur programin bindingen. Clang përdoret për të ndërtuar shtresa. Përveç ndërshtresave, modulet e montuara përdorin paketën staticlib.

Paralele po zhvillohet Një projekt tjetër u fokusua në zhvillimin e drejtuesve për sistemet e integruara dhe pajisjet IoT, i cili gjithashtu përdor bindgen për të gjeneruar shtresa të bazuara në skedarët e kokës së kernelit. Korniza ju lejon të përmirësoni sigurinë e drejtuesit pa bërë ndryshime në kernel - në vend që të krijoni nivele shtesë të izolimit për drejtuesit në kernel, propozohet të bllokoni problemet në fazën e përpilimit, duke përdorur gjuhën më të sigurt Rust. Supozohet se një qasje e tillë mund të kërkohet nga prodhuesit e pajisjeve që zhvillojnë drejtues të pronarit me nxitim pa kryer një auditim të duhur.

Jo i gjithë funksionaliteti i synuar është zbatuar ende, por korniza tashmë është mjaft e përshtatshme për punë dhe është përdorur për të shkruar një drejtues pune për kontrolluesin USB Ethernet LAN9512 të furnizuar në tabelën Raspberry Pi 3. Drejtuesi ekzistues smsc95xx, i shkruar nga në gjuha C. Vihet re se madhësia e modulit dhe shpenzimet e përgjithshme nga komponentët e kohës së ekzekutimit gjatë zhvillimit të një drejtuesi në Rust janë të parëndësishme, gjë që lejon që korniza të përdoret për pajisjet me burime të kufizuara.

Burimi: opennet.ru

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster