Wydanie systemu operacyjnego Redox OS 0.7 napisanego w języku Rust

Po półtora roku prac opublikowano wersję systemu operacyjnego Redox 0.7, opracowanego przy użyciu języka Rust i koncepcji mikrojądra. Opracowania projektu są rozpowszechniane na bezpłatnej licencji MIT. Do testowania systemu operacyjnego Redox oferowana jest instalacja i obrazy na żywo o rozmiarze 75 MB. Zespoły generowane są dla architektury x86_64 i są dostępne dla systemów z UEFI i BIOS.

Przygotowując nową wersję, główny nacisk położono na zapewnienie jej działania na prawdziwym sprzęcie. Główne innowacje:

  • Całkowicie przepisano program ładujący, w którym kod uruchamiania systemów z BIOS-em i UEFI jest ujednolicony i napisany głównie w języku Rust. Zmiana bootloadera znacznie rozszerzyła zakres obsługiwanego sprzętu.
  • Oprócz poprawek błędów w jądrze wykonano prace mające na celu poprawę wydajności i rozszerzenie obsługi sprzętu. Zmienne specyficzne dla procesora zostały przekonwertowane tak, aby korzystały z rejestru GS. Zapewnione jest odbicie (mapowanie) całej pamięci fizycznej, korzystanie ze stron pamięci rekurencyjnej zostaje zatrzymane. Kod asemblera we wstawkach wbudowanych został przepisany, aby poprawić zgodność z przyszłymi wydaniami kompilatora.
  • Dodano wstępne wsparcie dla architektury AArch64.
  • Dokonano przejścia na przetwarzanie wszystkich ścieżek plików w kodowaniu UTF-8.
  • Kod do pracy ze specyfikacją ACPI AML (ACPI Machine Language) - uefi.org został przeniesiony z jądra do procesu działającego w tle acpid działającego w przestrzeni użytkownika.
  • Zawartość Initfs została przeniesiona do nowego pliku, co ułatwia generowanie pakietów.
  • System plików RedoxFS został przepisany i przełączony na wykorzystanie mechanizmu CoW (Copy-on-Write), w którym zmiany nie nadpisują informacji, ale są zapisywane w nowej lokalizacji, co znacznie poprawiło niezawodność. Nowe funkcje RedoxFS obejmują obsługę aktualizacji transakcyjnych, szyfrowanie danych przy użyciu algorytmu AES, a także uwierzytelnianie danych i metadanych za pomocą podpisów cyfrowych. Zapewnione jest współdzielenie kodu FS w systemie i bootloaderze.
  • Kontynuowano udoskonalanie opracowanej w ramach projektu standardowej biblioteki C Relibc, zdolnej do pracy nie tylko w Redox, ale także w dystrybucjach opartych na jądrze Linuksa. Zmiany ułatwiły przenoszenie różnych programów do Redox i rozwiązały problemy z wieloma programami i bibliotekami napisanymi w C.
  • Przygotowano wersję kompilatora rustc, która może działać w środowisku Redox. Pozostałe zadania obejmują optymalizację wydajności i dostosowanie menadżera przesyłek ładunkowych do pracy w środowisku Redox.

Wydanie systemu operacyjnego Redox OS 0.7 napisanego w języku Rust

System operacyjny rozwija się zgodnie z filozofią Unix i zapożycza niektóre pomysły z SeL4, Minix i Plan 9. Redox wykorzystuje koncepcję mikrojądra, w której na poziomie jądra zapewniona jest tylko komunikacja między procesami i zarządzanie zasobami, a wszystkie inne funkcje są umieszczone w bibliotekach, z których można korzystać zarówno w jądrze, jak i aplikacjach użytkownika. Wszystkie sterowniki działają w przestrzeni użytkownika w izolowanych środowiskach piaskownicy. Aby zapewnić kompatybilność z istniejącymi aplikacjami, dostarczono specjalną warstwę POSIX, która umożliwia uruchamianie wielu programów bez przenoszenia.

System stosuje zasadę „wszystko jest adresem URL”. Na przykład adres URL „log://” może być używany do rejestrowania, „bus://” do komunikacji między procesami, „tcp://” do komunikacji sieciowej i tak dalej. Moduły, które można zaimplementować jako sterowniki, rozszerzenia jądra i niestandardowe aplikacje, mogą rejestrować własne procedury obsługi adresów URL, na przykład można napisać moduł dostępu we/wy i powiązać go z adresem URL „port_io://”, po czym możesz go użyć, aby uzyskać dostęp do portu 60, otwierając adres URL „port_io://60”.

Środowisko użytkownika w Redox jest zbudowane wokół własnej powłoki graficznej Orbital (nie mylić z inną powłoką Orbital, która używa Qt i Wayland) oraz zestawu narzędzi OrbTk, który zapewnia API podobne do Flutter, React i Redux. Netsurf jest używany jako przeglądarka internetowa. Projekt rozwija również własnego menedżera pakietów, zestaw standardowych narzędzi (binutils, coreutils, netutils, extrautils), powłokę poleceń ion, standardową bibliotekę C relibc, edytor tekstu podobny do vima sodu, stos sieciowy i plik system. Konfiguracja jest ustawiona w języku Toml.

Źródło: opennet.ru

Dodaj komentarz