V jadre je možné implementovať rámec v Ruste na vylepšenie ovládačov

Hrdzavé linuxové jadro

Josh Triplett, spoločnosť so sídlom na Intel a člen výboru pre dohľad nad rozvojom Crates.io, už pred pár dňami predstavila pracovnú skupinu vo svojom prejave na technologickom summite otvorených zdrojov ktorého cieľom je priblížiť Rust k C v programovaní jadra Linuxu.

V pracovnej skupine, ktorá sa práve vytvára, Vývojári spoločnosti Rust spolu s inžiniermi spoločnosti Intel pripravia špecifikácie ktoré môžu zvýrazniť funkčnosť, ktorú musí Rust implementovať pre programovanie v jadre Linuxu. Programovanie systému často vyžaduje manipulácie na nízkej úrovni, napríklad vykonávanie privilegovaných pokynov procesora a získanie podrobných informácií o stave procesora.

Z podobných schopností, ktoré sa už vyvíjajú pre Rust, podpora nemenovaných štruktúr je podporovaná, unions (union), assemblerové vložky (makro „asm!“) a formát čísla pohyblivej desatinnej čiarky BFLOAT16.

Josh verí, že budúcnosť programovania systému spočíva na Rustovi a jazyk C v moderných realitách tvrdí, že je Assemblerovým miestom v minulosti. Rust nielenže zbavuje vývojárov konkrétnych problémov v jazyku C, ktoré vznikajú v dôsledku nízkoúrovňovej práce s pamäťou, ale poskytuje aj uplatniteľnosť pri vývoji moderných programovacích paradigiem.

Počas diskusie o Joshovom prejave bola vyslovená myšlienka:

pridať schopnosť vyvíjať ovládače jazyka Rust do jadra systému Linux, čo by s minimálnym úsilím umožnilo vytvoriť lepšie a bezpečnejšie ovládače, ktoré zmierňujú problémy, ako je prístup do pamäťovej oblasti po jej uvoľnení, odkazovanie na nulové ukazovatele a výstup viac za hranice nárazník.

Greg Kroah-Hartman, - zodpovedný za udržiavanie stabilnej vetvy jadra Linuxu a -x vyjadril vôľu pridať do jadra rámec Rust driveru, ak má oproti C nejaké skutočné výhody, napríklad poskytne bezpečné väzby cez základné API. Tiež Greg považuje tento rámec iba za voľbu, ktorá nie je predvolene aktívna, aby nezahrnul Rust do počtu závislostí zostavy jadra.

Ukázalo sa, že týmto smerom už pracuje niekoľko tímov. Napríklad vývojári Fish in a Barrel pripravili sadu nástrojov na písanie načítateľných modulov pre jadro Linuxu v jazyku Rust, pomocou ktorých sa na zvýšenie bezpečnosti používa sada abstraktných vrstiev navrchu rozhraní a štruktúr jadra.

Medzivrstvy sa generujú automaticky na základe súborov hlavičiek jadra dostupných pomocou obslužného programu bindgen. Clang sa používa na vytváranie medzivrstiev. Zostavené moduly okrem vrstiev používajú balík staticlib.

Zároveň sa vyvíja ďalší projekt zameraný na vývoj radičov pre vstavané systémy a zariadenia internetu vecí, ktoré tiež používajú bindgen na generovanie obojkov na základe súborov hlavičiek jadra.

Rámec vám umožňuje vylepšiť zabezpečenie ovládačov bez vykonávania zmien v jadre; Namiesto vytvárania ďalších úrovní izolácie pre ovládače v jadre sa navrhuje blokovať problémy vo fáze kompilácie pomocou bezpečnejšieho jazyka Rust.

Predpokladá sa, že výrobcovia zariadení môžu vyvinúť tento prístup v zhone bez náležitého auditu.

Nie všetky plánované funkcie sú zatiaľ implementované, ale framework je už pre túto prácu celkom vhodný a slúži na napísanie fungujúceho ovládača pre dodávaný radič USB LAN9512 USB Ethernet na dosku Raspberry Pi 3.

Existujúci ovládač smsc95xx bol napísaný ako referenčná implementácia pri písaní ovládača Rust v jazyku C.

Je potrebné poznamenať, že veľkosť modulu a réžia runtime komponentu nie sú významné pri vývoji ovládača pre Rust, ktorý umožňuje používať rámec pre zariadenia s obmedzenými prostriedkami.

Fuente: https://hub.packtpub.com


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Za údaje zodpovedá: AB Internet Networks 2008 SL
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   L1ch dijo

    Nemôžem nájsť informácie o ovládači smsc95xx v zdroji alebo o tom, že bude niečo implementované v Ruste na Linuxe.