Wydanie jądra Asterinas 0.19, napisanego w języku Rust i zgodnego z systemem Linux

Opublikowana została wersja 0.19 projektu Asterinas, rozwijającego jądro napisane w języku Rust, przeznaczone do użytku w systemach operacyjnych ogólnego przeznaczenia. Jądro zapewnia ABI (Application Binary Interface), kompatybilne z jądrem Linux, które może być wykorzystywane zamiast niego. Równolegle rozwijany jest dystrybucja Asterinas NixOS, łącząca jądro Asterinas z systemowym środowiskiem NixOS. Kod projektu rozwijany jest od 2022 roku i udostępniany na podstawie licencji MPL (Mozilla Public License).

Obecnie w jądrze zaimplementowano ponad 240 wywołań systemowych Linux. W dystrybucji Asterinas NixOS zweryfikowano działanie ponad 100 pakietów z NixOS na jądrze Asterinas. Wśród wspieranych pakietów znajdują się: Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama i Codex.

W jądrze zapewniona jest pełna obsługa architektury x86-64, częściowa obsługa ARM64, RISC-V 64 oraz x86-64 z izolacją opartą na Intel TDX, a także wstępna obsługa architektury LoongArch 64. Wśród priorytetowych obszarów zastosowań wymienia się systemy powiązane z Linux ABI, ale wymagające wyższego poziomu zabezpieczeń. Na przykład Asterinas proponuje się wykorzystać do tworzenia systemowego środowiska zabezpieczonego. maszyn wirtualnych, do izolacji których wykorzystuje się takie technologie, jak ARM CCA, AMD SEV i Intel TDX, oraz po stronie systemu gospodarza, zapewniającego uruchamianie kontenerów.

Aby zmniejszyć ryzyko wystąpienia błędów związanych z pamięcią, będących głównym źródłem najbardziej niebezpiecznych podatności, w trakcie pisania Asterinas zastosowano język Rust oraz strategię ograniczonego użycia bloków unsafe. Jądro zostało zbudowane w oparciu o architekturę framekernel, w której starano się połączyć możliwości izolacji mikrojąder z efektywnością jąder monolitycznych.

Komponenty jądra w Asterinas są umieszczane w wspólnej przestrzeni adresowej, a bezpieczeństwo osiąga się na poziomie logicznego podziału bezpiecznego kodu i kodu, w którym nie można wykluczyć wystąpienia problemów z bezpieczeństwem. Jądro dzieli się na dwie części, napisane w Rust: OS Framework i OS Services. W OS Services zabronione jest użycie bloków unsafe, a wszystkie operacje niskopoziomowe wymagające wykonania kodu w blokach unsafe są przeniesione do OS Framework i dostępne tylko poprzez wysokopoziomowe API. Wszystkie wywołania systemowe, systemy plików i sterowniki są realizowane na poziomie OS Services i nie mogą obejmować bloków unsafe.

Do opracowywania usług systemowych i modułów jądra dostarczany jest zestaw narzędzi OSDK (Operating System Development Kit), oferujący narzędzie cargo-osdk do tworzenia, budowania, testowania i uruchamiania komponentów systemu operacyjnego. Dla programistów przygotowany jest zestaw bibliotek OSTD (Operating System Standard Library), obejmujący edycję standardowych bibliotek Rust (crate std), dostosowaną do użytku w komponentach systemu operacyjnego.

Wśród zmian w Asterinas 0.19:

  • Zaimplementowany został podsystem DRM (Direct Rendering Manager), urządzenie /dev/dri, interfejs KMS (kernel mode setting) oraz sterownik «modesetting», które umożliwiły uruchomienie standardowego stosu graficznego opartego na X.Org Server i Mesa, zamiast wcześniej stosowanego sterownika fbdev wykorzystującego framebuffer.


  • Dodano obsługę architektury AArch64 (ARM64), która teraz jest używana jako główna architektura w trakcie rozwoju, obok x86-64. Dla AArch64 zaimplementowano drugi poziom wsparcia, obejmujący funkcjonalność podstawową, walidację w systemie ciągłej integracji oraz częściowe pokrycie testami.
  • Kontynuowano prace nad adaptacją Asterinas do uruchamiania jako systemu gościa w kontenerach VM Kata Containers i Confidential Containers. Zaproponowano nową implementację Overlayfs, która pomyślnie przechodzi standardowe zestawy testowe FS jądra Linux i xfstests. Wdrożono nowe API montowania. Stabilizowano kod virtio-fs. Dodano wsparcie dla protokołu
    direct-boot, używanego w QEMU, Cloud Hypervisor i Firecracker. Przyspieszono uruchamianie w maszynach wirtualnych, pamięci, której szyfrowanie odbywa się za pomocą technologii Intel TDX.
  • W ramach frameworka OSTD (Operating System Standard Library) zrealizowano podstawowe API do tworzenia minimalistycznych hipernadzorców opartych na Intel VMX.
  • Dodano wsparcie dla modelu tworzenia sterowników w języku Rust. Dodano komponent aster-device z funkcjonalnością przypominającą komponenty jądra Linux z podstawowymi prymitywami i abstrakcjami do rozwoju sterowników, ale napisany w Rust bez kodu unsafe.
  • Zapewniono możliwość własnej rekompilacji (self-hosting) — z środowiska z jądrem Asterinas i pakietami NixOS teraz można zbudować jądro Asterinas.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster