Nach zwei Monaten Entwicklung 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 der rekursiven Zuordnung von Benutzer-IDs in Dateisystemen, Unterstützung für portierbare, kompilierte BPF-Programme, die Umstellung des Generators für Zufallszahlen auf den BLAKE2s-Algorithmus, das RTLA-Tool zur Analyse der Echtzeitleistung, ein neues fscache-Backend für das Caching von Netzdateisystemen sowie die Möglichkeit, Namen an anonyme mmap-Operationen zu binden.
In die neue Version wurden 14.203 Fehlerbehebungen von 1.995 Entwicklern aufgenommen, die Patchgröße beträgt 37 MB (Änderungen betrafen 11.366 Dateien, 506.043 Codezeilen wurden hinzugefügt und 250.954 Zeilen wurden entfernt). Etwa 44 % aller Änderungen in 5.17 betreffen Gerätetreiber, etwa 16 % stehen im Zusammenhang mit der Aktualisierung von architekturspezifischem Code, 15 % sind mit dem Netzwerk-Stack verbunden, 4 % mit Dateisystemen und 4 % mit internen Subsystemen des Kernels.
Die wichtigsten Neuerungen im Kernel 5.17:
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Die Möglichkeit der verschachtelten Zuordnung von Benutzer-IDs in eingebundenen Dateisystemen wurde implementiert, die zur Zuordnung von Dateien eines bestimmten Benutzers in einer eingebundenen Fremdpartition mit einem anderen Benutzer im aktuellen System dient. Die hinzugefügte Möglichkeit erlaubt eine rekursive Nutzung der Zuordnung über Dateisysteme, für die bereits eine Zuordnung erfolgt.
- Das fscache-Subsystem wurde vollständig neu geschrieben, das für die Organisation des Caching in lokalen Dateisystemen von über Netzwerkdateisysteme übertragenen Daten verwendet wird. Die neue Implementierung zeichnet sich durch eine signifikante Vereinfachung des Codes aus und ersetzt komplexe Planungs- und Zustandverfolgungsoperationen durch einfachere Mechanismen. Die Unterstützung des neuen fscache ist im CIFS-Dateisystem implementiert.
- Im Fanotify-Ereignisüberwachungssystem wurde ein neuer Ereignistyp FAN_RENAME implementiert, der es ermöglicht, die Umbenennung von Dateien oder Verzeichnissen auf einmal abzufangen (zuvor wurden zur Verarbeitung von Umbenennungen zwei separate Ereignisse, FAN_MOVED_FROM und FAN_MOVED_TO, verwendet).
- Im Dateisystem Btrfs wurden die Protokollierungs- und fsync-Operationen für große Verzeichnisse optimiert, indem nur Indexschlüssel kopiert und das Volumen der protokollierten Metadaten reduziert wurde. Es wurde eine Unterstützung für die Indizierung und Suche nach der Größe von freien Speicherplatzaufzeichnungen gewährleistet, was die Latenzen um etwa 30 % reduzierte und die Suchzeit verkürzte. Defragmentierungsoperationen können jetzt unterbrochen werden. Es besteht die Möglichkeit, Geräte hinzuzufügen, während die Lastverteilung zwischen den Speichergeräten deaktiviert ist, d.h. beim Einhängen des FS mit der Option skip_balance.
- Ein neuer Syntax zum Mounten des Ceph-Dateisystems wurde vorgeschlagen, um bestehende Probleme im Zusammenhang mit der Bindung an IP-Adressen zu lösen. Zusätzlich IP-Adressen kann jetzt zur Bestimmung des Servers die Cluster-ID (FSID) verwendet werden: mount -t ceph user@fsid.fs_name=\[subdir] mnt -o mon_addr=monip1[:port][\monip2[:port]]
- Das Dateisystem Ext4 wurde auf eine neue API zum Mounten umgestellt, die die Phasen der Analyse der Mount-Optionen und der Konfiguration des Superblocks trennt. Die Unterstützung für die Mount-Optionen lazytime und nolazytime wurde eingestellt, die als vorübergehende Änderung eingeführt wurden, um die Umstellung von util-linux auf die Verwendung des Flags MS_LAZYTIME zu erleichtern. Es wurde Unterstützung für das Setzen und Lesen von Labels im FS (ioctl FS_IOC_GETFSLABEL und FS_IOC_SETFSLABEL) hinzugefügt.
- In NFSv4 wurde die Unterstützung für den Betrieb in Dateisystemen ohne Unterscheidung zwischen Groß- und Kleinschreibung in Dateinamen und Verzeichnissen hinzugefügt. In NFSv4.1+ wurde die Unterstützung zur Definition aggregierter Sitzungen (Trunking) eingeführt.
- Speicher und Systemdienste
- Ein Treiber für amd-pstate wurde hinzugefügt, der eine dynamische Frequenzregelung zur Erzielung optimaler Leistung ermöglicht. Der Treiber unterstützt AMD CPUs und APUs ab der Zen 2-Generation, wurde gemeinsam mit Valve entwickelt und zielt darauf ab, die Effizienz der Energieverwaltung zu verbessern. Für die adaptive Frequenzänderung wird der CPPC-Mechanismus (Collaborative Processor Performance Control) verwendet, der präzisere Änderungen der Leistungsparameter ermöglicht (nicht auf drei Leistungsstufen beschränkt) und schneller auf Statusänderungen reagiert als zuvor verwendete P-State-Treiber basierend auf ACPI (CPUFreq).
- Im eBPF-Subsystem wurde der Handler bpf_loop() eingeführt, der eine alternative Möglichkeit zur Organisation von Schleifen in eBPF-Programmen bietet, die schneller und einfacher vom Verifizierer überprüft werden kann.
- Auf Kernel-Ebene wurde der CO-RE-Mechanismus (Compile Once — Run Everywhere) implementiert, der es ermöglicht, eBPF-Programmcodes nur einmal zu kompilieren und einen speziellen universellen Loader zu verwenden, der das zu ladende Programm an den aktuellen Kernel und die BTF-Typen (BPF Type Format) anpasst.
- Es wurde die Möglichkeit geschaffen, Namen für Bereiche des privaten anonymen (durch malloc zugewiesenen) Speichers zu vergeben, was die Fehlersuche und die Optimierung des Speicherverbrauchs in Anwendungen erleichtern kann. Namen werden über prctl mit dem Flag PR_SET_VMA_ANON_NAME zugewiesen und erscheinen in /proc/pid/maps und /proc/pid/smaps in der Form „[anon:<name>]“.
- Im Task-Scheduler wurde die Verfolgung und Anzeige der Zeit, die Prozesse im Zustand des erzwungenen Leerlaufs (forced-idle) verbringen, in /proc/PID/sched implementiert, was beispielsweise zur Verringerung der Belastung bei Überhitzung der CPU verwendet wird.
- Ein gpio-sim-Modul wurde hinzugefügt, das zur Simulation von GPIO-Chips für Testzwecke dient.
- Im Befehl „perf ftrace“ wurde der Unterbefehl „latency“ hinzugefügt, um Histogramme mit Informationen über Verzögerungen zu generieren.
- Ein Satz von Tools „RTLA“ wurde zur Analyse der Arbeit im Echtzeitbetrieb hinzugefügt. Zu den Tools gehören unter anderem osnoise (bestimmt den Einfluss des Betriebssystems auf die Ausführung von Aufgaben) und timerlat (ändert die mit Timern verbundenen Verzögerungen).
- Die zweite Serie von Patches mit der Implementierung des Konzepts von Seitenfolien (page folios) wurde integriert, die ähnlichen Eigenschaften wie kombinierte Seiten (compound pages) haben, jedoch eine verbesserte Semantik und eine klarere Arbeitsorganisation aufweisen. Die Verwendung von Folien ermöglicht eine schnellere Speicherverwaltung in bestimmten Kernsubsystemen. In den vorgeschlagenen Patches wurde der Umstieg des Seiten-Cache auf die Verwendung von Folien abgeschlossen und eine erste Unterstützung für Folien im XFS-Dateisystem hinzugefügt.
- Ein Build-Modus „make mod2noconfig“ wurde hinzugefügt, bei dem eine Konfiguration generiert wird, die alle deaktivierten Subsysteme in Form von Kernel-Modulen zusammenstellt.
- Die Anforderungen an die Version von LLVM/Clang, die für den Kernel-Bau verwendet werden kann, wurden erhöht. Für den Bau wird nun mindestens die Version LLVM 11 benötigt.
- Virtualisierung und Sicherheit
- Eine aktualisierte Implementierung des RDRAND-Zufallszahlengenerators wurde vorgeschlagen, die für den Betrieb der Geräte /dev/random und /dev/urandom verantwortlich ist und die bemerkenswerte Umstellung auf die Verwendung der HASH-Funktion BLAKE2s anstelle von SHA1 für Entropiemischungsoperationen beinhaltet. Diese Änderung hat die Sicherheit des Zufallszahlengenerators verbessert, da der problematische SHA1-Algorithmus eliminiert und eine Schreiboperation im Initialisierungsvektor des RNG ausgeschlossen wurde. Da der BLAKE2s-Algorithmus SHA1 in der Leistung übertrifft, hat sich dessen Anwendung auch positiv auf die Leistung ausgewirkt.
- Ein Schutz vor Schwachstellen in Prozessoren, verursacht durch spekulative Ausführung von Instruktionen nach bedingungslosen Sprunganweisungen, wurde hinzugefügt. Das Problem tritt aufgrund der vorzeitigen Verarbeitung von Instruktionen auf, die im Speicher direkt hinter dem Sprungkommando stehen (SLS, Straight Line Speculation). Um den Schutz zu aktivieren, ist eine Kompilierung mit der Testversion von GCC 12 erforderlich.
- Ein Mechanismus zur Verfolgung der Referenzzählung (refcount, reference-count) wurde hinzugefügt, um die Anzahl der Fehler bei der Referenzzählung zu reduzieren, die zu einem Zugriff auf Speicher nach dessen Freigabe führen. Der Mechanismus ist derzeit auf das Netzwerk-Subsystem beschränkt, kann aber zukünftig auch für andere Teile des Kernels angepasst werden.
- Erweiterte Überprüfungen neuer Einträge in der Seiten-Tabelle des Prozesses wurden implementiert, die es ermöglichen, bestimmte Arten von Beschädigungen zu erkennen und das System zu stoppen, um Angriffe im frühen Stadium zu blockieren.
- Die Möglichkeit wurde hinzugefügt, Kernel-Module direkt vom Kernel selbst zu entpacken, anstatt von einem Benutzerraumbearbeiter, was es mit dem LSM-Modul LoadPin ermöglicht, sicherzustellen, dass Kernel-Module aus einem geprüften Speichermedium in den Speicher geladen werden.
- Eine Kompilierung mit dem Flag „-Wcast-function-type“ wurde bereitgestellt, die Warnungen über die Umwandlung von Funktionszeigern in inkompatible Typen ausgibt.
- Ein virtueller Hosttreiber pvUSB für den Hypervisor Xen wurde hinzugefügt, der Zugriff auf USB-Geräte ermöglicht, die in Gastbetriebssysteme durchgereicht werden (ermöglicht den Gastbetriebssystemen den Zugriff auf physische USB-Geräte, die dem Gastbetriebssystem zugewiesen sind).
- Ein Modul wurde hinzugefügt, das über Wi-Fi mit dem IME (Intel Management Engine) interagiert, welches in den meisten modernen Motherboards mit Intel-Prozessoren enthalten ist und als eigenständiger Mikroprozessor arbeitet, der unabhängig von der CPU agiert.
- Für die ARM64-Architektur wurde Unterstützung für das Debugging-Tool KCSAN (Kernel Concurrency Sanitizer) implementiert, das zur dynamischen Erkennung von Race-Conditions im Kernel dient.
- Für 32-Bit ARM-Systeme wurde die Möglichkeit hinzugefügt, den KFENCE-Mechanismus zur Erkennung von Speicherfehlern anzuwenden.
- Im KVM-Hypervisor wurde die Unterstützung für AMX (Advanced Matrix Extensions) implementiert, die in den kommenden Serverprozessoren Intel Xeon Scalable verfügbar sein wird.
- Netzwerksubsystem
- Die Unterstützung für das Offloading von verkehrsmanagementbezogenen Operationen auf Netzwerkgeräte wurde hinzugefügt.
- Die Möglichkeit zur Verwendung des MCTP (Management Component Transport Protocol) über serielle Schnittstellen wird unterstützt. MCTP kann zur Kommunikation zwischen Steuercontrollern und 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, indem das verzögerte Freigeben von Socket-Puffern implementiert wurde.
- Auf der Berechtigungsstufe CAP_NET_RAW wurde es erlaubt, über die Funktion setsockopt die Modi SO_PRIORITY und SO_MARK festzulegen.
- Für IPv4 wurde das Anhängen von Raw-Sockets an nicht-lokale IP-Adressen unter Verwendung der Optionen IP_FREEBIND und IP_TRANSPARENT erlaubt.
- Es wurde ein sysctl arp_missed_max hinzugefügt, um die Schwelle für die Anzahl der Fehler beim ARP-Monitoring zu konfigurieren, nach der das Netzwerkinterface in den deaktivierten Zustand versetzt wird.
- Die Möglichkeit zur Konfiguration separater sysctl-Werte min_pmtu und mtu_expires für Netzwerk-Namensräume wurde bereitgestellt.
- Im ethtool-API wurde die Möglichkeit hinzugefügt, die Größe von eingehenden und ausgehenden Paket-Puffern festzulegen und zu bestimmen.
- In Netfilter wurde die Unterstützung für die Filterung von Transit-pppoe-Traffic im Netzwerkbridge hinzugefügt.
- Im Modul ksmbd, das die Dateioperationen implementiert, die das SMB3-Protokoll verwenden, wurde die Unterstützung für den Schlüsselaustausch hinzugefügt, der den Netzwerkport 445 für smbdirect nutzt, sowie Unterstützung für den Parameter "smb2 max credit". Server, der das SMB3-Protokoll verwendet, wurde die Unterstützung für den Schlüsselaustausch hinzugefügt, der Netzwerkport 445 für smbdirect aktiviert und die Unterstützung für den Parameter „smb2 max credit“ hinzugefügt.
- Ausrüstung
- Im Direct Rendering Manager (drm) und dem i915-Treiber wurde die Unterstützung für Bildschirme zur Anzeige vertraulicher Informationen hinzugefügt. Einige Laptops sind beispielsweise mit Bildschirmen mit integriertem Datenschutzmodus ausgestattet, die das Mitlesen erschweren. Die hinzugefügten Änderungen ermöglichen die Verwendung spezieller Treiber für solche Bildschirme und die Steuerung der Datenschutzmodi über die Eigenschaften in herkömmlichen KMS-Treibern.
- Im amdgpu-Treiber wurde die Unterstützung der Debugging-Technologie STB (Smart Trace Buffer) für alle unterstützenden AMD-GPU integriert. STB erleichtert die Analyse von Abstürzen und die Identifizierung von Problemunterlagen durch das Speichern von Informationen über die ausgeführten Funktionen in einem speziellen Puffer vor dem letzten Absturz.
- Im i915-Treiber wurde die Unterstützung für Intel Raptor Lake S-Chips hinzugefügt, und die Unterstützung für die Grafikunterstützung der Intel Alder Lake P-Chips ist standardmäßig aktiviert. Es wurde die Möglichkeit geschaffen, die Bildschirmbeleuchtung über die DPCD-Schnittstelle von VESA zu steuern.
- In den fbcon/fbdev-Treibern wurde die Unterstützung für die hardwarebeschleunigte Bildlauffunktion in der Konsole wiederhergestellt.
- Die Integration von Änderungen zur Unterstützung der Apple M1-Chips wurde fortgesetzt. Es wurde die Möglichkeit implementiert, den simpledrm-Treiber auf Systemen mit dem Apple M1-Chip zur Ausgabe über den von der Firmware bereitgestellten Framebuffer zu verwenden.
- Die Unterstützung von ARM SoCs, Geräten und Platinen wie 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 Wi-Fi-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, wurde hinzugefügt.
- Die Unterstützung für ARM Cortex-M55 und Cortex-M33-Prozessoren wurde hinzugefügt.
- Die Unterstützung für Geräte basierend auf CPU MIPS wurde hinzugefügt: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
- Die Unterstützung für die SoC StarFive JH7100 auf der Basis der RISC-V-Architektur wurde hinzugefügt.
- Ein Treiber für lenovo-yogabook-wmi wurde hinzugefügt, um die Tastaturbeleuchtung zu steuern und auf verschiedene Sensoren im Lenovo Yoga Book zuzugreifen.
- Ein Treiber für asus_wmi_sensors wurde hinzugefügt, um auf die Sensoren zuzugreifen, die auf Asus-Motherboards der Serien X370, X470, B450, B550 und X399 basierend auf AMD Ryzen-Prozessoren verwendet werden.
- Ein Treiber für x86-android-tablets wurde hinzugefügt, der für Tablets auf Basis der x86-Architektur, die mit der Android-Plattform geliefert werden, entwickelt wurde.
- Unterstützung für Touchscreen-Geräte TrekStor SurfTab duo W1 und für digitale Stifte für Tablets Chuwi Hi10 Plus und Pro hinzugefügt.
- Treiber für SoC Tegra 20/30 haben Unterstützung für Energie- und Spannungsmanagement erhalten. Die Möglichkeit zum Booten auf älteren 32-Bit-Geräten mit SoC Tegra, wie ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 und Pad TF300TG, wurde sichergestellt.
- Treiber für industrielle Computer von Siemens hinzugefügt.
- Unterstützung für LCD-Panels von Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA und Team Source Display TST043015CMHX hinzugefügt.
- Unterstützung für Audiosysteme und Codec 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. Unterstützung für HDA-Codec CS35L41 wurde hinzugefügt. Verbesserte Unterstützung für Audiosysteme von Lenovo und HP sowie für Mainboards von Gigabyte.
Quelle: opennet.ru
