Een voorstel om de discussie aan te gaan over de toevoeging van middelen voor het ontwikkelen in de programmeertaal Rust aan de Linux-kernel

Nick Desaulniers (Nick Desaulniers), die bij Google verantwoordelijk is voor van ondersteuning de bouw van de Linux-kernel met de Clang-compiler en ook helpt fouten in de Rust-compiler op te lossen, stelde voor gehouden op de conferentie Linux Plumbers Conference 2020 een sessie om te discussiƫren over het bieden van ontwikkelingsmogelijkheden voor kernelcomponenten in de Rust-taal. Nick organiseert een micro-conferentie over LLVM en denkt dat het goed zou zijn om de technische aspecten van de mogelijke integratie van Rust-ondersteuning in de kernel te bespreken (er is al een werkprototype voorbereid voor KBuild) en te begrijpen of er eigenlijk dergelijke ondersteuning moet worden toegevoegd en welke beperkingen voor het gebruik van Rust moeten worden aangenomen.

Ter herinnering, in een recente discussie op de conferentie "Open Source Summit and Embedded Linux" heeft Linus Torvalds de mogelijkheid niet uitgesloten van bindings voor de ontwikkeling van niet-kernonderdelen (zoals stuurprogramma's) in talen zoals Rust. De mogelijkheid om stuurprogramma's in de Rust-taal te ontwikkelen zou het mogelijk maken om met minimale inspanning veilige en kwalitatief betere stuurprogramma's te creƫren, vrij van problemen zoals het aanspreken van geheugen na vrijgave, derefereren van null pointers en buffer overflows. Er zijn al verschillende externe projecten die deze mogelijkheid implementeren:

  • Ontwikkelaars van het bedrijf "Fish in a Barrel" bereid Een toolkit voor het schrijven van laadtmodules voor de Linux-kernel in Rust, met behulp van een set abstracte lagen bovenop de kernelinterfaces en -structuren om de beveiliging te verbeteren. De lagen worden automatisch gegenereerd op basis van de beschikbare headerbestanden van de kernel met behulp van de tool bindgen. Voor het bouwen van de lagen wordt Clang gebruikt. De gebouwde modules gebruiken naast de lagen ook het pakket staticlib.
  • Onderzoekers van de Chinese Universiteit in Hongkong ontwikkelen hebben een project ontwikkeld voor het creĆ«ren van stuurprogramma's in Rust voor embedded systemen en internet of things-apparaten, dat ook bindgen gebruikt voor het genereren van wrappers op basis van kernelheaderbestanden. Het framework maakt het mogelijk om de veiligheid van stuurprogramma's te verbeteren zonder wijzigingen aan de kernel aan te brengen — in plaats van extra isolatieniveaus in de kernel voor stuurprogramma's te creĆ«ren, wordt voorgesteld om problemen in de compilatiefase aan te pakken door een veiligere taal zoals Rust te gebruiken. Er wordt aangenomen dat een dergelijke aanpak aantrekkelijk kan zijn voor hardwareproducenten die snel proprietary stuurprogramma's ontwikkelen zonder de juiste audit.
  • De ontwikkelaars van het framework C2Rust voor het vertalen van C-code naar Rust, voeren experimenten met de conversie van kernelmodules met minimale handmatige aanpassingen. Problemen die zich voordoen zijn onder andere het gebruik in veel delen van de kernelcode die GCC-extensies toepassen, die nog niet worden ondersteund in C2Rust. Om dit probleem op te lossen, is het de bedoeling dat C2Rust ondersteuning toevoegt voor GCC-attributen zoals inline, cold, alias, used en section, en de mogelijkheden van inline-assembler uitbreidt, evenals het aanpakken van problemen met structuren die zowel zijn uitgelijnd als verpakt (bijvoorbeeld xregs_state). Een aanzienlijke uitdaging die handmatige arbeid vereist, is de onmogelijkheid om niet-triviale C-macro's naar Rust-macro's te vertalen en de noodzaak om types te herdefiniĆ«ren, aangezien C2Rust C-types vertaalt naar definities in het libc-pakket, dat niet kan worden gebruikt in kernelmodules.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster