W jądrze można zaimplementować strukturę w Rust, aby ulepszyć sterowniki

Jądro Rust dla Linuksa

Josh Triplett, firma z Intelem i członek komitetu nadzorującego rozwój Crates.io, przedstawiłem już grupę roboczą kilka dni temu w swoim przemówieniu na Open Source Technology Summit który ma na celu zrównanie Rusta z C w programowaniu jądra Linuksa.

W grupie roboczej, która jest w trakcie tworzenia, Programiści Rust, wraz z inżynierami Intela, przygotują specyfikacje które mogą podkreślić funkcjonalność, którą Rust musi zaimplementować do programowania w jądrze Linuksa. Programowanie systemu często wymaga manipulacji na niskim poziomie, takich jak wykonywanie instrukcji procesora uprzywilejowanego i uzyskiwanie szczegółowych informacji o stanie procesora.

Z podobnych możliwości, które są już opracowywane dla Rusta, obsługiwana jest obsługa nienazwanych struktur, unions (union), asembler wstawia (makro „asm!”) i format liczb zmiennoprzecinkowych BFLOAT16.

Josh wierzy, że przyszłość programowania systemowego należy do Rusta, a język C we współczesnych realiach twierdzi, że jest miejscem Assemblera w przeszłości. Rust nie tylko odciąża programistów od specyficznych problemów języka C, które pojawiają się w wyniku niskopoziomowej pracy z pamięcią, ale także zapewnia możliwość zastosowania w rozwoju nowoczesnych paradygmatów programowania.

Podczas dyskusji nad przemówieniem Josha, pomysł został wyrażony w następujący sposób:

dodać możliwość rozwijania sterowników języka Rust do jądra Linuksa, co pozwoliłoby przy minimalnym wysiłku na stworzenie lepszych i bezpieczniejszych sterowników, które łagodzą problemy, takie jak dostęp do obszaru pamięci po jego zwolnieniu, odwoływanie się do zerowych wskaźników i wychodzenie poza ograniczenia bufor.

Grega Kroah-Hartmana, odpowiedzialny za utrzymanie stabilnej gałęzi jądra Linuksa orazx wyraził chęć dodania szkieletu sterownika Rusta do jądra, jeśli ma on jakąkolwiek rzeczywistą przewagę nad C, na przykład zapewni bezpieczne powiązania przez rdzeń API.Również Greg traktuje ten framework tylko jako opcję, która nie jest domyślnie aktywna, aby nie uwzględniać Rusta w liczbie zależności zestawu podstawowego.

Okazało się, że w tym kierunku pracuje już kilka zespołów. Na przykład programiści Fish in a Barrel przygotowali zestaw narzędzi do pisania ładowalnych modułów dla jądra Linuksa w języku Rust, używając zestawu abstrakcyjnych warstw na interfejsach i strukturach jądra w celu zwiększenia bezpieczeństwa.

Warstwy pośrednie są generowane automatycznie na podstawie plików nagłówkowych jądra dostępnych za pomocą narzędzia bindgen. Clang służy do budowy warstw pośrednich. Zmontowane moduły, oprócz warstw, używają pakietu staticlib.

W tym samym czasie rozwijany jest kolejny projekt, skupiający się na rozwoju kontrolerów do systemów wbudowanych oraz urządzenia Internetu rzeczy, które również używają bindgena do generowania kołnierzy na podstawie plików nagłówkowych jądra.

Struktura umożliwia poprawę bezpieczeństwa sterowników bez wprowadzania zmian w jądrze; Zamiast tworzyć dodatkowe poziomy izolacji dla sterowników w jądrze, proponuje się blokowanie problemów na etapie kompilacji przy użyciu bezpieczniejszego języka Rust.

Producenci sprzętu powinni być w stanie w pośpiechu opracować to podejście bez odpowiedniego audytu.

Nie wszystkie planowane funkcjonalności zostały jeszcze zaimplementowane, ale framework jest już całkiem odpowiedni do tego zadania i jest używany do napisania działającego sterownika dla dostarczonego kontrolera LAN9512 USB Ethernet na płycie Raspberry Pi 3.

Istniejący sterownik smsc95xx został napisany jako implementacja referencyjna podczas pisania sterownika Rust w języku C.

Należy zauważyć, że rozmiar modułu i obciążenie komponentów środowiska wykonawczego nie mają znaczenia podczas opracowywania sterownika dla Rusta, który umożliwia korzystanie z platformy dla urządzeń o ograniczonych zasobach.

źródło: https://hub.packtpub.com


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   L1 kan powiedział

    Nie mogę znaleźć informacji o sterowniku smsc95xx w kodzie źródłowym lub że coś zostanie zaimplementowane w Rust na Linuksie.