L'azienda Oracle ha rilasciato le versioni stabili della distribuzione Oracle Linux 9 e del kernel Unbreakable Enterprise Kernel 7 (UEK R7), concepito per essere utilizzato nella distribuzione Oracle Linux come alternativa al pacchetto con kernel di Red Hat Enterprise Linux. La distribuzione Oracle Linux 9 è basata sul pacchetto di Red Hat Enterprise Linux 9 ed è completamente compatibile a livello binario con essa.
Sono disponibili per il download senza limitazioni le immagini ISO di installazione, di dimensione 8.6 GB e 840 MB, preparate per le architetture x86_64 e ARM64 (aarch64). Per Oracle Linux 9 è aperto un accesso illimitato e gratuito al repository yum con aggiornamenti binari dei pacchetti per correzioni di errori (errata) e problemi di sicurezza. Sono disponibili anche repository supportati separatamente con set di pacchetti Application Stream e CodeReady Builder.
Oltre al pacchetto con il kernel di RHEL (basato sul kernel 5.14), Oracle Linux propone il proprio kernel Unbreakable Enterprise Kernel 7, basato sul kernel Linux 5.15 e ottimizzato per funzionare con software e hardware industriale Oracle. I sorgenti del kernel, inclusa la suddivisione in singoli patch, sono disponibili nel repository pubblico Git di Oracle. Il kernel Unbreakable Enterprise Kernel è installato per impostazione predefinita, posizionato come alternativa al pacchetto standard con il kernel RHEL e offre una serie di funzionalità avanzate, come l'integrazione di DTrace e un supporto migliorato per Btrfs. Oltre al kernel aggiuntivo, le versioni di Oracle Linux 9 e RHEL 9 sono completamente identiche in termini di funzionalità (l'elenco delle modifiche può essere consultato nell'annuncio di RHEL9).
Le principali novità nel kernel Unbreakable Enterprise Kernel 7:
- È stato migliorato il supporto per l'architettura Aarch64. La dimensione delle pagine di memoria sui sistemi ARM a 64 bit è stata ridotta per impostazione predefinita da 64 KB a 4 KB, cosa che si sposa meglio con le dimensioni di memoria e i tipi di carico tipici dei sistemi ARM.
- Continua la fornitura del sistema di debug dinamico DTrace 2.0, che è stato adattato per utilizzare il sottosistema del kernel eBPF. DTrace 2.0 opera su eBPF, analogamente a come fanno gli strumenti di tracciamento esistenti in Linux.
- Sono state ampliate le funzionalità del file system Btrfs. In Btrfs è stata aggiunta un'implementazione asincrona dell'operazione DISCARD per contrassegnare i blocchi liberati che non devono più essere fisicamente conservati. L'implementazione asincrona consente di non attendere il completamento del DISCARD da parte del dispositivo di archiviazione e di eseguire tale operazione in background. Sono state aggiunte nuove opzioni di montaggio per semplificare il recupero dei dati da un file system danneggiato: 'rescue=ignorebadroots' per il montaggio nonostante i danni a determinati alberi radice (extent, uuid, data reloc, device, csum, free space), 'rescue=ignoredatacsums' per disabilitare il controllo dei checksum per i dati e 'rescue=all' per abilitare simultaneamente le modalità 'ignorebadroots', 'ignoredatacsums' e 'nologreplay'. Sono state implementate significative ottimizzazioni delle prestazioni relative all'esecuzione delle operazioni fsync(). È stato aggiunto il supporto per fs-verity (verifica dell'autenticità e dell'integrità dei file) e per il mapping degli identificatori degli utenti.
- In XFS è stato implementato il supporto per le operazioni DAX per l'accesso diretto al file system, aggirando la cache delle pagine per escludere la doppia cache. Sono state apportate modifiche per risolvere i problemi con l'overflow del tipo di dati time_t a 32 bit nel 2038, comprese nuove opzioni di montaggio bigtime e inobtcount.
- Sono stati apportati miglioramenti al file system OCFS2 (Oracle Cluster File System).
- È stato aggiunto il file system ZoneFS, che semplifica il lavoro a basso livello con dispositivi di archiviazione zonati. I dispositivi zonati si riferiscono a dispositivi a disco rigido o NVMe SSD, il cui spazio di archiviazione è suddiviso in zone costituenti gruppi di blocchi o settori, nei quali è consentito solo l'aggiunta sequenziale di dati con l'aggiornamento dell'intero gruppo di blocchi. Il file system ZoneFS collega ogni zona nel dispositivo a un file separato che può essere utilizzato per archiviare dati in modalità raw senza interventi a livello di settori e blocchi, consentendo così alle applicazioni di utilizzare l'API dei file invece di accedere direttamente al dispositivo a blocchi tramite ioctl.
- È stata stabilizzata la supporto per il protocollo VPN WireGuard.
- Sono state ampliate le funzionalità del sottosistema eBPF. È stato implementato un meccanismo CO-RE (Compile Once — Run Everywhere) che risolve il problema della portabilità dei programmi eBPF compilati e consente di compilare il codice dei programmi eBPF solo una volta e utilizzare un caricatore universale speciale che adatta il programma caricato al kernel attuale e ai tipi BTF (BPF Type Format). È stato aggiunto un meccanismo 'BPF trampoline', che consente di ridurre praticamente a zero il sovraccarico nella trasmissione delle chiamate tra il kernel e i programmi BPF. Sono state fornite funzionalità per l'accesso diretto alle funzionalità del kernel dai programmi BPF e per la sospensione del gestore.
- È stato integrato un rilevatore di blocchi divisi («split lock»), che si verifica quando si accede a dati non allineati in memoria a causa del fatto che durante l'esecuzione di un'istruzione atomica i dati attraversano due linee della cache CPU. Il kernel può rilevare dinamicamente tali blocchi, che portano a un significativo calo delle prestazioni, e generare avvisi o inviare un segnale SIGBUS all'applicazione che ha causato il blocco.
- È supportato Multipath TCP (MPTCP), un'estensione del protocollo TCP per organizzare il funzionamento di una connessione TCP con la consegna dei pacchetti lungo più percorsi attraverso diverse interfacce di rete, associate a diversi indirizzi IP.
- Nel pianificatore di processi è stata implementata la modalità di pianificazione SCHED_CORE, che consente di gestire quali processi possono essere eseguiti contemporaneamente su un singolo nucleo CPU. A ciascun processo può essere assegnato un identificativo cookie che definisce il dominio di fiducia tra i processi (ad esempio, appartenenza a un singolo utente o contenitore). Nella gestione dell'esecuzione del codice, il pianificatore può garantire la condivisione di un nucleo CPU solo per i processi legati a un unico proprietario, il che può essere utilizzato per bloccare alcuni attacchi di tipo Spectre prevenendo l'esecuzione in un singolo thread SMT (Hyper Threading) di compiti affidabili e non affidabili.
- Per i cgroups è stato implementato un controller di allocazione della memoria slab (slab memory controller), caratterizzato dal trasferimento del conteggio dello slab dal livello delle pagine di memoria al livello degli oggetti del kernel, consentendo la condivisione delle pagine slab tra diversi cgroups, anziché separare le cache slab per ciascun cgroup. L'approccio proposto consente di aumentare l'efficienza dell'uso dello slab, riducendo del 30-45% la dimensione della memoria utilizzata per lo slab, diminuendo significativamente il consumo totale di memoria da parte del kernel e riducendo la frammentazione della memoria.
- È stata garantita la fornitura di dati di debug in formato CTF (Compact Type Format), che garantisce una memorizzazione compatta delle informazioni sui tipi C, le relazioni tra le funzioni e i simboli di debug.
- È stata interrotta la fornitura del modulo DRBD (Distributed Replicated Block Device) e del dispositivo /dev/raw (per l'accesso diretto ai file, utilizzare il flag O_DIRECT).
Fonte: opennet.ru
