Do gałęzi jądra Linux-next dodano kod do opracowywania sterowników w języku Rust

W skład gałęzi linux-next, na podstawie której zostanie wydana wersja jądra Linux 5.13, wchodzi wstępny zestaw komponentów do tworzenia sterowników urządzeń w języku Rust. Osobno opublikowano dokumentację poświęconą używaniu Rust w jądrze Linux oraz przykład modułu jądra ze sterownikiem urządzenia znakowego w języku Rust. Kod dodał Stephen Rothwell, maintainer gałęzi Linux-next. Zazwyczaj gałąź Linux-next zawiera kod gotowy do przyjęcia w następnym cyklu przyjmowania zmian do jądra, ale na razie nie jest jasne, czy wsparcie dla Rust zostanie zaakceptowane przez Linusa Torvaldsa w składzie Linux 5.13, ponieważ kod nie przeszedł przeglądu przez szeroką grupę deweloperów.

Wsparcie dla opracowywania sterowników jądra Linux w języku Rust było intensywnie omawiane w zeszłym roku, w tym z udziałem Linusa Torvaldsa, który nie wykluczał takiej możliwości. Pomysł ten został również poparty przez Grega Kroah-Hartmana, który odpowiada za wsparcie stabilnej gałęzi jądra Linux. Użycie Rust do tworzenia sterowników pozwoli na minimalny wysiłek podczas tworzenia bezpiecznych i lepszej jakości sterowników, pozbawionych takich problemów, jak dostęp do obszaru pamięci po jego zwolnieniu, dereferencja wskaźników zerowych i przekroczenie granic bufora.

Aby włączyć wsparcie dla Rust w gałęzi linux-next, do KConfig dodano opcję CONFIG_RUST („Wsparcie Rust” w menu „Ogólne ustawienia”), przy włączonej której sprawdzana jest obecność w systemie kompilatora rustc, a w jego przypadku możliwe jest włączenie pozostałych komponentów związanych z Rust (na przykład w menu „Hacking jądra” pojawia się sekcja „Hacking Rust”). Użycie Rust rozpatrywane jest jako opcja, która nie jest aktywna domyślnie i nie sprawia, że Rust staje się jednym z obowiązkowych zależności kompilacyjnych jądra.

Kompilacja komponentów jądra w Rust jest możliwa zarówno przy użyciu GCC, jak i podczas kompilacji za pomocą Clang. Aby używać Rust w jądrze, wymagane jest zainstalowanie świeżych nocnych kompilacji kompilatora rustc, nie starszych niż gałąź nightly-2021-02-20 (obiecano dodać wsparcie dla stabilnych gałęzi Rust, ale na razie istnieje związek z niektórymi eksperymentalnymi funkcjami). Niezbędne jest także posiadanie w systemie standardowych bibliotek Rust dostarczanych w pakiecie rust-src oraz generatora powiązań bindgen. Wsparcie jest na razie ograniczone do platform x86_64 i ARM64.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster