Linux 5.17-Kernel-Release

Nach zweimonatiger Entwicklungszeit präsentierte Linus Torvalds die Veröffentlichung des Linux-Kernels 5.17. Zu den bemerkenswertesten Änderungen gehören: ein neues Leistungsmanagementsystem für AMD-Prozessoren, die Möglichkeit, Benutzer-IDs rekursiv in Dateisystemen abzubilden, Unterstützung für portable kompilierte BPF-Programme, ein Übergang des Pseudozufallszahlengenerators zum BLAKE2s-Algorithmus, einem RTLA-Dienstprogramm für Echtzeit-Ausführungsanalysen, ein neues Fscache-Backend zum Zwischenspeichern von Netzwerkdateisystemen und die Möglichkeit, Namen an anonyme MMAP-Vorgänge anzuhängen.

Die neue Version enthält 14203 Fixes von 1995 Entwicklern, die Patchgröße beträgt 37 MB (die Änderungen betrafen 11366 Dateien, 506043 Codezeilen wurden hinzugefügt, 250954 Zeilen wurden gelöscht). Etwa 44 % aller in 5.17 eingeführten Änderungen beziehen sich auf Gerätetreiber, etwa 16 % der Änderungen beziehen sich auf die Aktualisierung von Code, der für Hardwarearchitekturen spezifisch ist, 15 % beziehen sich auf den Netzwerkstapel, 4 % beziehen sich auf Dateisysteme und 4 % beziehen sich auf beziehen sich auf interne Kernel-Subsysteme.

Wichtige Neuerungen im Kernel 5.17:

  • Festplattensubsystem, E/A und Dateisysteme
    • Die Möglichkeit einer verschachtelten Zuordnung von Benutzer-IDs gemounteter Dateisysteme wurde implementiert, um Dateien eines bestimmten Benutzers auf einer gemounteten Fremdpartition mit einem anderen Benutzer auf dem aktuellen System zu vergleichen. Mit der hinzugefügten Funktion können Sie die Zuordnung rekursiv auf Dateisystemen verwenden, für die die Zuordnung bereits angewendet wurde.
    • Das fscache-Subsystem, das zum Organisieren der Zwischenspeicherung der über Netzwerkdateisysteme übertragenen Daten im lokalen Dateisystem verwendet wird, wurde komplett neu geschrieben. Die neue Implementierung zeichnet sich durch eine deutliche Vereinfachung des Codes und den Ersatz komplexer Vorgänge zur Planung und Verfolgung von Objektzuständen durch einfachere Mechanismen aus. Die Unterstützung für den neuen fscache ist im CIFS-Dateisystem implementiert.
    • Das Ereignisverfolgungs-Subsystem im fanotify FS implementiert einen neuen Ereignistyp, FAN_RENAME, der es Ihnen ermöglicht, den Vorgang des Umbenennens von Dateien oder Verzeichnissen sofort abzufangen (zuvor wurden zwei separate Ereignisse FAN_MOVED_FROM und FAN_MOVED_TO zur Verarbeitung von Umbenennungen verwendet).
    • Das Btrfs-Dateisystem verfügt über optimierte Protokollierungs- und Fsync-Vorgänge für große Verzeichnisse, die dadurch implementiert werden, dass nur Indexschlüssel kopiert und die Menge der protokollierten Metadaten reduziert werden. Es wurde Unterstützung für die Indizierung und Suche nach der Größe freier Speicherplatzdatensätze bereitgestellt, wodurch die Latenz um etwa 30 % und die Suchzeit verkürzt wurden. Erlaubt, Defragmentierungsvorgänge zu unterbrechen. Die Möglichkeit, Geräte beim Ausgleich zwischen Laufwerken hinzuzufügen, ist deaktiviert, d. h. beim Mounten eines Dateisystems mit der Option „skip_balance“.
    • Es wurde eine neue Syntax zum Mounten des Ceph-Dateisystems vorgeschlagen, die bestehende Probleme im Zusammenhang mit der Bindung an IP-Adressen löst. Zusätzlich zu IP-Adressen können Sie jetzt die Cluster-ID (FSID) verwenden, um den Server zu identifizieren: mount -t ceph [E-Mail geschützt] _name=/[Unterverzeichnis] ​​mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • Das Ext4-Dateisystem wurde auf eine neue Mount-API umgestellt, die die Schritte zum Parsen der Mount-Optionen und zur Superblock-Konfiguration trennt. Wir haben die Unterstützung für die Mount-Optionen lazytime und nolazytime eingestellt, die als vorübergehende Änderung hinzugefügt wurden, um den Übergang von util-linux zur Verwendung des MS_LAZYTIME-Flags zu erleichtern. Unterstützung für das Setzen und Lesen von Labels im FS hinzugefügt (ioctl FS_IOC_GETFSLABEL und FS_IOC_SETFSLABEL).
    • NFSv4 hat Unterstützung für die Arbeit in Dateisystemen ohne Berücksichtigung der Groß-/Kleinschreibung in Datei- und Verzeichnisnamen hinzugefügt. NFSv4.1+ bietet Unterstützung für die Definition aggregierter Sitzungen (Trunking).
  • Speicher- und Systemdienste
    • Amd-pstate-Treiber hinzugefügt, um eine dynamische Frequenzsteuerung für optimale Leistung bereitzustellen. Der Treiber unterstützt AMD-CPUs und APUs ab der Zen-2-Generation, wurde gemeinsam mit Valve entwickelt und zielt auf eine Verbesserung der Energiemanagementeffizienz ab. Für adaptive Frequenzänderungen wird der CPPC-Mechanismus (Collaborative Processor Performance Control) verwendet, der es Ihnen ermöglicht, Indikatoren genauer zu ändern (nicht auf drei Leistungsstufen beschränkt) und schneller auf Zustandsänderungen zu reagieren als der zuvor verwendete ACPI-basierte P-Zustand Treiber (CPUFreq).
    • Das eBPF-Subsystem bietet einen bpf_loop()-Handler, der eine alternative Möglichkeit bietet, Schleifen in eBPF-Programmen schneller und einfacher für die Überprüfung durch einen Verifizierer zu organisieren.
    • Auf Kernel-Ebene ist der CO-RE-Mechanismus (Compile Once – Run Everywhere) implementiert, der es Ihnen ermöglicht, den Code von eBPF-Programmen nur einmal zu kompilieren und einen speziellen Universal-Loader zu verwenden, der das geladene Programm an die aktuellen Kernel- und BTF-Typen anpasst (BPF-Typformat).
    • Es ist möglich, Bereichen des privaten anonymen (über malloc zugewiesenen) Speichers Namen zuzuweisen, was das Debuggen und die Optimierung des Speicherverbrauchs in Anwendungen vereinfachen kann. Namen werden über prctl mit dem Flag PR_SET_VMA_ANON_NAME zugewiesen und in /proc/pid/maps und /proc/pid/smaps in der Form „[anon: ]".
    • Der Taskplaner ermöglicht die Verfolgung und Anzeige der Zeit, die Prozesse im erzwungenen Leerlaufzustand verbringen, in /proc/PID/sched und wird beispielsweise verwendet, um die Last zu reduzieren, wenn der Prozessor überhitzt.
    • GPIO-SIM-Modul hinzugefügt, um GPIO-Chips zum Testen zu simulieren.
    • Dem Befehl „perf ftrace“ wurde ein Unterbefehl „latency“ hinzugefügt, um Histogramme mit Latenzinformationen zu generieren.
    • Eine Reihe von „RTLA“-Dienstprogrammen zur Analyse der Arbeit in Echtzeit hinzugefügt. Es umfasst Dienstprogramme wie osnoise (bestimmt den Einfluss des Betriebssystems auf die Ausführung einer Aufgabe) und timerlat (ändert die mit dem Timer verbundenen Verzögerungen).
    • Eine zweite Reihe von Patches wurde mit der Implementierung des Konzepts der Seitenfolios integriert, die zusammengesetzten Seiten ähneln, aber eine verbesserte Semantik und eine klarere Arbeitsorganisation aufweisen. Durch die Verwendung von Tomes können Sie die Speicherverwaltung in einigen Kernel-Subsystemen beschleunigen. Mit den vorgeschlagenen Patches wurde die Umstellung des Seitencaches auf die Verwendung von Tomes abgeschlossen und eine erste Unterstützung für Tomes im XFS-Dateisystem hinzugefügt.
    • Build-Modus „make mod2noconfig“ hinzugefügt, der eine Konfiguration generiert, die alle deaktivierten Subsysteme in Form von Kernelmodulen sammelt.
    • Die Anforderungen an die Version von LLVM/Clang, die zum Erstellen des Kernels verwendet werden kann, wurden erhöht. Build erfordert jetzt mindestens die LLVM 11-Version.
  • Virtualisierung und Sicherheit
    • Es wird eine aktualisierte Implementierung des Pseudozufallszahlengenerators RDRAND vorgeschlagen, der für den Betrieb der /dev/random- und /dev/urandom-Geräte verantwortlich ist. Besonders hervorzuheben ist der Übergang zur Verwendung der BLAKE2s-Hash-Funktion anstelle von SHA1 für Entropiemischvorgänge. Die Änderung verbesserte die Sicherheit des Pseudozufallszahlengenerators, indem der problematische SHA1-Algorithmus eliminiert und das Überschreiben des RNG-Initialisierungsvektors beseitigt wurde. Da der BLAKE2s-Algorithmus SHA1 in der Leistung überlegen ist, wirkte sich sein Einsatz auch positiv auf die Leistung aus.
    • Zusätzlicher Schutz vor Schwachstellen in Prozessoren, die durch die spekulative Ausführung von Anweisungen nach bedingungslosen Vorwärtssprungoperationen verursacht werden. Das Problem tritt aufgrund der präventiven Verarbeitung von Anweisungen auf, die unmittelbar auf die Verzweigungsanweisung im Speicher folgen (SLS, Straight Line Speculation). Um den Schutz zu aktivieren, muss mit der aktuellen Testversion von GCC 12 erstellt werden.
    • Es wurde ein Mechanismus zum Verfolgen der Referenzzählung (refcount, reference-count) hinzugefügt, der darauf abzielt, die Anzahl der Fehler bei der Referenzzählung zu reduzieren, die zu einem Zugriff auf den Speicher führen, nachdem dieser freigegeben wurde. Der Mechanismus ist derzeit auf das Netzwerksubsystem beschränkt, kann aber in Zukunft auf andere Teile des Kernels angepasst werden.
    • Es wurden erweiterte Prüfungen neuer Einträge in der Seitentabelle des Prozessspeichers implementiert, die es ermöglichen, bestimmte Arten von Schäden zu erkennen und das System zu stoppen, wodurch Angriffe frühzeitig blockiert werden.
    • Es wurde die Möglichkeit hinzugefügt, Kernel-Module direkt durch den Kernel selbst und nicht durch einen Handler im Benutzerbereich zu entpacken, was die Verwendung des LoadPin-LSM-Moduls ermöglicht, um sicherzustellen, dass Kernel-Module von einem verifizierten Speichergerät in den Speicher geladen werden.
    • Bereitgestellte Assembly mit dem Flag „-Wcast-function-type“, das Warnungen über die Umwandlung von Funktionszeigern in einen inkompatiblen Typ ermöglicht.
    • Virtueller Host-Treiber pvUSB für den Xen-Hypervisor hinzugefügt, der Zugriff auf USB-Geräte ermöglicht, die an Gastsysteme weitergeleitet werden (ermöglicht Gastsystemen den Zugriff auf physische USB-Geräte, die dem Gastsystem zugewiesen sind).
    • Es wurde ein Modul hinzugefügt, das die Interaktion über WLAN mit dem IME-Subsystem (Intel Management Engine) ermöglicht, das in den meisten modernen Motherboards mit Intel-Prozessoren enthalten ist und als separater Mikroprozessor implementiert ist, der unabhängig von der CPU arbeitet.
    • Für die ARM64-Architektur wurde Unterstützung für das Debugging-Tool KCSAN (Kernel Concurrency Sanitizer) implementiert, das darauf ausgelegt ist, Race Conditions innerhalb des Kernels dynamisch zu erkennen.
    • Für 32-Bit-ARM-Systeme wurde die Möglichkeit hinzugefügt, den KFENCE-Mechanismus zur Fehlererkennung bei der Arbeit mit dem Speicher zu verwenden.
    • Der KVM-Hypervisor bietet Unterstützung für AMX-Anweisungen (Advanced Matrix Extensions), die in den kommenden skalierbaren Intel Xeon Serverprozessoren implementiert sind.
  • Netzwerk-Subsystem
    • Unterstützung für die Auslagerung von Vorgängen im Zusammenhang mit der Verkehrsverwaltung auf die Seite von Netzwerkgeräten hinzugefügt.
    • Es wurde die Möglichkeit hinzugefügt, MCTP (Management Component Transport Protocol) über serielle Geräte zu verwenden. MCTP kann für die Kommunikation zwischen Management-Controllern und den zugehörigen Geräten (Host-Prozessoren, Peripheriegeräte usw.) verwendet werden.
    • Der TCP-Stack wurde optimiert, um beispielsweise die Leistung von recvmsg-Aufrufen zu verbessern, wurde eine verzögerte Freigabe von Socket-Puffer implementiert.
    • Auf der Berechtigungsebene CAP_NET_RAW ist das Festlegen der Modi SO_PRIORITY und SO_MARK über die Funktion setsockopt zulässig.
    • Für IPv4 dürfen Raw-Sockets mithilfe der Optionen IP_FREEBIND und IP_TRANSPARENT an nicht lokale IP-Adressen gebunden werden.
    • sysctl arp_missed_max wurde hinzugefügt, um den Schwellenwert für die Anzahl der Fehler während der ARP-Monitorprüfung zu konfigurieren, nach der die Netzwerkschnittstelle in einen deaktivierten Zustand versetzt wird.
    • Bietet die Möglichkeit, separate sysctl-min_pmtu- und mtu_expires-Werte für Netzwerk-Namespaces zu konfigurieren.
    • Der Ethtool-API wurde die Möglichkeit hinzugefügt, die Größe von Puffern für eingehende und ausgehende Pakete festzulegen und zu bestimmen.
    • Netfilter hat Unterstützung für das Filtern des Transit-PPPoE-Verkehrs in einer Netzwerkbrücke hinzugefügt.
    • Das ksmbd-Modul, das einen Dateiserver mithilfe des SMB3-Protokolls implementiert, hat Unterstützung für den Schlüsselaustausch hinzugefügt, den Netzwerkport 445 für smbdirect aktiviert und Unterstützung für den Parameter „smb2 max credit“ hinzugefügt.
  • Ausrüstung
    • Dem drm-Subsystem (Direct Renderering Manager) und dem i915-Treiber wurde Unterstützung für Bildschirme zur Anzeige vertraulicher Informationen hinzugefügt. Beispielsweise sind einige Laptops mit Bildschirmen mit integriertem vertraulichen Anzeigemodus ausgestattet, was die Anzeige von außen erschwert . Die hinzugefügten Änderungen ermöglichen es Ihnen, spezielle Treiber für solche Bildschirme anzuschließen und vertrauliche Browsermodi zu steuern, indem Sie Eigenschaften in regulären KMS-Treibern festlegen.
    • Der amdgpu-Treiber unterstützt die STB-Debugging-Technologie (Smart Trace Buffer) für alle AMD-GPUs, die diese unterstützen. STB erleichtert die Analyse von Fehlern und die Identifizierung der Problemquelle, indem in einem speziellen Puffer Informationen über die vor dem letzten Fehler ausgeführten Funktionen gespeichert werden.
    • Der i915-Treiber fügt Unterstützung für Intel Raptor Lake S-Chips hinzu und ermöglicht standardmäßig die Unterstützung des Grafiksubsystems von Intel Alder Lake P-Chips. Es ist möglich, die Hintergrundbeleuchtung des Bildschirms über die VESA DPCD-Schnittstelle zu steuern.
    • In den fbcon/fbdev-Treibern wurde die Hardware-Scroll-Beschleunigung in der Konsole wieder unterstützt.
    • Weitere Integration von Änderungen zur Unterstützung von Apple M1-Chips. Es wurde die Möglichkeit implementiert, den simpledrm-Treiber auf Systemen mit einem Apple M1-Chip für die Ausgabe über einen von der Firmware bereitgestellten Framebuffer zu verwenden.
    • Unterstützung für ARM SoС, Geräte und Boards Snapdragon 7c, 845 und 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 ( Acer Chromebook 314), Mediatek MT7986a/b (verwendet in WLAN-Routern), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8 , Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • Unterstützung für ARM Cortex-M55- und Cortex-M33-Prozessoren hinzugefügt.
    • Unterstützung für Geräte hinzugefügt, die auf CPU-MIPS basieren: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Unterstützung für StarFive JH7100 SoC basierend auf der RISC-V-Architektur hinzugefügt.
    • Lenovo-yogabook-wmi-Treiber hinzugefügt, um die Hintergrundbeleuchtung der Tastatur zu steuern und auf verschiedene Sensoren im Lenovo Yoga Book zuzugreifen.
    • Treiber asus_wmi_sensors hinzugefügt, um auf Sensoren zuzugreifen, die auf Asus X370-, X470-, B450-, B550- und X399-Motherboards basierend auf AMD Ryzen-Prozessoren verwendet werden.
    • x86-android-tablets-Treiber für x86-basierte Tablet-PCs hinzugefügt, die mit der Android-Plattform ausgeliefert werden.
    • Unterstützung für TrekStor SurfTab duo W1-Touchscreens und elektronischen Stift für Chuwi Hi10 Plus- und Pro-Tablets hinzugefügt.
    • Treiber für SoC Tegra 20/30 bieten zusätzliche Unterstützung für Strom- und Spannungsmanagement. Ermöglicht das Booten auf älteren 32-Bit-Tegra-SoC-Geräten wie ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 und Pad TF300TG.
    • Treiber für Siemens-Industriecomputer hinzugefügt.
    • Unterstützung für Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA und Team Source Display TST043015CMHX LCD-Panels hinzugefügt.
    • Unterstützung für Soundsysteme und Codecs AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel-Systeme mit NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx hinzugefügt. Probleme mit Tegra194 HD-Audio wurden behoben. HDA-Unterstützung für CS35L41-Codecs hinzugefügt. Verbesserte Unterstützung für Soundsysteme für Lenovo- und HP-Laptops sowie Gigabyte-Motherboards.

Source: opennet.ru

Kommentar hinzufügen