Linux 5.2-Kernel-Release

Nach zwei Monaten Entwicklungszeit hat Linus Torvalds eingeführt Kernel-Release Linux 5.2. Zu den auffälligsten Änderungen gehören: Der Ext4-Betriebsmodus unterscheidet nicht zwischen Groß- und Kleinschreibung, separate Systemaufrufe zum Mounten des Dateisystems, Treiber für GPU Mali 4xx/ 6xx/7xx, die Möglichkeit, Änderungen an Sysctl-Werten in BPF-Programmen zu verarbeiten, Geräte-Mapper Modul dm-dust, Schutz vor MDS-Angriffen, Unterstützung für Sound Open Firmware für DSP, Optimierung der BFQ-Leistung, Bereitstellung des PSI-Subsystems (Pressure Stall Information) für die Verwendung in Android.

Die neue Version enthält 15100 Fixes von 1882 Entwicklern,
Patchgröße - 62 MB (Änderungen betrafen 30889 Dateien, 625094 Codezeilen wurden hinzugefügt, 531864 Zeilen wurden gelöscht). Etwa 45 % aller in 5.2 vorgestellten
Änderungen beziehen sich auf Gerätetreiber, etwa 21 % der Änderungen
Einstellung zur Aktualisierung von Hardware-Architektur-spezifischem Code, 12 %
bezogen auf den Netzwerk-Stack, 3 % auf Dateisysteme und 3 % auf interne
Kernel-Subsysteme. 12.4 % aller Änderungen wurden von Intel vorbereitet, 6.3 % von Red Hat, 5.4 % von Google, 4.0 % von AMD, 3.1 % von SUSE, 3 % von IBM, 2.7 % von Huawei, 2.7 % von Linaro, 2.2 % von ARM , 1.6 % - Oracle.

Haupt- Innovationen:

  • Festplattensubsystem, E/A und Dateisysteme
    • Für Ext4 hinzugefügt unterstützen funktioniert ohne Unterscheidung der Groß-/Kleinschreibung von Zeichen in Dateinamen, die nur in Bezug auf einzelne leere Verzeichnisse mit dem neuen Attribut „+F“ (EXT4_CASEFOLD_FL) aktiviert wird. Wenn dieses Attribut für ein Verzeichnis festgelegt ist, werden alle Vorgänge mit darin enthaltenen Dateien und Unterverzeichnissen ohne Berücksichtigung der Groß-/Kleinschreibung von Zeichen ausgeführt, einschließlich der Tatsache, dass die Groß-/Kleinschreibung beim Suchen und Öffnen von Dateien ignoriert wird (z. B. die Dateien Test.txt, test.txt und test.TXT in solchen Verzeichnissen werden als gleich betrachtet). Standardmäßig berücksichtigt das Dateisystem weiterhin die Groß-/Kleinschreibung, mit Ausnahme von Verzeichnissen mit dem Attribut „chattr +F“.
    • Die Funktionen zur Verarbeitung von UTF-8-Zeichen in Dateinamen, die bei der Durchführung von Zeichenfolgenvergleichen und Normalisierungsoperationen verwendet werden, wurden vereinheitlicht.
    • XFS fügt eine Infrastruktur für die Überwachung des Dateisystemzustands und ein neues Ioctl zum Abfragen des Gesundheitszustands hinzu. Es wurde eine experimentelle Funktion implementiert, um Superblock-Zähler online zu überprüfen.
    • Neues Modul „Device-Mapper“ hinzugefügtDM-Staub„, mit dem Sie das Auftreten fehlerhafter Blöcke auf dem Medium oder Fehler beim Lesen von der Festplatte simulieren können. Mit dem Modul können Sie das Debuggen und Testen von Anwendungen und verschiedenen Speichersystemen angesichts möglicher Fehler vereinfachen.
    • Ausgetragen Erhebliche Leistungsoptimierungen für den BFQ-I/O-Scheduler. Bei hoher I/O-Last werden Optimierungen vorgenommen позволяют Reduzieren Sie die Zeit für Vorgänge wie das Starten von Anwendungen um bis zu 80 %.
    • Eine Reihe von Systemaufrufen zum Mounten von Dateisystemen hinzugefügt: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Mit diesen Systemaufrufen können Sie verschiedene Phasen des Mountens (Verarbeiten des Superblocks, Abrufen von Informationen über das Dateisystem, Mounten, Anhängen an den Mountpunkt) separat verarbeiten, die zuvor mit dem allgemeinen Systemaufruf mount() ausgeführt wurden. Separate Aufrufe bieten die Möglichkeit, komplexere Mount-Szenarien durchzuführen und separate Vorgänge durchzuführen, z. B. das Neukonfigurieren des Superblocks, das Aktivieren von Optionen, das Ändern des Mount-Punkts und das Verschieben in einen anderen Namespace. Darüber hinaus können Sie durch die separate Verarbeitung die Gründe für die Ausgabe von Fehlercodes genau bestimmen und mehrere Quellen für mehrschichtige Dateisysteme festlegen, z. B. OverlayFS;
    • Der Schnittstelle für asynchrone E/A io_uring wurde eine neue Operation IORING_OP_SYNC_FILE_RANGE hinzugefügt, die Aktionen ausführt, die einem Systemaufruf entsprechen sync_file_range()Außerdem wurde die Möglichkeit implementiert, eventfd bei io_uring zu registrieren und Benachrichtigungen über den Abschluss von Vorgängen zu erhalten.
    • Für das CIFS-Dateisystem wurde FIEMAP ioctl hinzugefügt, das eine effiziente Extent-Zuordnung sowie Unterstützung für die Modi SEEK_DATA und SEEK_HOLE bietet;
    • Im FUSE-Subsystem vorgeschlagen API zur Verwaltung des Daten-Caching;
    • Btrfs hat die qgroups-Implementierung optimiert und die fsync-Ausführungsgeschwindigkeit für Dateien mit mehreren Hardlinks verbessert. Der Datenintegritätsprüfcode wurde verbessert, der nun mögliche Schäden an Informationen im RAM berücksichtigt, bevor Daten auf die Festplatte geleert werden;
    • CEPH hat Unterstützung für den Export von Snapshots über NFS hinzugefügt;
    • Die Implementierung des NFSv4-Mountings im „Soft“-Modus wurde verbessert (wenn beim Zugriff auf den Server im „Soft“-Modus ein Fehler auftritt, gibt ein Aufruf von sofort einen Fehlercode zurück, und im „Hard“-Modus wird die Kontrolle erst durch den FS gegeben Verfügbarkeit oder Timeout wird wiederhergestellt). Die neue Version bietet eine genauere Timeout-Behandlung, eine schnellere Wiederherstellung nach einem Absturz und eine neue Mount-Option „softerr“, mit der Sie den Fehlercode (ETIMEDOUT) ändern können, der zurückgegeben wird, wenn ein Timeout auftritt.
    • Die nfsdcld-API dient zur Verfolgung des Status von NFS-Clients und ermöglicht es dem NFS-Server, den Status des Clients beim Neustart korrekt zu verfolgen. Somit kann der nfsdcld-Daemon jetzt als nfsdcltrack-Handler fungieren;
    • Für AFS hinzugefügt Emulation von Bytebereichssperren in Dateien (Sperrung des Bytebereichs);
  • Virtualisierung und Sicherheit
    • Es wurde daran gearbeitet, Stellen im Kernel zu eliminieren, die die Codeausführung aus beschreibbaren reflektierten Speicherbereichen ermöglichen, wodurch potenzielle Lücken blockiert werden können, die während eines Angriffs ausgenutzt werden könnten.
    • Ein neuer Kernel-Befehlszeilenparameter „mitigations=" wurde hinzugefügt und bietet eine vereinfachte Möglichkeit, die Aktivierung bestimmter Techniken zum Schutz vor Schwachstellen im Zusammenhang mit der spekulativen Ausführung von Anweisungen auf der CPU zu steuern. Durch die Übergabe von „mitigations=off“ werden alle vorhandenen Methoden deaktiviert, und der Standardmodus „mitigations=auto“ aktiviert den Schutz, hat jedoch keinen Einfluss auf die Verwendung von Hyper Threading. Der Modus „mitigations=auto,nosmt“ deaktiviert zusätzlich Hyper Threading, wenn die Schutzmethode dies erfordert.
    • Hinzugefügt von Unterstützung der elektronischen digitalen Signatur gemäß GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), entwickelt Vitaly Chikunov von Basalt SPO. Unterstützung für AES128-CCM zur nativen TLS-Implementierung hinzugefügt. Unterstützung für AEAD-Algorithmen zum Modul crypto_simd hinzugefügt;
    • In Kconfig hinzugefügt einen separaten Abschnitt „Kernel-Härtung“ mit Optionen zur Verbesserung des Kernel-Schutzes. Derzeit enthält der neue Abschnitt nur Einstellungen zum Aktivieren von Plugins zur Verbesserung der GCC-Prüfung;
    • Der Kernel-Code ist fast geliefert aus geschützten Case-Anweisungen in switch (ohne Return oder Break nach jedem Case-Block). Es müssen noch 32 von 2311 Fällen einer solchen Verwendung des Schalters behoben werden. Danach wird es möglich sein, beim Erstellen des Kernels den Modus „-Wimplicit-fallthrough“ zu verwenden.
    • Für die PowerPC-Architektur wurde die Unterstützung von Hardwaremechanismen zur Begrenzung unerwünschter Kernel-Zugriffspfade auf Daten im Benutzerbereich implementiert;
    • Blockierungscode hinzugefügt Anschläge MDS-Klasse (Microarchitectural Data Sampling) in Intel-Prozessoren. Ob ein System anfällig für Schwachstellen ist, können Sie über die SysFS-Variable „/sys/devices/system/cpu/vulnerabilities/mds“ überprüfen. Verfügbar Es gibt zwei Schutzmodi: „Full“, was einen aktualisierten Mikrocode erfordert, und „Bypass“, der nicht die vollständige Löschung der CPU-Puffer garantiert, wenn die Kontrolle an den Benutzerbereich oder das Gastsystem übertragen wird. Zur Steuerung der Schutzmodi wurde dem Kernel der Parameter „mds=“ hinzugefügt, der die Werte „full“, „full,nosmt“ (+ Hyper-Threads deaktivieren) und „off“ annehmen kann;
    • Auf x86-64-Systemen wurde ein „Stack Guard-Page“-Schutz für IRQ, Debugging-Mechanismen und Ausnahmehandler hinzugefügt, dessen Kern darin besteht, Speicherseiten an der Grenze zum Stapel zu ersetzen, deren Zugriff zur Generierung eines führt Ausnahme (Seitenfehler);
    • Sysctl-Einstellung vm.unprivileged_userfaultfd hinzugefügt, die die Fähigkeit nichtprivilegierter Prozesse steuert, den Systemaufruf userfaultfd() zu verwenden;
  • Netzwerk-Subsystem
    • Hinzugefügt von IPv6-Gateway-Unterstützung für IPv4-Routen. Beispielsweise können Sie jetzt Routing-Regeln angeben wie „ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0“;
    • Für ICMPv6 sind die ioctl-Aufrufe icmp_echo_ignore_anycast und icmp_echo_ignore_multicast implementiert, um ICMP ECHO für Anycast und zu ignorieren
      Multicast-Adressen. Hinzugefügt von die Möglichkeit, die Intensität der ICMPv6-Paketverarbeitung zu begrenzen;

    • Für das Mesh-Protokoll BATMAN (Better Approach To Mobile Adhoc Networking), das die Erstellung dezentraler Netzwerke ermöglicht, in denen jeder Knoten über benachbarte Knoten verbunden ist, hinzugefügt Unterstützung für Broadcasting von Multicast zu Unicast sowie die Möglichkeit der Steuerung über sysfs;
    • Im Ethtool hinzugefügt ein neuer Parameter „Fast Link Down“, mit dem Sie die Zeit verkürzen können, die benötigt wird, um Informationen über ein Link Down-Ereignis für 1000BaseT zu erhalten (unter normalen Bedingungen beträgt die Verzögerung bis zu 750 ms);
    • Erschien Gelegenheit Bindung von Foo-Over-UDP-Tunneln an eine bestimmte Adresse, Netzwerkschnittstelle oder einen bestimmten Socket (zuvor erfolgte die Bindung nur über eine gemeinsame Maske);
    • Im Wireless-Stack zur Verfügung gestellt Möglichkeit der Implementierung von Handlern
      OWE (Opportunistic Wireless Encryption) im Benutzerbereich;

    • In Netfilter wurde Unterstützung für die Inet-Adressfamilie zu NAT-Ketten hinzugefügt (zum Beispiel können Sie jetzt eine Übersetzungsregel verwenden, um IPv4 und IPv6 zu verarbeiten, ohne die Regeln für IPv4 und IPv6 zu trennen);
    • Im Netzlink hinzugefügt режим streng zur strengen Überprüfung der Richtigkeit aller Nachrichten und Attribute, wobei die erwartete Größe der Attribute nicht überschritten werden darf und das Hinzufügen zusätzlicher Daten am Ende der Nachrichten verboten ist;
  • Speicher- und Systemdienste
    • Das Flag CLONE_PIDFD wurde zum Systemaufruf clone() hinzugefügt. Wenn es angegeben wird, wird der mit dem erstellten untergeordneten Prozess identifizierte Dateideskriptor „pidfd“ an den übergeordneten Prozess zurückgegeben. Dieser Dateideskriptor kann beispielsweise zum Senden von Signalen verwendet werden, ohne befürchten zu müssen, in eine Race-Bedingung zu geraten (unmittelbar nach dem Senden des Signals kann die Ziel-PID aufgrund der Prozessbeendigung freigegeben und von einem anderen Prozess belegt werden);
    • Für die zweite Version von cgroups wurde die Freezer-Controller-Funktionalität hinzugefügt, mit der Sie die Arbeit in einer cgroup stoppen und vorübergehend einige Ressourcen (CPU, I/O und möglicherweise sogar Speicher) für die Ausführung anderer Aufgaben freigeben können. Die Verwaltung erfolgt über die Steuerdateien cgroup.freeze und cgroup.events im cgroup-Baum. Eintrag 1 in cgroup.freeze friert Prozesse in der aktuellen cgroup und allen untergeordneten Gruppen ein. Da das Einfrieren einige Zeit in Anspruch nimmt, wird eine zusätzliche cgroup.events-Datei bereitgestellt, über die Sie sich über den Abschluss des Vorgangs informieren können.
    • Gesichert Export von Speicherattributen, die an jeden Knoten in sysfs angehängt sind, wodurch Sie aus dem Benutzerbereich die Art der Verarbeitung von Speicherbänken in Systemen mit heterogenem Speicher bestimmen können;
    • Das PSI-Subsystem (Pressure Stall Information) wurde verbessert, wodurch Sie Informationen über die Wartezeit für den Empfang verschiedener Ressourcen (CPU, Speicher, I/O) für bestimmte Aufgaben oder Prozessgruppen in einer Kontrollgruppe analysieren können. Mit PSI können User-Space-Handler das Ausmaß der Systemlast und Verlangsamungsmuster im Vergleich zum Load Average genauer einschätzen. Die neue Version bietet Unterstützung für das Festlegen von Empfindlichkeitsschwellenwerten und die Möglichkeit, den poll()-Aufruf zu verwenden, um eine Benachrichtigung zu erhalten, dass die festgelegten Schwellenwerte für einen bestimmten Zeitraum ausgelöst wurden. Diese Funktion ermöglicht es Android, Speicherengpässe frühzeitig zu erkennen, die Ursache von Problemen zu identifizieren und unwichtige Anwendungen zu beenden, ohne dass es zu für den Benutzer erkennbaren Problemen kommt. Bei Stresstests zeigten PSI-basierte Tools zur Überwachung des Speicherverbrauchs im Vergleich zu vmpression-Statistiken zehnmal weniger Fehlalarme.
    • Der Code zur Prüfung von BPF-Programmen wurde optimiert, was eine bis zu 20-mal schnellere Prüfung großer Programme ermöglicht. Durch die Optimierung konnte die Größenbeschränkung für BPF-Programme von 4096 auf eine Million Anweisungen erhöht werden.
    • Für BPF-Programme gewährt die Möglichkeit, auf globale Daten zuzugreifen, wodurch Sie globale Variablen und Konstanten in Programmen definieren können;
    • Добавлен API, mit dem Sie Änderungen an sysctl-Parametern von BPF-Programmen aus steuern können;
    • Für die MIPS32-Architektur wurde ein JIT-Compiler für die virtuelle eBPF-Maschine implementiert;
    • Für die 32-Bit-PowerPC-Architektur wurde Unterstützung für das Debugging-Tool KASan (Kernel Address Sanitizer) hinzugefügt, das bei der Identifizierung von Fehlern bei der Arbeit mit dem Speicher hilft;
    • Auf x86-64-Systemen wurde die Beschränkung für das Platzieren von Status-Dumps während eines Kernel-Absturzes (Crash-Dump) in Speicherbereichen über 896 MB entfernt;
    • Für die s390-Architektur sind Unterstützung für Kernel Address Space Randomization (KASLR) und die Möglichkeit zur Überprüfung digitaler Signaturen beim Laden des Kernels über kexec_file_load() implementiert;
    • Für die PA-RISC-Architektur wurde Unterstützung für den Kernel-Debugger (KGDB), Sprungmarken und kprobes hinzugefügt;
  • Ausrüstung
    • Treiber inklusive Lima für die Mali 400/450 GPU, die in vielen älteren Chips auf Basis der ARM-Architektur verwendet wird. Für neuere Mali-GPUs wurde der Panfrost-Treiber hinzugefügt, der Chips basierend auf den Mikroarchitekturen Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) und Bifrost (Mali G3x, G5x, G7x) unterstützt;
    • Unterstützung für Audiogeräte mit offener Firmware hinzugefügt Sound öffnen Firmware (SOF). Trotz der Verfügbarkeit offener Treiber blieb der Firmware-Code für Soundchips weiterhin geschlossen und wurde in binärer Form bereitgestellt. Das Sound Open Firmware-Projekt wurde von Intel entwickelt, um offene Firmware für DSP-Chips im Zusammenhang mit der Audioverarbeitung zu erstellen (Google beteiligte sich später auch an der Entwicklung). Derzeit bereitet das Projekt bereits die Entdeckung von Firmware für Soundchips der Intel-Plattformen Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake und IceLake vor;
    • Der Intel DRM-Treiber (i915) bietet Unterstützung für Chips
      Elkhartlake (Gen11). PCI-IDs für Comet Lake (Gen9)-Chips hinzugefügt. Die Unterstützung für Icelake-Chips wurde stabilisiert, für die auch zusätzliche PCI-Gerätekennungen hinzugefügt wurden.
      Eingeschaltet
      Modus des asynchronen Umschaltens zwischen zwei Puffern im Videospeicher (async flip) beim Ausführen von Schreibvorgängen über mmio, was die Leistung einiger 3D-Anwendungen erheblich steigerte (z. B. stieg die Leistung im 3DMark Ice Storm-Test um 300-400 %). Technologieunterstützung hinzugefügt HDCP2.2 (High-bandwidth Digital Content Protection) zur Verschlüsselung von über HDMI übertragenen Videosignalen;

    • Der amdgpu-Treiber für die Vega20-GPU hinzugefügt Unterstützung für RAS (Reliability, Availability, Serviceability) und experimentelle Unterstützung für das SMU 11-Subsystem, das die Powerplay-Technologie ersetzte. Für GPU Vega12 hinzugefügt Unterstützung für den BACO-Modus (Bus Active, Chip Off). Anfängliche Unterstützung für XGMI hinzugefügt, einen Hochgeschwindigkeitsbus (PCIe 4.0) für die GPU-Verbindung. Fehlende Kennungen für Karten, die auf der Polaris10-GPU basieren, zum amdkfd-Treiber hinzugefügt;
    • Der Nouveau-Treiber hat Unterstützung für Boards hinzugefügt, die auf dem NVIDIA Turing 117-Chipsatz (TU117, verwendet in der GeForce GTX 1650) basieren. IN
      kconfig hinzugefügt Einstellung zum Deaktivieren veralteter Funktionen, die in aktuellen Versionen von libdrm nicht mehr verwendet werden;

    • Der DRM-API und dem amdgpu-Treiber wurde Unterstützung für „Timeline“-Synchronisationsobjekte hinzugefügt, sodass Sie auf klassisches Blockieren verzichten können.
    • Der vboxvideo-Treiber für die virtuelle VirtualBox-GPU wurde vom Staging-Zweig in die Hauptstruktur verschoben;
    • Aspeed-Treiber für GFX SoC ASPEED-Chip hinzugefügt;
    • Unterstützung für ARM SoC und Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi) hinzugefügt ) Platinen RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Gleichzeitig die Latin American Free Software Foundation gebildet
вариант völlig kostenloser Kernel 5.2 - Linux-libre 5.2-gnu, frei von Firmware- und Treiberelementen, die unfreie Komponenten oder Codeabschnitte enthalten, deren Umfang vom Hersteller begrenzt ist. Die neue Version beinhaltet das Hochladen von Dateien
Sound Open Firmware. Das Laden von Blobs in Treibern ist deaktiviert
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp und ucsi_ccg. Der Blob-Reinigungscode in den Treibern und Subsystemen ixp4xx, imx-sdma, amdgpu, nouveau und goya sowie in der Mikrocode-Dokumentation wurde aktualisiert. Die Reinigung der Blobs im r8822be-Treiber wurde aufgrund der Entfernung gestoppt.

Source: opennet.ru

Kommentar hinzufügen