Linux 5.12-Kernel-Release

Nach zweimonatiger Entwicklungszeit präsentierte Linus Torvalds die Veröffentlichung des Linux-Kernels 5.12. Zu den bemerkenswertesten Änderungen gehören: Unterstützung für in Zonen aufgeteilte Blockgeräte in Btrfs, die Möglichkeit, Benutzer-IDs für das Dateisystem zuzuordnen, Bereinigung älterer ARM-Architekturen, ein „eifriger“ Schreibmodus in NFS, der LOOKUP_CACHED-Mechanismus zur Ermittlung von Dateipfaden aus dem Cache , Unterstützung für atomare Anweisungen in BPF, ein Debugging-System KFENCE zur Identifizierung von Fehlern beim Arbeiten mit dem Speicher, NAPI-Abfragemodus, der in einem separaten Kernel-Thread im Netzwerkstapel ausgeführt wird, ACRN-Hypervisor, die Möglichkeit, das Preempt-Modell im laufenden Betrieb in der Aufgabe zu ändern Scheduler und Unterstützung für LTO-Optimierungen beim Erstellen in Clang.

Die neue Version enthält 14170 (in der vorherigen Version 15480) Fixes von Entwicklern aus dem Jahr 1946 (1991), die Patchgröße beträgt 38 MB (die Änderungen betrafen 12102 (12090) Dateien, 538599 (868025) Codezeilen wurden hinzugefügt, 333377 (261456) Zeilen wurden gelöscht). Ungefähr 43 % aller in 5.12 eingeführten Änderungen beziehen sich auf Gerätetreiber, ungefähr 17 % der Änderungen beziehen sich auf die Aktualisierung von Code, der für Hardwarearchitekturen spezifisch ist, 12 % beziehen sich auf den Netzwerkstapel, 5 % beziehen sich auf Dateisysteme und 4 % beziehen sich auf beziehen sich auf interne Kernel-Subsysteme.

Wichtigste Neuerungen:

  • Festplattensubsystem, E/A und Dateisysteme
    • Die Möglichkeit, Benutzer-IDs für gemountete Dateisysteme zuzuordnen, wurde implementiert (Sie können Dateien eines Benutzers auf einer gemounteten Fremdpartition einem anderen Benutzer auf dem aktuellen System zuordnen). Die Zuordnung wird für FAT-, ext4- und XFS-Dateisysteme unterstützt. Die vorgeschlagene Funktionalität erleichtert die gemeinsame Nutzung von Dateien zwischen verschiedenen Benutzern und auf verschiedenen Computern, einschließlich der Zuordnung, die im Systemd-Homed-Mechanismus für tragbare Home-Verzeichnisse verwendet wird, sodass Benutzer ihre Home-Verzeichnisse auf externe Medien verschieben und sie auf verschiedenen Computern verwenden können, Mapping Benutzer-IDs, die nicht übereinstimmen. Eine weitere nützliche Anwendung besteht darin, die Bereitstellung eines gemeinsamen Zugriffs auf Dateien von einem externen Host aus zu organisieren, ohne die Daten über die Eigentümer der Dateien im Dateisystem tatsächlich zu ändern.
    • Die LOOKUP_CACHED-Patches wurden in den Kernel übernommen und ermöglichen es Operationen, einen Dateipfad aus dem Benutzerbereich ohne Blockierung zu ermitteln, nur basierend auf den im Cache verfügbaren Daten. Der LOOKUP_CACHED-Modus wird im openat2()-Aufruf durch Übergabe des RESOLVE_CACHED-Flags aktiviert, in dem Daten nur aus dem Cache bereitgestellt werden. Wenn die Pfadbestimmung einen Zugriff auf das Laufwerk erfordert, wird der EAGAIN-Fehler zurückgegeben.
    • Das Btrfs-Dateisystem hat anfängliche Unterstützung für Zonen-Blockgeräte hinzugefügt (Geräte auf Festplatten oder NVMe-SSDs, deren Speicherplatz in Zonen unterteilt ist, die Gruppen von Blöcken oder Sektoren bilden, zu denen nur sequenzielles Hinzufügen von Daten zulässig ist). Aktualisierung der gesamten Blockgruppe). Im schreibgeschützten Modus ist die Unterstützung für Blöcke mit Metadaten und Daten kleiner als eine Seite (Unterseite) implementiert.
    • Im F2FS-Dateisystem wurde die Möglichkeit hinzugefügt, den Algorithmus und die Komprimierungsstufe auszuwählen. Unterstützung für High-Level-Komprimierung für den LZ4-Algorithmus hinzugefügt. Die Montageoption checkpoint_merge wurde implementiert.
    • Ein neuer ioctl-Befehl FS_IOC_READ_VERITY_METADATA wurde implementiert, um Metadaten aus mit fs-verity geschützten Dateien zu lesen.
    • Der NFS-Client implementiert einen „eifrigen“ Schreibmodus (writes=eager). Wenn dieser aktiviert ist, werden Schreibvorgänge in eine Datei sofort an den Server übertragen, wobei der Seitencache umgangen wird. Mit diesem Modus können Sie den Speicherverbrauch reduzieren, den sofortigen Empfang von Informationen über das Ende des freien Speicherplatzes im Dateisystem ermöglichen und in manchen Situationen eine Leistungssteigerung ermöglichen.
    • Zu CIFS (SMB) wurden neue Mount-Optionen hinzugefügt: acregmax zur Steuerung des Datei-Cachings und acdirmax zur Steuerung des Verzeichnis-Metadaten-Cachings.
    • In XFS wurde der Multithread-Kontingentprüfungsmodus aktiviert, die fsync-Ausführung beschleunigt und der GrowFS-Code vorbereitet, um die Funktion zur Reduzierung der Größe des Dateisystems zu implementieren.
  • Speicher- und Systemdienste
    • Das Subsystem DTMP (Dynamic Thermal Power Management) wurde hinzugefügt, mit dem Sie den Stromverbrauch verschiedener Geräte basierend auf den festgelegten allgemeinen Temperaturgrenzen dynamisch regulieren können.
    • Die Möglichkeit, den Kernel mithilfe des Clang-Compilers unter Einbeziehung von Optimierungen in der Verknüpfungsphase (LTO, Link Time Optimization) zu erstellen, wurde implementiert. LTO-Optimierungen unterscheiden sich dadurch, dass sie den Status aller am Build-Prozess beteiligten Dateien berücksichtigen, während herkömmliche Optimierungsmodi jede Datei separat optimieren und die Bedingungen für den Aufruf von Funktionen, die in anderen Dateien definiert sind, nicht berücksichtigen. Mit LTO ist beispielsweise eine Inline-Bereitstellung für Funktionen aus anderen Dateien möglich, ungenutzter Code wird nicht in die ausführbare Datei aufgenommen, Typprüfung und allgemeine Optimierung werden auf Projektebene als Ganzes durchgeführt. Die LTO-Unterstützung ist derzeit auf x86- und ARM64-Architekturen beschränkt.
    • Es ist möglich, Präemptionsmodi (PREEMPT) im Taskplaner in der Bootphase (preempt=none/voluntary/full) oder während der Arbeit durch debugfs (/debug/sched_debug) auszuwählen, wenn die Einstellung PREEMPT_DYNAMIC beim Erstellen des Kernels angegeben wurde. Bisher konnte der Extrusionsmodus nur auf der Ebene der Baugruppenparameter eingestellt werden. Die Änderung ermöglicht es Distributionen, Kernel mit aktiviertem PREEMPT-Modus auszuliefern, der eine minimale Latenz für Desktops auf Kosten einer geringen Durchsatzeinbuße bietet, und bei Bedarf auf PREEMPT_VOLUNTARY (ein Zwischenmodus für Desktops) oder PREEMPT_NONE (bietet maximalen Durchsatz für Server) zurückzugreifen. .
    • Dem BPF-Subsystem wurde Unterstützung für die atomaren Operationen BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG und BPF_CMPXCHG hinzugefügt.
    • BPF-Programme erhalten die Möglichkeit, mithilfe von Zeigern mit variablen Offsets auf Daten im Stapel zuzugreifen. Wenn Sie beispielsweise bisher nur einen konstanten Elementindex verwenden konnten, um auf ein Array im Stapel zuzugreifen, können Sie jetzt einen sich ändernden verwenden. Die Zugangskontrolle erfolgt nur innerhalb der bestehenden Grenzen durch den BPF-Verifizierer. Diese Funktion ist nur für privilegierte Programme verfügbar, da Bedenken hinsichtlich der Ausnutzung von Sicherheitslücken bei der spekulativen Codeausführung bestehen.
    • Es wurde die Möglichkeit hinzugefügt, BPF-Programme an bloße Tracepoints anzuhängen, die nicht mit Trace-Ereignissen verknüpft sind, die im Benutzerbereich sichtbar sind (die ABI-Erhaltung ist für solche Tracepoints nicht garantiert).
    • Es wurde Unterstützung für den CXL 2.0-Bus (Compute Express Link) implementiert, der zur Organisation der Hochgeschwindigkeitsinteraktion zwischen der CPU und Speichergeräten verwendet wird (ermöglicht die Verwendung externer Speichergeräte als Teil des RAM oder des permanenten Speichers, als ob dieser Speicher wäre). wurden über einen Standard-Speichercontroller in der CPU angeschlossen).
    • Nvmem-Treiber hinzugefügt, um Daten aus Firmware-reservierten Speicherbereichen abzurufen, auf die Linux nicht direkt zugreifen kann (z. B. EEPROM-Speicher, auf den nur die Firmware physisch zugreifen kann, oder Daten, auf die nur während der frühen Startphase zugegriffen werden kann).
    • Die Unterstützung für das Profilierungssystem „oprofile“, das nicht weit verbreitet war, wurde entfernt und durch den moderneren Perf-Mechanismus ersetzt.
    • Die asynchrone E/A-Schnittstelle io_uring ermöglicht die Integration mit Kontrollgruppen, die die Speichernutzung steuern.
    • Die RISC-V-Architektur unterstützt NUMA-Systeme sowie kprobes- und uprobes-Mechanismen.
    • Es wurde die Möglichkeit hinzugefügt, den Systemaufruf kcmp() unabhängig von der Funktionalität von Prozessstatus-Snapshots (Prüfpunkt/Wiederherstellung) zu verwenden.
    • Die seit vielen Jahren in der Praxis nicht mehr verwendeten Makros EXPORT_UNUSED_SYMBOL() und EXPORT_SYMBOL_GPL_FUTURE() wurden entfernt.
  • Virtualisierung und Sicherheit
    • KFence-Schutzmechanismus (Kernel Electric Fence) hinzugefügt, der Fehler beim Arbeiten mit Speicher abfängt, wie z. B. Pufferüberläufe und Zugriffe nach der Speicherfreigabe. Im Gegensatz zum KASAN-Debugging-Mechanismus zeichnet sich das KFence-Subsystem durch eine hohe Betriebsgeschwindigkeit und einen geringen Overhead aus, wodurch Sie Speicherfehler erkennen können, die nur auf funktionierenden Systemen oder im Langzeitbetrieb auftreten.
    • Unterstützung für den ACRN-Hypervisor hinzugefügt, der mit Blick auf die Bereitschaft für Echtzeitaufgaben und die Eignung für den Einsatz in geschäftskritischen Systemen geschrieben wurde. ACRN bietet minimalen Overhead, garantiert geringe Latenz und angemessene Reaktionsfähigkeit bei der Interaktion mit Geräten. Unterstützt die Virtualisierung von CPU-Ressourcen, E/A, Netzwerksubsystem, Grafik- und Soundvorgängen. ACRN kann verwendet werden, um mehrere isolierte virtuelle Maschinen in elektronischen Steuergeräten, Instrumententafeln, Automobilinformationssystemen, Verbraucher-IoT-Geräten und anderen eingebetteten Technologien auszuführen. ACRN unterstützt zwei Arten von Gastsystemen – privilegierte Service-VMs, die zur Verwaltung von Systemressourcen (CPU, Speicher, I/O usw.) verwendet werden, und benutzerdefinierte Benutzer-VMs, auf denen Linux-, Android- und Windows-Distributionen ausgeführt werden können.
    • Im IMA-Subsystem (Integrity Measurement Architecture), das eine Hash-Datenbank zur Überprüfung der Integrität von Dateien und zugehörigen Metadaten verwaltet, ist es nun möglich, die Integrität der Daten des Kernels selbst zu überprüfen, um beispielsweise Änderungen in SELinux-Regeln zu verfolgen .
    • Dem KVM-Hypervisor wurde die Möglichkeit hinzugefügt, Xen-Hypercalls abzufangen und an den im User Space laufenden Emulator weiterzuleiten.
    • Es wurde die Möglichkeit hinzugefügt, Linux als Root-Umgebung für den Hyper-V-Hypervisor zu verwenden. Die Root-Umgebung hat direkten Zugriff auf die Hardware und dient zum Betrieb von Gastsystemen (analog zu Dom0 in Xen). Bisher unterstützte Hyper-V (Microsoft Hypervisor) Linux nur in Gastumgebungen, der Hypervisor selbst wurde jedoch von einer Windows-basierten Umgebung aus gesteuert.
    • Unterstützung für Inline-Verschlüsselung für eMMC-Karten hinzugefügt, sodass Sie im Laufwerkscontroller integrierte Verschlüsselungsmechanismen verwenden können, die E/A transparent verschlüsseln und entschlüsseln.
    • Die Unterstützung für die Hashes RIPE-MD 128/256/320 und Tiger 128/160/192, die nicht im Kern verwendet werden, sowie die Salsa20-Stream-Verschlüsselung, die durch den ChaCha20-Algorithmus ersetzt wurde, wurde aus dem entfernt Krypto-Subsystem. Der Blake2-Algorithmus wurde aktualisiert, um Blake2s zu implementieren.
  • Netzwerk-Subsystem
    • Es wurde die Möglichkeit hinzugefügt, den NAPI-Polling-Handler für Netzwerkgeräte in einen separaten Kernel-Thread zu verschieben, was eine verbesserte Leistung für einige Arten von Arbeitslasten ermöglicht. Zuvor wurde die Abfrage im Kontext von Softirq durchgeführt und nicht vom Taskplaner abgedeckt, was die Durchführung feinkörniger Optimierungen zur Erzielung maximaler Leistung erschwerte. Durch die Ausführung in einem separaten Kernel-Thread kann der Polling-Handler vom Benutzerbereich aus beobachtet, an einzelne CPU-Kerne angehängt und bei der Planung des Aufgabenwechsels berücksichtigt werden. Um den neuen Modus in sysfs zu aktivieren, wird der Parameter /sys/class/net//threaded vorgeschlagen.
    • Integration in den Kern von MPTCP (MultiPath TCP), einer Erweiterung des TCP-Protokolls zur Organisation des Betriebs einer TCP-Verbindung mit der gleichzeitigen Zustellung von Paketen auf mehreren Routen über verschiedene Netzwerkschnittstellen, die unterschiedlichen IP-Adressen zugeordnet sind. Die neue Version fügt die Möglichkeit hinzu, bestimmten Threads Priorität zuzuweisen, was es beispielsweise ermöglicht, die Arbeit von Backup-Threads zu organisieren, die sich nur dann einschalten, wenn es Probleme mit dem primären Thread gibt.
    • IGMPv3 fügt Unterstützung für den EHT-Mechanismus (Explicit Host Tracking) hinzu.
    • Die Paketfilter-Engine von Netfilter bietet die Möglichkeit, bestimmte Tabellen zu besitzen, um die exklusive Kontrolle zu erlangen (z. B. kann ein Hintergrund-Firewall-Prozess den Besitz bestimmter Tabellen übernehmen und so verhindern, dass jemand anderes in sie eingreift).
  • Ausrüstung
    • Wir haben veraltete und nicht gewartete ARM-Plattformen bereinigt. Der Code für die Plattformen efm32, picoxcell, prima2, tango, u300, zx und c6x sowie die zugehörigen Treiber wurden entfernt.
    • Der amdgpu-Treiber bietet die Möglichkeit, Karten basierend auf der Sienna Cichlid GPU (Navi 22, Radeon RX 6xxx) zu übertakten (OverDrive). Unterstützung für das FP16-Pixelformat für DCE (Display Controller Engine) von der 8. bis 11. Generation hinzugefügt. Für GPU Navy Flounder (Navi 21) und APU Van Gogh wurde die Möglichkeit zum Zurücksetzen der GPU implementiert.
    • Der i915-Treiber für Intel-Grafikkarten implementiert den Parameter i915.mitigations, um Isolations- und Schutzmechanismen zugunsten einer verbesserten Leistung zu deaktivieren. Für Chips ab Tiger Lake ist Unterstützung für den VRR-Mechanismus (Variable Rate Refresh) enthalten, der es Ihnen ermöglicht, die Bildwiederholfrequenz des Monitors adaptiv zu ändern, um während Spielen einen reibungslosen Ablauf und keine Lücken zu gewährleisten. Für eine verbesserte Farbgenauigkeit ist Unterstützung für die Intel Clear Color-Technologie enthalten. Unterstützung für DP-HDMI 2.1 hinzugefügt. Die Möglichkeit, die Hintergrundbeleuchtung von eDP-Panels zu steuern, wurde implementiert. Für Gen9-GPUs mit LSPCON-Unterstützung (Level Shifter and Protocol Converter) ist die HDR-Unterstützung aktiviert.
    • Der Nouveau-Treiber bietet anfängliche Unterstützung für NVIDIA-GPUs basierend auf der GA100-Architektur (Ampere).
    • Der msm-Treiber bietet Unterstützung für Adreno 508-, 509- und 512-GPUs, die in SDM (Snapdragon) 630-, 636- und 660-Chips verwendet werden.
    • Unterstützung für die Soundkarten Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s und Pioneer DJM-750 hinzugefügt. Unterstützung für das Intel Alder Lake PCH-P Audio-Subsystem hinzugefügt. Für Debugging-Handler im Benutzerbereich wurde Unterstützung für die Softwaresimulation des Verbindens und Trennens eines Audiosteckers implementiert.
    • Unterstützung für Nintendo 64-Spielekonsolen hinzugefügt, die zwischen 1996 und 2003 hergestellt wurden (frühere Versuche, Linux auf das Nintendo 64 zu portieren, wurden nicht abgeschlossen und wurden als Vaporware eingestuft). Die Motivation für die Erstellung einer neuen Portierung für eine veraltete Plattform, die seit fast zwanzig Jahren nicht mehr veröffentlicht wurde, ist der Wunsch, die Entwicklung von Emulatoren voranzutreiben und die Portierung von Spielen zu vereinfachen.
    • Treiber für den Sony PlayStation 5 DualSense-Gamecontroller hinzugefügt.
    • Unterstützung für ARM-Boards, Geräte und Plattformen hinzugefügt: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Unterstützung für die Smartphones Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T und Samsung GT-I9070 hinzugefügt.
    • bcm-vk-Treiber für Broadcom VK-Beschleunigerkarten (z. B. Valkyrie- und Viper-PCIe-Karten) hinzugefügt, mit dem Audio-, Video- und Bildverarbeitungsvorgänge sowie verschlüsselungsbezogene Vorgänge auf ein separates Gerät verlagert werden können.
    • Unterstützung für die Lenovo IdeaPad-Plattform mit der Möglichkeit, den konstanten Ladevorgang und die Hintergrundbeleuchtung der Tastatur zu steuern, hinzugefügt. Außerdem wird das ACPI-Profil der ThinkPad-Plattform unterstützt, mit der Möglichkeit, die Stromverbrauchsmodi zu steuern. Treiber für das Lenovo ThinkPad X1 Tablet Gen 2 HID-Subsystem hinzugefügt.
    • ov5647-Treiber mit Unterstützung für Kameramodul für Raspberry Pi hinzugefügt.
    • Unterstützung für RISC-V SoC FU740 und HiFive Unleashed-Boards hinzugefügt. Außerdem wurde ein neuer Treiber für den Kendryte K210-Chip hinzugefügt.

Source: opennet.ru

Kommentar hinzufügen