Firma Oracle pierwsza stabilna wersja (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, są dostępne w publicznym repozytorium Git Oracle.
Pakiet Unbreakable Enterprise Kernel 6 bazuje na jądrze (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 i . 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 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 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 dla szybkiego szyfrowania nośników.
- Dodano wsparcie dla kompresji przy użyciu algorytmu (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 „” 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 . - 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 , 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
