Firma Oracle opublikowała jądro Unbreakable Enterprise Kernel 6

Firma Oracle przedstawiła pierwsza stabilna wersja Unbreakable Enterprise Kernel 6 (UEK R6), rozszerzona wersja jądra Linux, która jest reklamowana jako alternatywa dla wbudowanego pakietu z jądrem Red Hat Enterprise Linux w dystrybucji Oracle Linux. Jądro dostępne jest tylko dla architektur x86_64 i ARM64 (aarch64). Kody źródłowe jądra, w tym podział na pojedyncze poprawki, opublikowane są dostępne w publicznym repozytorium Git Oracle.

Pakiet Unbreakable Enterprise Kernel 6 bazuje na jądrze Linux 5.4 (UEK R5 oparty był na jądrze 4.14), które zostało wzbogacone o nowe możliwości, optymalizacje i poprawki, a także sprawdzono jego zgodność z większością aplikacji działających w RHEL, specjalnie optymalizowane dla oprogramowania i sprzętu Oracle. Pakiety instalacyjne i src z jądrem UEK R6 zostały przygotowane dla Oracle Linux 7.x i 8.x. Wsparcie dla gałęzi 6.x zostało zakończone, aby zastosować UEK R6, należy zaktualizować system do Oracle Linux 7 (nie ma żadnych przeszkód, aby używać tego jądra w odpowiednich wersjach RHEL, CentOS i Scientific Linux).

Kluczowe nowości Unbreakable Enterprise Kernel 6:

  • Rozszerzone wsparcie dla systemów opartych na 64-bitowej architekturze ARM (aarch64).
  • Zrealizowano wsparcie dla wszystkich możliwości Cgroup v2.
  • Wprowadzono ramy ktask do równoległego wykonywania zadań w jądrze, wymagających znaczących zasobów CPU. Na przykład, za pomocą ktask można zorganizować równoległe operacje czyszczenia zakresów stron pamięci lub przetwarzania listy inode;
  • Włączono równoległą wersję kswapd do obsługi operacji wymiany stron pamięci w trybie asynchronicznym, co pozwala na zmniejszenie liczby bezpośrednich (synchronicznych) operacji wymiany. Przy zmniejszeniu liczby wolnych stron pamięci kswapd skanuje, aby zidentyfikować nieużywane strony, które mogą być zwolnione.
  • Wsparcie dla weryfikacji integralności obrazu jądra i firmware'u na podstawie podpisu cyfrowego podczas ładowania jądra za pomocą mechanizmu Kexec (ładowanie jądra z już załadowanego systemu).
  • Przeprowadzono optymalizację wydajności systemu zarządzania pamięcią wirtualną, poprawiono efektywność czyszczenia stron pamięci i cache, polepszono obsługę zleceń dotyczących nieprzydzielonych stron pamięci (page faults).
  • Rozszerzono wsparcie dla NVDIMM, ponieważ ta pamięć trwała może być teraz używana jak tradycyjna RAM.
  • Przejście na system dynamicznego debugowania DTrace 2.0, który przetłumaczone opiera się na wykorzystywaniu podsystemu jądra eBPF. DTrace teraz działa na eBPF, tak jak obecne narzędzia śledzenia w systemie Linux działają na eBPF.
  • Wprowadzono ulepszenia w systemie plików OCFS2 (Oracle Cluster File System).
  • Ulepszono wsparcie dla systemu plików Btrfs. Dodano możliwość stosowania Btrfs na partycjach systemowych. W instalatorze dodano opcję wyboru Btrfs podczas formatowania urządzeń. Umożliwiono umieszczanie plików wymiany na partycjach Btrfs. W Btrfs dodano wsparcie dla kompresji przy użyciu algorytmu ZStandard.
  • Dodano wsparcie dla interfejsu asynchronicznego wejścia/wyjścia – io_uring, który wyróżnia się wsparciem dla pollingu wejścia/wyjścia oraz możliwością pracy zarówno z buforowaniem, jak i bez buforowania. Pod względem wydajności io_uring jest bardzo bliski SPDK i znacznie przewyższa libaio przy włączonym pollingu. Aby wykorzystać io_uring w aplikacjach końcowych działających w przestrzeni użytkownika, przygotowano bibliotekę liburing, która zapewnia wysokopoziomowe opakowanie nad interfejsem jądra;
  • Dodano wsparcie dla trybu Adiantum dla szybkiego szyfrowania nośników.
  • Dodano wsparcie dla kompresji przy użyciu algorytmu Zstandard (zstd).
  • W systemie plików ext4 wykorzystano 64-bitowe znaczniki czasu w polach superbloku.
  • W systemie XFS włączono narzędzia do informowania o stanie integralności systemu plików w czasie rzeczywistym oraz uzyskiwania statusu wykonania fsck na bieżąco.
  • Stos TCP domyślnie przesunięto na model „Early Departure Time” zamiast „As Fast As Possible” przy wysyłaniu pakietów. Dla UDP dodano wsparcie GRO (Generic Receive Offload). Dodano wsparcie dla odbioru i wysyłania pakietów TCP w trybie zero-copy.
  • Wprowadzono realizację protokołu TLS na poziomie jądra (KTLS), który teraz może być stosowany nie tylko do wysyłanych, ale i do odbieranych danych.
  • Jako backend dla zapory sieciowej domyślnie wykorzystano
    nftables. Opcjonalnie dodano wsparcie bpfilter.
  • Dodano wsparcie dla podsystemu XDP (eXpress Data Path), który umożliwia w systemie Linux uruchamianie programów BPF na poziomie sterownika sieciowego z możliwością bezpośredniego dostępu do bufora DMA pakietów i na etapie przed przydzieleniem bufora skbuff przez stos sieciowy.
  • Ulepszono i włączono w trybie UEFI Secure Boot Lockdown, który ogranicza dostęp użytkownika root do jądra oraz blokuje drogi omijania UEFI Secure Boot. Na przykład, w trybie lockdown ogranicza dostęp do /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, trybu debugowania kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), niektórych interfejsów ACPI oraz rejestrów MSR CPU, blokowane są wywołania kexec_file i kexec_load, zakazuje przejścia w stan uśpienia, limituje wykorzystanie DMA dla urządzeń PCI, zabrania importu kodu ACPI z zmiennych EFI, a manipulacje z portami wejścia/wyjścia, w tym zmiana numeru przerwania i portu wejścia/wyjścia dla portu szeregowego, są niedozwolone.
  • Dodano wsparcie dla rozszerzonych instrukcji IBRS (Enhanced Indirect Branch Restricted Speculation), które umożliwiają adaptacyjne zezwalanie i zakazywanie spekulacyjnego wykonywania instrukcji podczas przetwarzania przerwań, wywołań systemowych i przełączania kontekstu. W przypadku wsparcia Enhanced IBRS, metoda ta jest stosowana do ochrony przed atakami klasy Spectre V2 zamiast Retpoline, ponieważ pozwala uzyskać wyższą wydajność.
  • Poprawiono ochronę w katalogach, które mają ogólny dostęp do zapisu. W takich katalogach zabrania się tworzenia plików FIFO oraz plików należących do użytkowników, którzy nie są właścicielami katalogu z flagą sticky.
  • Domyślnie w systemach ARM włączona jest randomizacja adresów przestrzeni jądra (KASLR). Dla Aarch64 włączona jest autoryzacja wskaźników.
  • Dodano wsparcie dla "NVMe over Fabrics TCP".
  • Dodano sterownik virtio-pmem, który zapewnia dostęp do urządzeń pamięci masowej, odzwierciedlonych w fizycznej przestrzeni adresowej, takich jak NVDIMM.

Ź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