Neue Funktionen und Änderungen in UEK R6

Übersicht über wichtige Änderungen in UEK R6

In den folgenden Abschnitten werden die wichtigsten neuen Features von Unbreakable Enterprise Kernel Release 6 (UEK R6) im Vergleich zu UEK R5 beschrieben. Eine Zusammenfassung der wichtigsten Features in diesem Release folgt:

  • Linux 5.4 stabile Kernel-Basis

    Das 5.4 Mainline-Kernel-Release, das als Basiskernel für UEK R6 verwendet wird, umfasst viele Upstream-Kernelfeatures und Verbesserungen gegenüber früheren Releases und über RHCK. Eine Liste der Hauptfeatures und -verbesserungen, die in diesem Kernel anstelle der vorherigen Hauptversion von UEK verfügbar sind, finden Sie unter Kernelfunktionalität.

  • Armstütze

    Viele Features und Verbesserungen in dieser Version zielen auf eine verbesserte Unterstützung für die Arm (aarch64)-Plattform ab. Bemerkenswerte Änderungen umfassen Sicherheitsverbesserungen und verbesserte Virtualisierungsunterstützung auf Arm. Weitere Informationen finden Sie unter Arm (aarch64) Platform.

  • Verbesserungen für Cgroup v2

    Die Cgroup-v2-Funktionalität wurde erstmals in UEK R5 eingeführt, um die Funktionalität des CPU-Controllers zu aktivieren. UEK R6 umfasst alle Cgroup v2-Funktionen sowie verschiedene Verbesserungen, die unter Core Kernel-Funktionalität beschrieben werden.

  • ktask-Verbesserungen

    ktask ist ein Framework zur Parallelisierung CPU-intensiver Arbeit im Kernel. Es kann verwendet werden, um große Aufgaben auf Systemen mit viel verfügbarer CPU-Leistung zu beschleunigen, bei denen eine Aufgabe ein Thread im Benutzerbereich ist. ktask bietet eine generische API, die hinzugefügt werden kann gleichzeitiger Zugriff auf viele verschiedene Arten von Aufgaben bei gleichzeitiger Reduzierung der Komplexität bei der Verwaltung mehrerer Threads und wird während der Strukturseiteninitialisierung und der VFIO-fähigen KVM-Gastinitialisierung verwendet, um die Startzeiten zu verkürzen.

    Dokumentation für ktask wird in /usr/share/doc/kernel-uek-doc-5.4/core-api/ktask.html bereitgestellt, obwohl die Schnittstelle noch nicht stabil ist.

  • Parallelisierter kswapd

    Das Ersetzen von Seiten wird im Kernel asynchron durch kswapd und synchron durch Direct Reclaim abgewickelt. Wenn freie Seiten in der Freeliste der Zone niedrig sind, durchsucht kswapd Seiten nach nicht verwendeten Seiten, die entfernt werden können, um Speicherplatz für neue Seitenzuweisungen freizugeben. Diese Optimierung kann die Performance verbessern, indem direkte Rückforderungen vermieden werden, die ressourcenintensiv und zeitaufwendig sein können.

  • Kexec-Firmwaresignatur

    Die Option zum Prüfen und Validieren einer Kernel-Abbildsignatur ist in UEK R6 aktiviert. Wenn kexec zum Laden eines Kernels aus UEK R6 verwendet wird, können die Signaturprüfung und -validierung des Kernel-Abbilds implementiert werden, um sicherzustellen, dass ein System nur ein signiertes und validiertes Kernel-Abbild lädt.

  • Verbesserungen der Speicherverwaltung

    Im Speicherverwaltungscode des Kernels wurden mehrere Leistungsverbesserungen implementiert, um die Effizienz beim Löschen von Seiten und Cache sowie Verbesserungen bei Fehlerverwaltung und Reporting zu verbessern. Weitere Informationen finden Sie unter Memory Management.

  • NVDIMM-Updates

    NVDIMM-Feature-Updates wurden implementiert, so dass persistenter Speicher jetzt als herkömmlicher RAM verwendet werden kann, und ein Update, das zur Standardisierung der Zero-Key-Löschfunktion beiträgt, wurde ebenfalls enthalten. Weitere Informationen finden Sie unter Core Kernel-Funktionalität.

  • DTrace v2.0

    Die DTrace-Unterstützung ist in UEK R6 aktiviert und wurde erneut implementiert, um den Berkeley Packet Filter (BPF) zu verwenden, der in den Linux-Kernel integriert ist. Die aktuelle Version ist das erste Dtrace-Release, das auf der neuen Implementierung basiert. Es erreicht noch keine Featureparität mit DTrace auf UEK R5, aber das wird es in Zukunft tun. Weitere Verbesserungen wurden vorgenommen, um die RPMs zu vereinfachen, die für DTrace aufgrund von Verbesserungen in der Upstream-Toolchain verfügbar sind. Weitere Informationen finden Sie unter DTrace v2.0.

  • OCFS2

    Unterstützung für das OCFS2-Dateisystem ist in UEK R6 aktiviert. Weitere Informationen hierzu finden Sie in OCFS2.

  • Unterstützung von Btrfs-Dateisystemen

    Die Unterstützung des Btrfs-Dateisystems ist auf Oracle Linux 8-Systemen aktiviert, wenn UEK R6 auf dem System installiert ist. In dieser Version wurden weitere Verbesserungen an Btrfs vorgenommen. Weitere Informationen finden Sie unter Btrfs.

Core Kernel-Funktionalität

Im Upstream-Kernel wurden zwischen dem 4.14-Release, das als Basis-Kernel-Version für UEK R5 verwendet wurde, und dem 5.4-Kernel-Release, das als Basis-Kernel-Version für UEK R6 verwendet wird, mehrere Haupt-Kernel-Funktionen implementiert. Obwohl einige Funktionen in Update-Releases in den UEK R5-Kernel zurückportiert wurden, sind die folgenden wichtigen neuen Funktionen in UEK R6 verfügbar:

  • Sperrmodus (nur x86_64)

    Der Sperrmodus wurde erheblich verbessert, und es gibt mehrere Implementierungsänderungen, die erwähnenswert sind. In diesem Release wird zwischen den Modi Integrität und Vertraulichkeit unterschieden. Weitere Informationen zu diesem Feature finden Sie unter Sicherheit.

  • fs-Verität

    fs-verity ist eine Kernel-Funktion, mit der Dateisysteme sich verbinden können, um die Integrität und Authentizität von schreibgeschützten Dateien zu schützen. Diese Funktion kann verwendet werden, um nicht böswillige Dateibeschädigung und böswillige Änderung von Dateien zu erkennen, die auf einem System nicht geändert werden sollten. Diese Funktion funktioniert derzeit nur mit ext4- und f2fs-Dateisystemen.

  • Hochleistungs-asynchrones I/O mit io_uring

    Dieses Feature bietet eine schnelle, skalierbare asynchrone I/O-Schnittstelle für gepufferte und nicht gepufferte I/Os. Es unterstützt auch asynchrones, abgefragtes I/O. Eine Benutzerbereichsbibliothek, liburing, bietet grundlegende Funktionen für Anwendungen mit Helfern, damit Anwendungen eine io_uring-Instanz einfach einrichten und I/O weiterleiten/abschließen können.

  • Cgroup-Aktualisierungen

    Die vollständige Cgroup v2-Funktionalität ist in UEK R6 enthalten. Die Funktionalität in UEK R5 umfasste einige Funktionen, wie den CPU-Controller, mit dem CPU-Ressourcen für eine bestimmte Aufgabengruppe festgelegt werden konnten. UEK R6 enthält diese Funktionen sowie die folgenden bemerkenswerten Verbesserungen:

    • Ein gruppenbezogener OOM-Killer, mit dem eine cgroup als einzelne Einheit abgebrochen werden kann, um die Integrität einer Workload zu gewährleisten. Diese Funktionalität kann aktiviert werden, indem memory.oom.group im cgroup v2-Speichercontroller festgelegt wird. Diese Einstellung bestimmt, dass es sich bei der cgroup um eine unteilbare Arbeitslast handelt, und Aufgaben zusammen mit ihren Nachkommen werden vom OOM-Killer zusammen oder überhaupt nicht abgebrochen.

    • cgroupsv2 wird ein Gefriercontroller hinzugefügt, mit dem die Arbeitslast in einer cgroup gestoppt und einige Ressourcen vorübergehend freigegeben werden können.

    • In diesem Release wird blk-iocost eingeführt, ein auf I/O-Kosten basierendes Modell, das proportionalen Controller für die Arbeit konserviert. Derzeit ist ein einfaches lineares Kostenmodell integriert, bei dem jedes I/O als sequenziell oder zufällig klassifiziert wird und dementsprechend Basiskosten berechnet werden. Zusätzliche größenproportionale Kosten werden dann oben addiert.

  • NVDIMM

    Persistenter Speicher kann jetzt als herkömmlicher RAM verwendet werden. Darüber hinaus wurden Fixes um die sicherheitsbezogenen Befehle innerhalb von libnvdimm implementiert, um die Verwendung von Schlüsseln zu ermöglichen, bei denen Nutzdaten mit Nullwerten gefüllt wurden, damit sichere Operationen weiterhin dort stattfinden können, wo ein Nullschlüssel verwendet wird. Es wurde eine gemeinsame Implementierung eingeführt, um sicherzustellen, dass alle Befehle dieselbe Zero-Key-Semantik verwenden und dass das sichere Löschen von Daten auf einem NVDIMM dort durchgeführt werden kann, wo ein Zero-Key verwendet wird. Diese Änderung ist wichtig, da einige NVDIMM-Plattformen die Sicherheit mit einem Standard-Nullschlüssel aktivieren, anstatt den anfänglichen Schlüssel vom Betriebssystem angeben zu lassen, was verhindern könnte, dass Vorgänge dort funktionieren, wo die Sicherheit aktiviert war.

Arm-Plattform (aarch64)

Die folgenden bemerkenswerten ARM-Funktionen sind in UEK R6 implementiert:

  • Sicherheitsverbesserungen

    Verschiedene Verbesserungen wurden vorgenommen, um die Abwehr von Angriffen zu verbessern, darunter die folgenden: Syscall-Wrapper, Zeigerauthentifizierung, KASLR-(Kernel Virtual Address Randomization-)Unterstützung und PSTATE.SSBS-Bitunterstützung (ARM v8.5-Cores).

  • Speicher-Hotplug

    Core-Unterstützung für Hot Plugging-Speicher.

  • KVM-Verbesserungen

    Verbesserungen für KVM-Gäste auf ARM-Systemen (aarch64) umfassen die Unterstützung der Zeigerauthentifizierung (ARM v8.3) und der skalierbaren Vektorerweiterung (SVE).

Verschlüsselung

Die folgenden bemerkenswerten kryptografischen Funktionen sind in UEK R6 implementiert:

  • Vereinfachte Schlüsselbeschreibungsverwaltung

    Schlüssel und Schlüsselanhänger sind Namespace-bezogener.

  • Z-Standardkomprimierung

    Zstandard-Komprimierung (zstd) wird zu Krypto und Scompress hinzugefügt. Nur die Standardebene ist aktiviert.

DTrace v2.0

DTrace v2.0 ist eine Neuimplementierung von DTrace, das vorhandene Linux-Kernel-Tracing-Funktionen wie eBPF verwendet, die beim ersten Portieren von DTrace auf Linux nicht vorhanden waren. Mit der neuen Implementierung werden DTrace-Abhängigkeiten von speziellen Kernel-Patches entfernt.

DTrace v2.0 ist nur mit UEK R6 verfügbar. Frühere Versionen von UEK enthalten weiterhin die ursprüngliche DTrace-Implementierung.

DTrace V2.0 auf Oracle Linux 8 wurde als User Space-Anwendung neu implementiert. Die libdtrace-ctf-Bibliothek muss nicht mehr unter Oracle Linux 8 ausgeführt werden. Die Funktionalität dieser Bibliothek ist in die Oracle Linux 8 GNU-Toolchain integriert. Beachten Sie, dass libdtrace-ctf weiterhin für Oracle Linux 7 erforderlich ist.

Funktionalität wird bereitgestellt, sobald sie verfügbar wird, beginnend mit einem begrenzten Satz von Funktionen (vor allem Framework-Funktionalität, die nicht viele sichtbare Funktionen für Benutzer bietet), aber letztendlich die frühere Unterstützung erreicht und dann übertrifft.

  • Bemerkenswerte Änderungen und Verbesserungen

    Die folgenden bemerkenswerten Änderungen und Verbesserungen sind enthalten:

    • Die meisten zugrunde liegenden Core-DTrace-Funktionen werden im Benutzerbereich neu implementiert (D-Compiler, Provider-API, Stichprobenverwaltung). Ein Großteil dieser Funktionalität lag zuvor im Kernel.

    • Der D-Compiler ist nun darauf ausgerichtet, eBPF-Code zu generieren, und der größte Teil der D-Sprache wird bereits vom Compiler unterstützt.

    • Berichtsausgabe der BPF-Verifizierung ist aktiviert. Wenn kompilierte D-Skripte als BPF-Programme in den Kernel geladen werden, führt der BPF-Verifizierer eine statische Codeanalyse durch, um die Sicherheit des Programms zu gewährleisten. Wenn diese Analyse nicht erfolgreich verläuft, wird die Ausgabe generiert, und DTrace meldet diese Ausgabe an den Benutzer.

    • Function Boundary Tracing-(FBT-)Probes werden mit nach Modul gruppierten Funktionen aktiviert (unabhängig davon, ob das Modul kompiliert oder geladen werden kann), wenn der Kernel diese Informationen in /proc/kallsyms (oder /proc/kallmodsyms) bereitstellt.

    • Syscall-Eintrags- und Rückgabesonden (systrace provider) sind aktiviert, wobei typisierte Stichprobenargumente unterstützt werden. Derzeit nur in der -lv-Ausgabe verfügbar.

    • Statically Defined Tracing-(SDT-)Probes, die auf Linux-Tracepoints basieren, werden mit Unterstützung für typisierte Probe-Argumente aktiviert. Derzeit nur in der -lv-Ausgabe verfügbar.

  • Bemerkenswerte Einschränkungen

    Einschränkungen der Anmerkung umfassen:

    • Die Funktion printf() ist noch nicht implementiert. Verwenden Sie trace().

    • Die Aktion trace() funktioniert derzeit nur für numerische Werte, nicht für Zeichenfolgen.

    • Die meisten Aktionen, wie exit(), sind noch nicht implementiert.

    • Von den drei Variablengeltungsbereichen sind Global ("x") und thread-local ("self->x") noch nicht implementiert

    • Viele Provider (wie dtrace oder Profil) - einschließlich Probes wie BEGIN, END und profile-1n - sind noch nicht funktionsfähig

    • Probe-Beschreibungen (provider:module:function:name), die mit mehreren Stichproben durch die Verwendung von Platzhaltern übereinstimmen, werden noch nicht unterstützt. Beispiel: write:entry funktioniert, weil es nur syscall:vmlinux:write:entry entspricht, write:* jedoch nicht, weil es sowohl syscall:vmlinux:write:entry als auch syscall:vmlinux:write:return entspricht.

Beispielverwendung

Die folgenden Beispiele veranschaulichen die aktuelle Funktionalität in DTrace v2.0 auf UEK R6. Beispiele gehen davon aus, dass Befehle als root ausgeführt werden und /usr/sbin im PATH enthalten ist.

  • DTrace-Versionsinformationen anzeigen:

    # dtrace -V
    DTrace 2.0.0 [Pre-Release with limited functionality]
    dtrace: Oracle D 2.0
  • Stichproben auflisten:

    # dtrace -l
    DTrace 2.0.0 [Pre-Release with limited functionality]
    ID   PROVIDER    MODULE                     FUNCTION NAME
    1     dtrace                                        BEGIN
    2     dtrace                                        END
    3     dtrace                                        ERROR
    4        fbt   vmlinux     trace_initcall_finish_cb entry
    5        fbt   vmlinux     trace_initcall_finish_cb return
    6        fbt   vmlinux         initcall_blacklisted entry
    7        fbt   vmlinux         initcall_blacklisted return          

    Auf diesem speziellen System gab es:

    • 3 dtrace-Sonden

    • 87890 fbt-Sonden (basierend auf kprobes)

    • 1262 sdt-Sonden (basierend auf Linux-Tracepoints)

    • 666 Syscall-Sonden

  • Beispielskript, das die Option -S verwendet, um den kompilierten D-Code als eBPF-Programm auszugeben, und das die Option -e verwendet, um nach der Kompilierung zu beenden:

    # dtrace -Sen 'write:entry { trace(1) }'
    DTrace 2.0.0 [Pre-Release with limited functionality]
    
    Disassembly of ::write:entry
              
    DIFO 0x46af600 returns D type (integer) (size 8) [record 16 bytes]
    INS OFF  OPCODE                  INSTRUCTION
    000 000: 62 a 0 fef8 ffffffff    stw  [%fp-264], -1     ! = EPID
    001 008: 62 a 0 fefc 00000000    stw  [%fp-260], 0
    002 016: 7a a 0 ff00 00000000    stdw [%fp-256], 0
    003 024: 7a a 0 ff08 00000000    stdw [%fp-248], 0
    004 032: 7a a 0 ff10 00000000    stdw [%f
    [...]
  • Beispielskript:

    # dtrace -n '
    write:entry,
    write:return
    {
    this->x = 3;                /* clause-local variables */
    this->y = 8;
    trace(this->x * this->y);
    trace(&`max_pfn);
    }'

    In den oben genannten Anweisungen gilt Folgendes:

    • Sonden write()-Systemaufruf-Ein- und -Ausgang (mehrere Sonden gleichzeitig);

    • Nachfragen mit der Aufzeichnung der Adresse einer Kernel-ID (max_pfn) und anderer Datenelemente;

    • Probes werden mit derselben Aktion benannt (explizit keine Platzhalter).

    • Es werden Clause-lokale Variablen verwendet.

    • Die Aktion trace() wird zum Melden der Ausgabe verwendet.

Dateisysteme

Die folgenden bemerkenswertesten Funktionen wurden für Dateisysteme in UEK R6 implementiert:

Btrfs

Btrfs werden weiterhin in UEK unterstützt. In diesem Update wurden mehrere Verbesserungen und Patches eingespielt, darunter Unterstützung für Swap-Dateien, ZStandard-Komprimierung und verschiedene Leistungsverbesserungen. Die Btrfs-Unterstützung für Root-Dateisysteme wird in Oracle Linux 8.3 eingeführt.

ext4

Den Superblock-Feldern wurden 64-Bit-Zeitstempel hinzugefügt.

OCFS2

OCFS2 wird weiterhin in UEK unterstützt. In diesem Update wurden mehrere Verbesserungen und Patches eingespielt, darunter Unterstützung für die AIO-Funktion "nowait", Unterstützung auf Arm-Plattformen und Lesen des Zeitschriften-Superblocks für Online- und Offline-Vorgänge.

XFS

Eine neue Infrastruktur für das Online-Zustandsreporting und ein Benutzerbereichs-ioctl zum Abrufen des Metadatenzustands nach dem Hinzufügen von Online-fsck. Ebenfalls in dieser Version hinzugefügt ist Unterstützung für die Zuordnung von Swap-Dateien und Swap-Dateien auf Echtzeitgeräten sowie teilweise Reflink-Unterstützung. Es wurden auch verschiedene Leistungsverbesserungen vorgenommen.

NFS

Leistungsverbesserungen und Verbesserungen wurden an RPC und den NFS-Client- und -Serverkomponenten vorgenommen. Für NFS mit RDMA wurden signifikante Verbesserungen vorgenommen. Zu den Verbesserungen gehören: mehrere TCP NFSv4.1+-Clientverbindungen pro Server für verbesserten Durchsatz durch Hardwareparallelität, verbessertes Soft-Mount-Verhalten und verbesserte Diagnose.

Speicherverwaltung

Die folgenden bemerkenswerten Speicherverwaltungsfunktionen sind in UEK R6 implementiert:

  • TLB-Spülung

    Der TLB-Spülcode wurde verbessert, um unnötige Flushes zu vermeiden und TLB-Shootdowns zu reduzieren.

  • Riesige Seitenbereinigung

    Die Speicherverwaltung wird verbessert, um den Durchsatz zu verbessern, indem das Löschen großer Seiten optimal genutzt wird.

  • Verbesserungen beim Seitencache

    Die Effizienz des Seitencaches wird durch den effizienteren Datentyp "Röntgen" verbessert.

  • Verbesserte Fragmentierungsvermeidung

    Algorithmen zur Fragmentierungsvermeidung werden verbessert und die Verdichtungs- und Defragmentierungszeiten sind schneller.

  • Verbesserungen der THP-Fehlerbehandlung

    Es wurden Verbesserungen bei der Behandlung von THP-Fehlern (Transparent Huge Page) und zur besseren Berichterstattung über den THP-Status implementiert.

Netzwerk

Die folgenden bemerkenswerten Netzwerkfunktionen sind in Unbreakable Enterprise Kernel Release 6 implementiert:

  • TCP - Früheste Abfahrtszeit

    Der TCP-Stack verwendet jetzt das Modell "Vorzeitige Abreise" zum Senden von Paketen anstelle des Modells "So schnell wie möglich". Diese Verbesserung bringt mehrere Leistungssteigerungen mit sich, da sie eine Einschränkung im ursprünglichen TCP/IP-Framework löst und das geplante Release von Paketen zur Überwindung von Hardwarebeschränkungen und -engpässen einführt.

  • Generische Eingangsauslagerung

    GRO ist für das User Datagram Protocol (UDP) aktiviert.

  • TLS empfangen

    In der vorherigen UEK-Version konnte der Kernel TLS-Nachrichten senden. In diesem Release kann der Kernel auch TLS-Nachrichten empfangen. Die Implementierung der Kernel-Handhabung von TLS-Verbindungen bietet erhebliche Leistungssteigerungen gegenüber Implementierungen, die auf den Speicherplatz des Benutzers beschränkt sind.

  • TCP-Empfang ohne Kopie

    In der früheren UEK-Version wurde eine TCP-Funktion ohne Kopiervorgang zum Senden von Paketen an das Netzwerk eingeführt. Dieses Release ermöglicht den Empfang von Funktionen für TCP ohne Kopiervorgang.

  • Paketfilterung

    nftables ist jetzt das Standard-Backend für Firewallregeln. BPF-basierte Netzwerkfilterung (bpfilter) wird ebenfalls in diesem Release hinzugefügt.

  • Express-Datenpfad (XDP) hinzugefügt

    XDP ist ein flexibler und minimaler Kernel-basierter Pakettransport für Hochgeschwindigkeitsnetzwerke.

RDMA

Remote Direct Memory Access (RDMA) ist eine Funktion, die den direkten Speicherzugriff zwischen zwei Systemen ermöglicht, die über ein Netzwerk verbunden sind. RDMA ermöglicht Networking mit hohem Durchsatz und geringer Latenz in Clustern.

Unbreakable Enterprise Kernel Release 6 umfasst RDMA-Funktionen, die im Upstream-Kernel bereitgestellt werden, einschließlich der Ksplice- und DTrace-Funktionalität.

UEK R6 behält die Featureparität mit UEK R5 bei und enthält die folgenden bemerkenswerten Upstreamupdates:

  • Infrastruktur für dynamische Statistiken

    Eine dynamische Statistikinfrastruktur wurde implementiert, um die Überwachung verschiedener Objekte zu erleichtern, indem sie an Zähler gebunden werden, die über eine Netlink-Schnittstelle zugänglich sind.

  • Verbs-Flusszähler

    Patches wurden eingespielt, um eine API bereitzustellen, mit der Benutzer-Space-Anwendungen die Echtzeit-Verkehrsaktivität und die Ereignisse der von ihr verwalteten Verbenobjekte überwachen können.

  • RDMA ioctl()-Verbesserungen

    Zur Verbesserung von RDMA ioctl() wurden verschiedene Updates eingespielt. Erheblich werden neue Header verwendet, und die Benennung wurde konsistenter gemacht. Der uverbs_ioctl-Header wurde erweitert, um driver_id einzuschließen, und die kompakte Darstellung von uverbs_attr_spec ist aktiviert.

  • RDMA Ressourcenverfolgung

    Eine allgemeine Infrastruktur für die RDMA-Ressourcenverfolgung wurde implementiert. Mit dieser Infrastruktur werden detaillierte Informationen zum Queue Pair (QP) sowie Informationen zur globalen Ressourcenauslastung bereitgestellt.

  • CQ-Moderation wird dem Benutzerbereich ausgesetzt

    Patches werden eingespielt, um die Abschlusswarteschlange (Completion Queue, CQ) für Benutzerbereich-Anwendungen verfügbar zu machen, um die Anzahl der CQEs zu steuern, die zum Erstellen eines Ereignisses erforderlich sind. Durch diese Änderung erhalten Benutzeranwendungen mehr Kontrolle, um die Performanceoptimierung zu verbessern.

  • Verbesserte Namespace-Funktion

    Zur Verbesserung der Namespace-Funktionalität wurden verschiedene Patches eingespielt. Ein Patch, mit dem Sie den Netz-Namespace eines RDMA-Geräts sicher ändern können, wurde angewendet, um einen Befehl hinzuzufügen. Die gemeinsame Verwendung von Geräten in mehreren Netz-Namespaces ist deaktiviert, und die Ausführung von netlink-Befehlen in Nicht-Init_net-Netz-Namespaces ist jetzt möglich.

Sicherheit

Die folgenden bemerkenswerten Sicherheitsfunktionen sind in Unbreakable Enterprise Kernel Release 6 implementiert:

  • Sperrmodus für x86_64-Systeme

    Der Sperrmodus wurde verbessert. In diesem Release wird zwischen dem Integritäts- und dem Vertraulichkeitsmodus unterschieden. Wenn Secure Boot in UEK R6 aktiviert ist, wird der Sperrintegritätsmodus standardmäßig erzwungen. Der Vertraulichkeitsmodus kann als Option in der Kernel-Befehlszeile oder mithilfe von securityfs aktiviert werden, wenn UEFI Secure Boot aktiviert ist. Lockdown-Modi können auch aktiviert werden, wenn eine Kernel-Befehlszeilenoption verwendet wird, um Secure Boot zu deaktivieren. Wenn Secure Boot deaktiviert ist, wird jedoch standardmäßig keine Lockdown-Durchsetzung durchgeführt.

    Die folgenden Einschränkungen werden angewendet, wenn der Integritätsmodus aktiviert ist:

    • Erzwingen von Kernel-Modulsignaturen

    • Schreibzugriff auf /dev/{mem,kmem,port} beschränken

    • efivar_ssdt_load einschränken

    • Systemaufruf kexec_load deaktivieren

    • Ruhezustand deaktivieren

    • PCI-BAR-Zugriff aus Benutzerbereich verbieten

    • Zugriff auf X86-I/O-Port aus Benutzerbereich untersagen

    • Zugriff auf MSR einschränken

    • Zugriff auf benutzerdefinierte ACPI-Methode beschränken

    • Kernel-Parameter acpi_rspd ignorieren

    • Überschreiben von ACPI-Tabellen deaktivieren

    • PCMCIA CIS-Speicher untersagen

    • TIOCSSEARIAL verbieten

    • Unsichere Kernel-Modulparameter untersagen

    • Das testmmiotrace-Modul untersagen

    • Zugriff auf Debugs verbieten

    Die folgenden Einschränkungen werden angewendet, wenn der Vertraulichkeitsmodus aktiviert ist:

    • Verhindern von Verfolgungs- und Perf-Kprobes

    • Verwendung von bpf zum Lesen des Kernel-Speichers einschränken

    • Unsichere Verwendung von Perfom verhindern

    • Tracefs verbieten

    • Zugriff auf /proc/kcore untersagen

    Beachten Sie, dass sich auch die Verwaltung von Kernel-Keyring für UEK R6 geändert hat, das jetzt Code aus dem Mainline-Upstream-Kernel verwendet, um einen Plattform-Keyring zu implementieren. UEFI Secure Boot DB und Machine Owner Keys (MOKs) werden jetzt im Plattform-Keyring gespeichert und nicht gleich behandelt wie der Kernel Trust Keyring. Obwohl kexec den Schlüsseln in der Plattform-Schlüsselzeichenfolge vertraut, können diese nicht zum Hinzufügen einer neuen CA zum Kernel für IMA (Integrity Measurement Architecture) verwendet werden und können nicht zur Überprüfung von Kernel-Modulen verwendet werden.

  • IBRS

    Indirect Branch Restricted Speculation (IBRS) wird weiterhin für Prozessoren unterstützt, die von Spectre V2 Speculative Execution Side Channel Vulnerability betroffen sind und für die andere Software- oder Hardwaretechniken möglicherweise nicht ausreichen oder nicht verfügbar sind.

  • Verbesserter Schutz in schreibgeschützten Verzeichnissen der Welt

    Dieses Kernel-Release verhindert Spoofing-Angriffe, indem es das Öffnen von FIFOs oder regulären Dateien, die nicht dem Benutzer gehören, in World-Writable-Sticky-Verzeichnissen wie /tmp verbietet.

  • Arm KASLR

    Die Zufälligkeit virtueller Kernel-Adressen ist standardmäßig für Arm-Plattformen aktiviert.

  • aarch64 Zeigerauthentifizierung

    Mit dieser Funktion werden Primitives hinzugefügt, mit denen bestimmte Klassen von Angriffen auf Speicherstacks auf Arm-Plattformen gemildert werden können.

Speicher

Die folgenden bemerkenswerten Speicherfunktionen sind in Unbreakable Enterprise Kernel Release 6 implementiert:

  • Verbesserungen bei NVMe

    NVMe over Fabrics TCP-Host und die Zieltreiber wurden hinzugefügt. Unterstützung für Multipath-Unterstützung und Passthrough-Befehl wurde hinzugefügt. Die NVMe-Namespace-Unterstützung wird um Namespace Write Protect und asynchronen Namespace-Zugriff erweitert.

Virtualisierung

Die folgenden bemerkenswerten Virtualisierungsfunktionen sind in Unbreakable Enterprise Kernel Release 6 implementiert:

  • VirtIO-Verbesserungen

    Die VirtIO PMEM-Funktion fügt einen VirtIO-basierten asynchronen Flush-Mechanismus hinzu und simuliert persistenten Speicher für einen Gast, sodass er einen Gastseitencache umgehen kann. In diesem Release wird auch ein para-virtualisierter VirtIO-IOMMU-Treiber hinzugefügt, der IOMMU-Anforderungen über den VirtIO-Transport ermöglicht, ohne Seitentabellen zu emulieren.

  • Verbesserungen der Arm-Plattform

    Gäste auf ARM-Plattformsystemen (aarch64) unterstützen die Zeigerauthentifizierung (ARM v8.3) und die skalierbare Vektorerweiterung (SVE).

Treiberaktualisierungen

Der Unbreakable Enterprise Kernel Release 6 unterstützt eine große Anzahl von Hardware und Geräten. In enger Zusammenarbeit mit Hardware- und Speicheranbietern hat Oracle mehrere Gerätetreiber aus den Versionen in Mainline Linux 5.4 aktualisiert.

Eine vollständige Liste der Treibermodule, die im letzten Update von UEK R6 enthalten sind, sowie Versionsinformationen finden Sie im Anhang unter Treibermodule in Unbreakable Enterprise Kernel Release 6 (x86_64).

Bemerkenswerte Treiberfunktionen

Die folgenden neuen Funktionen sind in den mit UEK R6 gelieferten Fahrern aufgeführt:

  • Broadcom BCM573xx-Netzwerktreiber

    Die bnxt_en-Treiberversion wurde auf 1.10.1 aktualisiert. Zusätzliche Patches wurden aus dem Upstream-Kernel-Release von 5.5 zurückportiert, und vom Hersteller beigetragene Patches, die spezifisch für die Erweiterung und Aktualisierung der Funktionalität für Broadcom Thor Ethernet-Controller sind.

    Eine Upstream-Änderung an diesem Treiber, die in ein UEK R6-Errata-Update in Kernel-Version 5.4.17-2011.6.2 integriert wurde, führt zu einer Änderung des Gerätenamens für den zweiten Port von Broadcom-Netzwerkschnittstellen, die diesen Treiber verwenden. Beispiel: Ein Gerät, das zuvor als eno3d1 identifiziert wurde, wird jetzt als eno3 identifiziert. Dieser Fix wurde angewendet, um die Gerätebenennung zu verbessern und auch Annahmen über die Portfunktionalität auf einem Gerät zu berücksichtigen, z. B. in Situationen, in denen das Netzwerkgerät zu verschiedenen Funktionen gehören kann. Folglich kann diese Änderung zu Problemen mit Netzwerkskripten beim Upgrade von einem System führen, das RHCK oder UEK R5 auf UEK R6 verwendet. Möglicherweise müssen Sie sicherstellen, dass Netzwerkskripte entsprechend umbenannt und aktualisiert werden, wenn Sie ein Upgrade von einer früheren Kernelversion auf eine aktuelle Version von UEK R6 oder höher durchführen.

  • Broadcom Emulex LightPulse Fibre Channel SCSI-Treiber

    Der Treiber lpfc wurde auf 12.6.0.3 aktualisiert. Dieses Update enthält eine große Anzahl von vom Hersteller beigetragenen Patches, um Änderungen am Treiber zu beheben, seit der Upstream-Kernel von 5.4 verfügbar gemacht wurde, und einen wichtigen Bugfix für die Adapterfirmware. Änderungen an diesem Treiber führten auch zu Aktualisierungen anderer Kernel-Abhängigkeiten, wie Code für NVMe über Fibre Channel.

  • QLogic BCM5706/5708/5709/5716-Treiber

    Der bnx2-Treiber wird aktualisiert. Obwohl die Versionsnummer bei 2.2.6 bleibt, enthält der Treiber vom Hersteller beigetragene Patches und Firmwareupdates.

  • QLogic Fibre Channel HBA-Treiber

    Der Treiber qla2xxx wurde auf Version 10.01.00.22.81.1-k aktualisiert. Dieses Update portiert viele Patches, die seither in den Upstream-Kernel gegangen sind, und enthält Patches von bestimmten Anbietern, um die Performance zu verbessern und Fehlerbehebungen für einige Bugs im ursprünglichen Treiber bereitzustellen.

  • Microsemi Smart Family Controller-Treiber

    Der smartpqi-Treiber wird auf Version 1.2.10-025 aktualisiert und enthält Upstreampatches, die seit dem 5.4-Kernelrelease unter Anleitung des Herstellers auf den Treiber angewendet wurden. Diese Updates umfassen mehrere Bugfixes und Leistungsverbesserungen.

  • LSI MPT Fusion SAS 3.0 Device-Treiber

    Der mpt3sas-Treiber wird auf Version 33.100.00.00 aktualisiert und enthält vom Hersteller beigetragene Patches.

Neue und aktualisierte Packages

Zur Unterstützung der neu hinzugefügten Funktionalität, die UEK R6 bereitstellt, wurden mehrere Kernel- und User-Space-Binärpakete aus den Packages hinzugefügt oder aktualisiert, die in der Basisverteilung enthalten sind. Weitere Informationen zu den ULN-Kanälen und Oracle Linux yum-Server-Repositorys, in denen diese Packages verfügbar sind, finden Sie unter UEK R6-Installation und -Verfügbarkeit.

Kernel-Speicherpackages, die für UEK R6 hinzugefügt und aktualisiert werden, sind mit dem Präfix kernel-uek gekennzeichnet. Das linux-firmware-Package wird auch mit den neuesten verfügbaren Firmwareversionen aktualisiert.

Die hier aufgeführten Pakete sind spezifisch für die Benutzer-Space-Funktionalität und werden aktualisiert, um die Funktionen zu nutzen, die in UEK R6 verfügbar sind. Es besteht keine Abhängigkeit von diesen Packages zur Verwendung von UEK R6. Wenn Sie eines dieser Pakete verwenden und UEK R6 verwenden, sollten Sie das Paket auf die neueste Version aktualisieren, um die volle Kompatibilität mit allen Funktionen zu gewährleisten, die in UEK R6 verfügbar sind.

Packages

Oracle Linux 8-Versionsnummer

Oracle Linux 7-Versionsnummer

ndctl,ndctl-libs, ndctl-devel, daxctl, daxctl-libs, daxctl-devel

67 (x86_64)

67 (x86_64)

ipmctl, ipmctl-monitor, libipmctl, libipmctl-devel

01.00.00.3467 (x86_64)

01.00.00.3467 (x86_64)

libsafec, libsafec-check, libsafec-devel

3.3 (x86_64)

3.3 (x86_64)

btrfs-progs, btrfs-progs-devel

5.4.0 (x86_64, aarch64)

5.4.0 (x86_64, aarch64)

xfsprogs, xfsprogs-devel

5.4.0 (x86_64, aarch64)

5.4.0 (x86_64, aarch64)

ocfs2-tools

1.8.6 (x86_64, aarch64)

1.8.6 (x86_64, aarch64)

e2fs-progs, libss, libss-devel, libcom_err, libcom_err-devel

1.45.4 (x86_64, aarch64)

1.45.4 (x86_64, aarch64)

dtrace, dtrace-devel, dtrace-testsuite

2.0.0 (x86_64, aarch64)

2.0.0 (x86_64, aarch64)

libdtrace-ctf,libdtrace-ctf-devel

N/V

1.1.0 (x86_64, aarch64)

bcache-tools

1.0.8 (x86_64, aarch64)

1.0.8 (x86_64, aarch64)

cloud-init

18,5 (x86_64, aarch64)

18,5 (x86_64, aarch64)

crash, crash-devel

7.2.7 (x86_64, aarch64)

7.2.7 (x86_64, aarch64)

iproute, iproute-devel, iproute-doc, iproute-tc

5.4.0 (x86_64, aarch64)

5.4.0 (x86_64, aarch64)

kexec-tools

2.0.19 (x86_64, aarch64)

2.0.15 (x86_64, aarch64)

libzstd, libzstd-devel

1.3.8 (x86_64, aarch64)

1.3.4 (x86_64, aarch64)

linux-firmware

20200124-999.4 (x86_64, aarch64)

20200124-999.4 (x86_64, aarch64)

nvme-cli

1,9 (x86_64, aarch64)

1,9 (x86_64, aarch64)

nvmetcli

0,7 (x86_64, aarch64)

0,7 (x86_64, aarch64)

nbd

3.20 (x86_64, aarch64)

3.20 (x86_64, aarch64)

drbd-utils

9.0.0 (x86_64, aarch64)

9.0.0 (x86_64, aarch64)

libdnf, python3-libdnf, python3-hawkey

0,35 (x86_64, aarch64)

N/V