ΠŸΡΡ‚Π°Ρ рСдакция ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для ядра Linux с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ языка Rust

МигСль ΠžΡ…Π΅Π΄Π° (Miguel Ojeda), Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rust-for-Linux, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» для рассмотрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ядра Linux пятый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² устройств Π½Π° языкС Rust. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Rust рассматриваСтся ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ, Π½ΠΎ ΡƒΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Π²Π΅Ρ‚ΠΊΡƒ linux-next ΠΈ достаточно Ρ€Π°Π·Π²ΠΈΡ‚Π° для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ созданию слоёв абстракции Π½Π°Π΄ подсистСмами ядра, Π° Ρ‚Π°ΠΊΠΆΠ΅ для написания Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° финансируСтся ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Google ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ISRG (Internet Security Research Group), которая являСтся ΡƒΡ‡Ρ€Π΅Π΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Let’s Encrypt ΠΈ способствуСт ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡŽ HTTPS ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ защищённости ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

Khumbula ukuba utshintsho olucetywayo lwenza kube lula ukusebenzisa iRust njengolwimi lwesibini ekuphuhliseni abaqhubi kunye neemodyuli zekernel. Inkxaso yomhlwa inikezelwa njengokhetho olungenziwanga ngokungagqibekanga kwaye alubangeli ukuba iRust ibandakanywe njengokuxhomekeka kolwakhiwo olufunekayo kwikernel. Ukusebenzisa iRust kuphuhliso lomqhubi kuya kukuvumela ukuba wenze abaqhubi abakhuselekileyo nabangcono ngomzamo omncinci, simahla kwiingxaki ezinjengofikelelo lwememori emva kokukhulula, ukuchaswa kwesalathiso esingenanto, kunye nokugqithiswa kwe-buffer.

Ukuphathwa okukhuselekileyo kwimemori kubonelelwa kwiRust ngexesha lokuqokelela ngokujonga ireferensi, ukugcina umkhondo wobunini bento kunye nobomi bento (ububanzi), kunye nokuvavanya ukuchaneka kofikelelo lwememori ngexesha lokwenziwa kwekhowudi. Umhlwa ukwabonelela ngokhuseleko ngokuchasene nokuphuphuma kwenani elipheleleyo, kufuna ukuqaliswa okunyanzelekileyo kwamaxabiso aguquguqukayo ngaphambi kokusetyenziswa, iphatha iimpazamo ngcono kwithala leencwadi elisemgangathweni, isebenzisa ingqikelelo yeembekiselo ezingenakuguquguquka kunye nezinto eziguquguqukayo ngokungagqibekanga, ibonelela ngochwethezo olomeleleyo ukuze kuncitshiswe iimpazamo ezinengqiqo.

Π’ Π½ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΎ устранСниС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ, высказанных Π² процСссС обсуТдСния ΠΏΠ΅Ρ€Π²ΠΎΠΉ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚ΠΎΠΉ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΉ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ. Π’ Π½ΠΎΠ²ΠΎΠΉ вСрсии:

  • Π’ систСму Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Intel Π±ΠΎΡ‚Π° 0DAY/LKP Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust ΠΈ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ публикация ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΎ тСстировании. Готовится интСграция ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust Π² систСму Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования KernelCI. ВСстированиС Π½Π° Π±Π°Π·Π΅ GitHub CI ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ΠΎ Π½Π° использованиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².
  • ΠœΠΎΠ΄ΡƒΠ»ΠΈ ядра Π½Π° Rust ΠΈΠ·Π±Π°Π²Π»Π΅Π½Ρ‹ ΠΎΡ‚ нСобходимости опрСдСлСния crate-Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Β«#![no_std]Β» ΠΈ Β«#![feature(…)]Β».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Ρ… сборочных Ρ†Π΅Π»Π΅ΠΉ (.o, .s, .ll ΠΈ .i).
  • Π’ рСкомСндациях ΠΏΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ раздСлСния ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² (Β«//Β») ΠΈ докумСнтирования ΠΊΠΎΠ΄Π° (Β«///Β»).
  • ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ скрипт is_rust_module.sh.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° статичСских (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² синхронизации, основанных Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Β«CONFIG_CONSTRUCTORSΒ».
  • Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ: Guard ΠΈ GuardMut ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ рСгистрации устройств.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° абстракция Β«RwSemaphoreΒ», Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰Π°Ρ Π² Ρ€ΠΎΠ»ΠΈ обвязки Π½Π°Π΄ Π‘ΠΈ-структурой rw_semaphore.
  • Для использования mmap Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ mm ΠΈ абстракция VMA (обвязка Π½Π°Π΄ структурой vm_area_struct).
  • Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ GPIO PL061 ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π½Π° использованиС макроса Β«dev_*!Β».
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° общая чистка ΠΊΠΎΠ΄Π°.

umthombo: opennet.ru

Yongeza izimvo