EuroLinux 9

EuroLinux 9 – przełomowe zmiany

System EuroLinux 9 został zaprojektowany, aby sprostać potrzebom środowiska chmury hybrydowej. Dlatego może wydajnie uruchamiać kod, niezależnie od tego, czy jest on wdrożony na infrastrukturze fizycznej, w maszynie wirtualnej czy w kontenerach. Dziś przyjrzymy się bliżej, jak ważne zmiany wnosi względem poprzedniego wydania.

System EuroLinux 9 jest już z nami od pewnego czasu. Dziś przyjrzymy się bliżej, jak ważne zmiany wnosi względem poprzedniego wydania.

EuroLinux 9 został zaprojektowany, aby sprostać potrzebom środowiska chmury hybrydowej. Dlatego może wydajnie uruchamiać kod, niezależnie od tego, czy jest on wdrożony na infrastrukturze fizycznej, w maszynie wirtualnej czy w kontenerach.

Warto także wspomnieć, że na bazie EuroLinux 9 powstał EuroLinux Desktop – system przyjazny i łatwy w obsłudze dla osób na co dzień korzystających z systemów Windows® czy macOS®.

Języki programowania

  • Python 3.9 będzie wspierany przez cały cykl życia EuroLinux 9, czyli przynajmniej do 30 czerwca 2032 roku. Zawiera wiele nowych funkcji, w tym znaczniki czasu, nowe metody prefiksów i sufiksów łańcuchów, wydajne parsery, ulepszenia w zakresie multiprocesingu i wiele innych. Funkcje te pomagają programistom łatwo zmodernizować ich aplikacje
  • Node.js 16 zapewnia zmiany, które obejmują aktualizację silnika V8 do wersji 9.2, nowe API Timer Promises, nowe API strumieni internetowych oraz wsparcie dla menedżera pakietów npm w wersji 7.20.3. W ramach spełnienia najwyższych standardów bezpieczeństwa, oprogramowanie to jest kompatybilne z OpenSSL 3.0
  • Ruby 3.0.3 zawiera kilka poprawek wydajności, a także poprawki błędów i bezpieczeństwa. Niektóre z ważnych ulepszeń obejmują współbieżność i równoległość, analizę statyczną, dopasowywanie wzorców za pomocą wyrażeń case/in, przeprojektowane dopasowywanie wzorców jednowierszowych oraz dopasowywanie wzorców find pattern matching
  • Perl 5.32 zawiera wiele poprawek błędów i ulepszeń, w tym Unicode w wersji 13, nowy operator infiksowy czy szybsze sprawdzanie funkcjonalności
  • PHP 8.0 zawiera poprawki błędów i ulepszeń, takie jak użycie ustrukturyzowanej składni metadanych, nowo nazwane argumenty, które są niezależne od kolejności, poprawiona wydajność dla kompilacji Just In Time i wiele innych.

Runtime’y i kompilatory

EuroLinux 9 jest zbudowany na podstawie najnowszych runtime’ów i kompilatorów, w tym GCC 11.2.1 i zaktualizowanych wersji: LLVM 13.0.1, Rust 1.58 i Go 1.17, dzięki czemu umożliwia programistom modernizację ich aplikacji.

System zawiera zaktualizowane wersje podstawowych narzędzi deweloperskich, takich jak GCC 11.2.1, biblioteka glibc 2.34 i binutils 2.35. Nowe funkcje kompilatora GCC pomagają użytkownikom lepiej śledzić przepływ kodu, poprawić opcje debugowania i pisać zoptymalizowany kod dla efektywnego wykorzystania sprzętu. Nowy kompilator GCC zawiera modyfikacje dla kompilacji kodu C i C++, wraz z nowymi komunikatami debugowania dla logów. Programiści mają więc lepszy wgląd w to, jak działa ich kod.

Dzięki strumieniom aplikacji (Application Streams – AppStream) nowej generacji programiści mają większy wybór wersji popularnych języków programowania i narzędzi. Mogą również wybierać spośród wielu wersji komponentów przestrzeni użytkownika jako strumieni aplikacji, które są łatwe do aktualizacji. Zapewnia to większą elastyczność w dostosowywaniu systemu EuroLinux do własnego środowiska pracy. Zawartość strumieni aplikacji obejmuje również narzędzia i programy, które są szybko wydawane i często aktualizowane. Te strumienie aplikacji, zwane strumieniami kroczącymi (ang. rolling streams), są w pełni obsługiwane przez cały okres życia EuroLinux 9.

EuroLinux 9 rozszerza funkcjonalność modułowości z EuroLinux 8. W nowej wersji systemu wszystkie metody pakowania, takie jak Software Collections, Flatpaki i tradycyjne RPM, zostały włączone do strumieni aplikacji, ułatwiając programistom korzystanie z preferowanych pakietów.

Monitorowanie i maintenance

Konsola internetowa EuroLinux 9 (Cockpit) ma ulepszoną stronę z metrykami wydajności, która pomaga zidentyfikować potencjalne przyczyny nagłych wzrostów użycia procesora, pamięci, dysku i zasobów sieciowych. Dodatkowo, metryki podsystemów mogą zostać łatwo eksportowane do serwera Grafana.

Bezpieczeństwo

W EuroLinux 9 uwierzytelnianie użytkownika root za pomocą hasła przez SSH zostało domyślnie wyłączone. Konfiguracja OpenSSH wyłącza logowanie użytkownika root za pomocą hasła, uniemożliwiając tym samym napastnikom uzyskanie dostępu poprzez ataki brute-force na hasła. Zamiast używać hasła roota, programiści mogą uzyskać dostęp do zdalnych środowisk programistycznych przy użyciu kluczy SSH do logowania.

OpenSSL 3.0 dodaje koncepcję providera, nowy schemat wersjonowania i ulepszony HTTPS. Providerzy to kolekcje implementacji algorytmów. Deweloperzy mogą programowo wywoływać dowolnych providerów w oparciu o wymagania aplikacji. Wbudowane narzędzia EuroLinux zostały przekompilowane, aby wykorzystać OpenSSL 3.0. Dzięki temu użytkownicy mogą korzystać z nowych mechanizmów szyfrowania i ochrony informacji.

Kernel

EuroLinux 9.0 jest dystrybuowany z jądrem w wersji 5.14.0-70.

eBPF włączony tylko dla użytkowników uprzywilejowanych

Extended Berkeley Packet Filter (eBPF) to złożona technologia, która pozwala użytkownikom na wykonywanie niestandardowego kodu wewnątrz jądra systemu Linux. Ze względu na swoją naturę, kod eBPF musi przejść przez weryfikator i inne mechanizmy bezpieczeństwa. Istniały przypadki Common Vulnerabilities and Exposures (CVE), gdzie błędy w tym kodzie mogły zostać wykorzystane do nieautoryzowanych operacji. Aby zmniejszyć to ryzyko, eBPF został włączony w EuroLinux tylko dla uprzywilejowanych użytkowników. Możliwe jest włączenie eBPF dla nieuprzywilejowanych użytkowników poprzez użycie parametru linii poleceń jądra unprivileged_bpf_disabled=0. Zalecane jest, aby traktować procesy z właściwością (capability) CAP_BPF tak, jakby ta właściwość była równa CAP_SYS_ADMIN.

cgroup-v2 domyślnie włączony w EuroLinux 9

Control groups version 2 (cgroup-v2) implementuje pojedynczy model hierarchii, który upraszcza zarządzanie grupami kontrolnymi. Ponadto wersja ta zapewnia, że proces może być członkiem tylko jednej grupy kontrolnej w danym momencie. Głęboka integracja z systemd poprawia doświadczenie użytkownika końcowego podczas konfigurowania kontroli zasobów w systemie EuroLinux 9.

Rozwój nowych funkcji odbywa się głównie dla cgroup-v2 posiadającej pewne funkcje, których brakuje w cgroup-v1. Podobnie cgroup-v1 zawiera pewne starsze funkcje, których brakuje w cgroup-v2. Również interfejsy sterowania są różne. Dlatego oprogramowanie innych firm, które jest bezpośrednio zależne od cgroup-v1, może nie działać prawidłowo w środowisku cgroup-v2.

Aby użyć cgroup-v1, należy dodać następujące parametry do linii poleceń jądra:

systemd.unified_cgroup_hierarchy=0
systemd.legacy_systemd_cgroup_controller

Zmiany w jądrze potencjalnie wpływające na moduły jądra podmiotów trzecich

Dystrybucje Linuksa z jądrem w wersji wcześniejszej niż 5.9 obsługiwały eksportowanie funkcji GPL jako funkcji nieobjętych licencją. W rezultacie użytkownicy mogli łączyć zastrzeżone funkcje z funkcjami jądra GPL poprzez mechanizm shim. W tym wydaniu jądro EuroLinux zawiera zmiany, które zwiększają zdolność systemu do egzekwowania GPL poprzez odrzucanie shim.

64-bitowa architektura ARM ma rozmiar strony 4 KB w EuroLinux 9

Zdecydowano, aby ustalić rozmiar strony 4 KB pamięci fizycznej dla 64-bitowej architektury ARM w EuroLinux 9. Ten rozmiar dobrze pasuje do obciążeń i ilości pamięci obecnych w większości systemów opartych na ARM. Aby efektywnie wykorzystać duże rozmiary stron, należy użyć opcji huge pages, by zaadresować większą ilość pamięci lub obciążenia z dużymi zestawami danych.

Narzędzie strace wyświetla niedopasowania kontekstu SELinuxa

Istniejąca opcja --secontext programu strace została rozszerzona o parametr mismatch. Umożliwia on wypisanie oczekiwanego kontekstu wraz z rzeczywistym tylko w przypadku niedopasowania. Dane wyjściowe oddzielone są podwójnymi wykrzyknikami (!!) – najpierw kontekst rzeczywisty, a następnie oczekiwany. Parametry full,mismatch wypisują oczekiwany pełny kontekst wraz z rzeczywistym, ponieważ część kontekstów użytkownika jest niedopasowana. Jednak podczas korzystania z samego mismatch, sprawdza tylko część typu kontekstu. Oczekiwany kontekst nie jest drukowany, ponieważ część typu kontekstów pasuje.

Niedopasowania kontekstu SELinux mogą powodować problemy z kontrolą dostępu związane z SELinux. Niedopasowania wydrukowane w śladach wywołań systemowych mogą znacznie przyspieszyć sprawdzanie poprawności kontekstu SELinux. Ślady wywołań systemowych mogą również wyjaśnić specyficzne zachowanie jądra w odniesieniu do kontroli dostępu.

perf-top może sortować według określonej kolumny

Dzięki tej aktualizacji narzędzia do profilowania systemu perf-top można sortować próbki według dowolnej kolumny zdarzeń. Poprzednio zdarzenia były sortowane według pierwszej kolumny w przypadku, gdy próbkowane było wiele zdarzeń w grupie. Aby posortować próbki, należy użyć opcji linii poleceń --group-sort-idx i nacisnąć klawisz numeryczny, by posortować tabelę według pasującej kolumny danych. Warto zwrócić uwagę, że numeracja kolumn zaczyna się od 0.

Nowy pakiet: jigawatts

Checkpoint/Restore In Userspace (CRIU) jest linuksowym narzędziem umożliwiającym checkpointowanie i przywracanie procesów. Pakiet jigawatts zawiera bibliotekę Java, której celem jest zwiększenie użyteczności mechanizmów CRIU z poziomu aplikacji Java.

Nowe zachowanie komendy trace-cmd reset

Poprzednio polecenie trace-cmd reset przywracało konfigurację tracing_on do wartości 0. Nowym zachowaniem trace-cmd reset jest przywrócenie konfiguracji tracing_on do wartości domyślnej 1.

makedumpfile

makedumpfile obsługuje ulepszoną możliwość kompresji zstd

Dzięki temu ulepszeniu makedumpfile zawiera teraz możliwość kompresji Zstandard (zstd), która zapewnia wysoki stopień kompresji. To ulepszenie pomaga szczególnie w systemach z dużą ilością pamięci.

Kompresja zstd ma teraz dobrą równowagę pomiędzy rozmiarem zrzutu vmcore a czasem kompresji w porównaniu do poprzednich współczynników kompresji. W rezultacie ulepszony mechanizm kompresji tworzy teraz mniejszy plik vmcore z akceptowalnym, dobrym czasem kompresji.

Należy zauważyć, że dobry współczynnik kompresji zależy również od tego, jak system jest używany i jaki typ danych jest przechowywany w pamięci RAM.

makedumpfile zawiera ulepszone opcje, aby uzyskać szacowany rozmiar vmcore

Z tą implementacją, narzędzie makedumpfile zawiera teraz następujące opcje, które pomagają wydrukować szacunkowy rozmiar zrzutu dla aktualnie uruchomionego jądra:

  • --dry-run wykonuje wszystkie operacje określone przez inne opcje, ale nie zapisuje pliku wyjściowego
  • --show-stats wypisuje komunikaty raportu. Jest to alternatywa dla włączenia bitu 4 w poziomie podanym w opcji --message-level.

Należy pamiętać, że rozmiar pliku zrzutu może się różnić w zależności od stanu systemu w chwili wystąpienia awarii, a oszacowanie podane przez opcje może się różnić od rzeczywistego stanu.

numatop włączony na skalowalnych procesorach serwerowych Intel Xeon

numatop jest narzędziem, które śledzi i analizuje zachowanie procesów i wątków działających w systemach NUMA. Wyświetla metryki, które mogą zidentyfikować wąskie gardła wydajności związane z NUMA.

numatop wykorzystuje technologie próbkowania liczników wydajności Intela i kojarzy dane o wydajności z informacjami runtime Linuksa, aby zapewnić analizę w systemach produkcyjnych.

kexec_file_load został dodany jako domyślna opcja dla EuroLinux 9

EuroLinux 9.0 dodaje wywołanie systemowe kexec_file_load dla 64-bitowej architektury ARM. Zapewnia ona ładowanie plików kexec w jądrze dla kdump‘a. Poprzednio jądro uniemożliwiało ładowanie niepodpisanych obrazów jądra, gdy włączona była opcja Secure Boot. Mechanizm kdump najpierw próbował wykryć, czy włączony jest Secure Boot, a następnie wybierał interfejs startowy do uruchomienia. W konsekwencji niepodpisane jądro nie mogło zostać załadowane przy włączonym Secure Boot i określonej funkcji kexec_file_load().

Aktualizacja ta naprawia problem i niepodpisane jądro działa poprawnie w opisanym scenariuszu.

Pakiet kexec-tools obsługuje domyślne wartości rezerwacji pamięci crashkernel dla EuroLinux 9

Pakiet kexec-tools utrzymuje teraz domyślne wartości rezerwacji pamięci crashkernel. Usługa kdump używa domyślnej wartości do rezerwowania pamięci crashkernel dla każdego jądra. Ta implementacja poprawia również alokację pamięci dla kdump‘a, gdy system ma mniej niż 4GB dostępnej pamięci.

Należy pamiętać, że opcja crashkernel=auto w linii poleceń startowych nie jest już obsługiwana w EuroLinux 9 i późniejszych wydaniach.

Core scheduling

Dzięki funkcjonalności core scheduling użytkownicy mogą uniemożliwić współdzielenie tego samego rdzenia CPU przez zadania, które nie powinny sobie ufać. Podobnie, użytkownicy mogą definiować grupy zadań, które mogą współdzielić rdzeń CPU.

Poprawa wydajności na 64-bitowej architekturze ARM przy użyciu nierygorystycznego trybu iommu jako domyślnego

Wraz z tą aktualizacją, 64-bitowa architektura ARM domyślnie używa domeny leniwego bezpośredniego dostępu do pamięci (DMA) dla jednostki zarządzania pamięcią systemową (SMMU). Chociaż przynosi to znaczny wzrost wydajności, może wprowadzić okno pomiędzy odmapowaniem adresu a przepełnieniem Translation Lookaside Buffer (TLB) w SMMU. W poprzednich wersjach 64-bitowa architektura ARM domyślnie konfigurowała ścisłe domeny DMA, co powodowało spadek wydajności z powodu rozmiaru strony 4KB.

Wsparcie dla CPU hotplug w PMU hv_24x7 i hv_gpci

Dzięki tej aktualizacji, liczniki PMU poprawnie reagują na CPU hot-plugging. W rezultacie, jeżeli licznik zdarzeń hv_gpci działa na procesorze, który zostaje wyłączony, zliczanie przekierowuje się na inny procesor.

Sterownik IRDMA został wdrożony w EuroLinux 9

Sterownik IRDMA umożliwia korzystanie z funkcji RDMA w urządzeniach sieciowych Intel® obsługujących RDMA.

EuroLinux 9 dostarcza zaktualizowany Intel® Ethernet Protocol Driver for RDMA (IRDMA) dla urządzenia X722 Internet Wide-area RDMA Protocol (iWARP). EuroLinux 9 wprowadza również nowe urządzenie E810, które obsługuje iWARP i RDMA over Converged Ethernet (RoCEv2). Moduł IRDMA zastępuje starszy moduł i40iw dla X722 i rozszerza Application Binary Interface (ABI) zdefiniowany dla i40iw. Zmiana jest wstecznie kompatybilna ze starszym dostawcą X722 RDMA-Core (libi40iw).

Nowy parametr dla modułu bondingu jądra: lacp_active

EuroLinux 9 wprowadza parametr lacp_active dla modułu bondingu w jądrze. Parametr ten określa, czy wysyłać ramki Link Aggregation Control Protocol Data Unit (LACPDU) w określonych odstępach czasu.

Należy pamiętać, że ramki stanu LACPDU są nadal wysyłane podczas inicjalizacji lub unbindowania portu.

GNOME 40

Środowisko graficzne GNOME zostało zaktualizowane z wersji GNOME 3.28 do wersji GNOME 40 i zawiera wiele nowych funkcji.

Dostarcza nowy, ulepszony wygląd Podglądu aktywności. Nadaje on bardziej spójny wygląd i zapewnia lepsze wrażenia podczas nawigacji po systemie i uruchamiania programów. Obszary robocze są teraz ułożone poziomo, a przegląd okien i siatka programów są dostępne w pionie.

GNOME

Inne ulepszenia środowiska GNOME:

  • wydajność i wykorzystanie zasobów zostało znacznie poprawione
  • styl wizualny, w tym interfejs użytkownika, ikony i pulpit został odświeżony
  • programy GNOME nie korzystają już z menu aplikacji, które było dostępne z górnego panelu. Funkcjonalność ta jest teraz umieszczona w menu głównym w oknie aplikacji
  • przeprojektowano aplikację Ustawienia (Settings)
  • ulepszono udostępnianie ekranu i sesje zdalnego pulpitu
  • w przypadku korzystania z własnościowych sterowników NVIDIA, można teraz uruchamiać aplikacje przy użyciu dyskretnego układu GPU:
    • 1. Otwórz aplikację przegląd.
    • 2. Kliknij prawym przyciskiem myszy ikonę aplikacji na pulpicie.
    • 3. Wybierz w menu pozycję Uruchom na dyskretnym układzie GPU.
  • menu Power Off/Log Out zawiera teraz opcję Suspend oraz nową opcję Restart, która może zrestartować system do menu bootloadera po przytrzymaniu Alt
  • aplikacje Flatpak są teraz aktualizowane automatycznie
  • ikony aplikacji w przeglądzie można teraz grupować w foldery za pomocą przeciągania i upuszczania
  • aplikacja Terminal obsługuje teraz tekst od prawej do lewej strony i tekst dwukierunkowy
  • funkcja dostępności Pointer Location działa teraz w sesji Wayland. Gdy funkcja jest włączona, naciśnięcie klawisza Ctrl powoduje podświetlenie położenia wskaźnika na ekranie
  • rozszerzenia powłoki GNOME są teraz zarządzane przez program Extensions, a nie Oprogramowanie. Program Extensions obsługuje aktualizację rozszerzeń, konfigurację preferencji rozszerzeń oraz usuwanie i wyłączanie rozszerzeń
  • pole powiadomień zawiera teraz przycisk Nie przeszkadzać. Gdy przycisk jest włączony, powiadomienia nie są wyświetlane na ekranie
  • okna dialogowe systemu, które wymagają podania hasła, mają teraz opcję ujawnienia tekstu hasła przez kliknięcie ikony oka
  • aplikacja Oprogramowanie automatycznie wykrywa teraz np. mobilne sieci danych. Gdy bieżąca sieć to metered network, oprogramowanie wstrzymuje aktualizacje, aby zmniejszyć zużycie danych
  • każdy podłączony wyświetlacz może teraz używać innej częstotliwości odświeżania w sesji Wayland
  • ułamkowe skalowanie wyświetlacza jest dostępne jako opcja eksperymentalna. Zawiera ona kilka wstępnie skonfigurowanych współczynników ułamkowych.

Profile zasilania są już dostępne

W panelu Zasilanie w ustawieniach środowiska GNOME można teraz przełączać się między kilkoma profilami zasilania. Profile zasilania optymalizują różne ustawienia systemu dla wybranego celu.

Dostępne są następujące profile zasilania:

Performance – optymalizacja pod kątem wysokiej wydajności systemu i skrócenie czasu pracy baterii. Ten profil jest dostępny tylko w niektórych wybranych konfiguracjach systemu.

Balanced – zapewnia standardową wydajność systemu i zużycie energii. Jest to profil domyślny.

Power Saver – zwiększa żywotność baterii i zmniejsza wydajność systemu. Ten profil aktywuje się automatycznie przy niskim poziomie baterii.

Funkcjonalność profili zasilania jest dostępna z pakietu power-profiles-daemon, który jest zainstalowany domyślnie.

Lekkie środowisko dla pojedynczej aplikacji

W przypadku zastosowań graficznych, w których wykorzystywana jest tylko jedna aplikacja, dostępny jest teraz lekki interfejs użytkownika.

Użytkownik może uruchomić środowisko GNOME w sesji pojedynczej aplikacji, zwanej także kiosk mode. W tej sesji GNOME wyświetla tylko okno pełnoekranowe skonfigurowanej aplikacji.

Sesja pojedynczej aplikacji zużywa znacząco mniej zasobów niż standardowa sesja GNOME.

Banery klasyfikacji bezpieczeństwa przy logowaniu i w sesji pulpitu

Można teraz skonfigurować banery klasyfikacji, aby określić ogólny poziom klasyfikacji bezpieczeństwa systemu. Jest to przydatne we wdrożeniach, w których użytkownik musi znać poziom klasyfikacji bezpieczeństwa systemu, do którego jest zalogowany.

Banery klasyfikacji mogą być wyświetlane w następujących kontekstach, w zależności od konfiguracji:

  • w ramach uruchomionej sesji
  • na ekranie blokady
  • na ekranie logowania.

Banery klasyfikacji mogą mieć formę powiadomienia, które można odrzucić lub stałego banera.

Podsumowanie

EuroLinux 9 wprowadza przełomowe zmiany względem wydania nr 8. W tym artykule opisaliśmy najważniejsze zauważalne różnice techniczne, wizualne oraz dostarczane środowiska dla developerów.

EuroLinux 9 zawiera oczywiście znacznie więcej zmian. Zachęcamy do ich poznania podczas użytkowania systemu. Link do pobrania obrazu ISO: https://fbi.cdn.euro-linux.com/isos/EL-9.0-x86_64-20220613-appstream.iso.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.