Tilbud om at drøfte spørgsmålet om at tilføje værktøjer til udvikling på Rust-sproget til Linux-kernen.

Nick Desaulniers (Nick Desaulniers), der arbejder hos Google for at sikre support kernen i Linux med Clang-compiler, og også hjælper med at rette fejl i Rust-compileren, et håndskrevet patch til rettelsen. afholde på konferencen Linux Plumbers Conference 2020 en session om muligheden for at udvikle kernekomponenter i Rust. Nick arrangerer en mikro-konference, der fokuserer på LLVM, og mener, det ville være nyttigt at diskutere de tekniske aspekter ved mulig integration af Rust-support i kernen (en arbejdsprototype til KBuild er allerede klar) og finde ud af, om det overhovedet er nødvendigt at tilføje denne støtte, samt hvilke begrænsninger for brugen af Rust der bør overvejes.

Lad os minde om, at i en nylig diskussion på konferencen "Open Source Summit and Embedded Linux" udelukkede Linus Torvalds ikke muligheden for bindings til udvikling af sekundære kerneundersystemer (f.eks. drivere) i sprog som Rust. Muligheden for at udvikle drivere i Rust ville tillade at skabe sikre og af højere kvalitet drivere med minimale besvær, fri for problemer som hukommelsestilgang efter frigivelse, dereferens af nullpekere og bufferoverløb. Der findes allerede flere eksterne projekter, der implementerer denne mulighed:

  • Udviklere fra "Fish in a Barrel" har forberedt har værktøjer til at skrive lastbare moduler til Linux-kernen i Rust, ved at bruge et sæt abstrakte lag over kerne-interfaces og -strukturer for at øge sikkerheden. Lagene genereres automatisk baseret på de eksisterende header-filer i kernen ved hjælp af værktøjet bindgen. For at bygge lagene anvendes Clang. De opbyggede moduler bruger ud over lagene også pakken staticlib.
  • Forskere fra Hong Kong University udvikler Et projekt til udvikling af drivere på Rust til indlejrede systemer og Internet of Things-enheder, som også anvender bindgen til at generere lag baseret på header-filer fra kernen. Frameworket muliggør en forbedring af driveres sikkerhed uden at ændre kernen — i stedet for at skabe yderligere isolationslag i kernen for drivere, foreslås det at blokkere problemer ved kompilering ved at anvende det mere sikre sprog Rust. Det antages, at en sådan tilgang kan være efterspurgt af hardwareproducenter, der udvikler proprietære drivere hastigt uden at gennemføre ordentlige audits.
  • Udviklerne af frameworket C2Rust til at oversætte C-kode til Rust, afholder eksperimenter med at konvertere kernelmoduler med minimale manuelle justeringer. Blandt problemerne nævnes brugen af kode i mange dele af kernen, der anvender GCC-udvidelser, som fortsat ikke understøttes i C2Rust. For at løse dette problem planlægges det i C2Rust at tilføje støtte til GCC-attributter inline, cold, alias, used og section samt at udvide mulighederne for inline-assembler og løse problemer med strukturer, der både er udjævnet og pakket (f.eks. xregs_state). Blandt de væsentlige problemer, der kræver manuel intervention, nævnes det, at det er umuligt at oversætte ikke-trivielle C-makroer til Rust-makroer og nødvendigheden af at redefinere typer, da C2Rust oversætter C-typer til definitioner i libc-pakken, men denne pakke kan ikke anvendes i kernelmoduler.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster