Voorstel vir die bespreking van die kwessie van die byvoeging van Rust-ontwikkelingsinstrumente by die Linux-kern

Nick Desagnier (Nick Desaulniers), wat by Google werk om te voorsien ondersteuning die bou van die Linux-kern met behulp van die Clang-samesteller en ook help herstel foute in die Rust-samesteller, hy het aangebied by 'n konferensie hou Linux Loodgieterskonferensie 2020 sessie om te bespreek wat dit moontlik maak om kernkomponente in Rust te ontwikkel. Nick organiseer 'n mikrokonferensie gewy aan LLVM, en glo dat dit lekker sal wees om die tegniese aspekte van die moontlike integrasie van Rust-ondersteuning in die kern te bespreek (hy het reeds 'n werkende prototipe vir KBuild voorberei) en te verstaan ​​of sulke ondersteuning moet enigsins bygevoeg word en watter beperkings op die gebruik van Rust aanvaar moet word.

Laat ons onthou dat Linus Torvalds in 'n onlangse bespreking by die Open Source Summit en Embedded Linux-konferensie het dit nie uitgesluit nie die opkoms van bindings vir die ontwikkeling van nie-kern kernsubstelsels (byvoorbeeld drywers) in tale soos Rust. Die vermoë om drywers in Rust te ontwikkel, sal ons in staat stel om veiliger en beter bestuurders met minimale moeite te skep, sonder probleme soos geheuetoegang na vrystelling, nulwyserverwysings en bufferoorskryding. Daar is reeds verskeie derdeparty-projekte om hierdie kenmerk te implementeer:

  • Ontwikkelaars van die maatskappy "Fish in a Barrel" voorberei 'n gereedskapstel vir die skryf van laaibare modules vir die Linux-kern in die Rust-taal, met behulp van 'n stel abstrakte lae oor die koppelvlakke en kernstrukture om sekuriteit te verhoog. Lae word outomaties gegenereer op grond van die bestaande kernkop-lêers met behulp van die nut bindgen. Clang word gebruik om lae te bou. Benewens tussenlae, gebruik die saamgestelde modules die staticlib-pakket.
  • Navorsers van die Chinese Universiteit van Hong Kong ontwikkel 'n projek vir die ontwikkeling van drywers vir ingebedde stelsels en Internet of Things-toestelle in Rust, wat ook bindgen gebruik om lae te genereer gebaseer op kernkoplêers. Die raamwerk stel jou in staat om bestuurdersekuriteit te verbeter sonder om veranderinge aan die kern aan te bring - in plaas daarvan om bykomende isolasievlakke vir bestuurders in die kern te skep, word voorgestel om probleme in die samestellingstadium te blokkeer deur die veiliger Rust-taal te gebruik. Daar word aanvaar dat so 'n benadering in aanvraag kan wees deur toerustingvervaardigers wat inderhaas eie drywers ontwikkel sonder om 'n behoorlike oudit uit te voer.
  • Raamwerk ontwikkelaars C2Roes vir die uitsaai van C-kode na Rust, gedrag eksperimente oor die omskakeling van kernmodules met minimale handwysigings. Een van die probleme wat opgemerk is, is die gebruik in baie dele van die kern van kode wat GCC-uitbreidings gebruik wat nog nie in C2Rust ondersteun word nie. Om hierdie probleem op te los, beplan C2Rust om ondersteuning vir GCC-kenmerke inlyn, koud, alias, gebruik en seksie by te voeg, asook om die vermoëns van die inlynsamesteller uit te brei en probleme op te los met strukture wat beide in lyn en gepak is (byvoorbeeld xregs_state) . Beduidende probleme wat handwerk vereis, sluit in die onvermoë om nie-triviale C-makro's na Rust-makro's te vertaal en die behoefte om tipes te herdefinieer, aangesien C2Rust C-tipes in definisies in die libc-pakket vertaal, maar hierdie pakket kan nie in kernmodules gebruik word nie.

Bron: opennet.ru

Voeg 'n opmerking