Linux-Kernel-Version 5.13

Nach zwei Monaten Entwicklung stellte Linus Torvalds die Version 5.13 des Linux-Kernels vor. Zu den bemerkenswertesten Änderungen gehören: das EROFS-Dateisystem, erste Unterstützung für Apple M1-Chips, der cgroup-Controller «misc», das Ende der Unterstützung für /dev/kmem, Unterstützung neuer GPUs von Intel und AMD, die Möglichkeit, Kernel-Funktionen direkt aus BPF-Programmen aufzurufen, die Randomisierung des Kernel-Stacks für jeden Systemaufruf, die Möglichkeit des Upgrades auf Clang mit CFI-Schutz (Control Flow Integrity), das LSM-Modul Landlock für zusätzliche Einschränkungen von Prozessen, ein virtuelles Soundgerät auf Basis von virtio und der Multi-Shot-Modus in io_uring.

In die neue Version wurden 17189 Korrekturen von 2150 Entwicklern aufgenommen (die höchste Zahl in der Geschichte), die Patch-Größe beträgt 60 MB (die Änderungen betreffen 12996 Dateien, es wurden 794705 Codezeilen hinzugefügt und 399590 entfernt). Etwa 47 % aller in 5.13 implementierten Änderungen beziehen sich auf Gerätetreiber, etwa 14 % der Änderungen sind spezifisch für die Hardwarearchitektur, 13 % betreffen den Netzwerkstack, 5 % die Dateisysteme und 4 % interne Kernsubsysteme.

Hauptneuheiten:

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
    • Unterstützung für das EROFS-Dateisystem (Enhanced Read-Only File System), das von Huawei für die Verwendung auf nur lesbaren Partitionen vorgeschlagen wurde, wurde hinzugefügt. Das neue Dateisystem unterstützt die Speicherung von Daten in komprimierter Form und zeigt im Vergleich zu Ext4 ähnliche Leistung bei sequentiellen Lesevorgängen, übertrifft Ext4 jedoch bei zufälligem Zugriff auf Daten um ein Vielfaches. Zum Beispiel, bei einem Komprimierungsgrad von 4 und getestet auf Server mit einer Festplatte übertraf das EROFS-Dateisystem Ext4 bei zufälligen Lesevorgängen um mehr als das Sechsfache, während es auf einem Android-Smartphone mit Flash nahezu dreimal so schnell war. Wie bei anderen schreibgeschützten Dateisystemen wurde die Struktur von EROFS wesentlich vereinfacht, indem einige Bereiche der Metadaten, wie die Bitmap freier Blöcke, bei der Implementierung weggelassen wurden.
    • Für das SMB3-Dateisystem wurde die Mount-Option „rasize“ implementiert, mit der die Größe des Readahead-Fensters zur Leistungssteigerung bestimmter Lastarten festgelegt werden kann.
    • Im ext4-Dateisystem wurde die Überschreibung von Katalogelementen beim Löschen von Dateien sichergestellt. Im ext4 ist zudem die gleichzeitige Verwendung eines Modus ohne Berücksichtigung der Groß- und Kleinschreibung sowie eine Verschlüsselung zulässig.
    • Im Dateisystem exFAT wurde die Unterstützung für den ioctl-Befehl FITRIM (discard) hinzugefügt, um das Laufwerk über unbenutzte Blöcke im Dateisystem zu informieren.
    • Im Dateisystem XFS wurde die Möglichkeit zur Rückgabe von Speicher aus der letzten Verteilunggruppe im Dateisystem hinzugefügt, was den ersten Schritt zur Implementierung der Funktion zur Verringerung der Größe bestehender Partitionen im XFS-Dateisystem darstellt.
    • Ein neuer Systemaufruf quotactl_path wurde hinzugefügt, der sich von quotactl unterscheidet, da er das Verwalten von Quoten nicht über eine spezielle Geräte-Datei, sondern durch Angabe des Pfads zum Einhängepunkt des Dateisystems ermöglicht.
    • Im fanotify-Mechanismus wurden die Möglichkeiten für unprivilegierte Benutzer erweitert. Beispielsweise kann man jetzt ohne SYS_CAP_ADMIN-Rechte analog zu inotify die Ereignisse OPEN, ACCESS, MODIFY und CLOSE für Dateien und Verzeichnisse verfolgen.
  • Speicher und Systemdienste
    • Ein neuer cgroup-Controller – 'Misc' (CONFIG_CGROUP_MISC) – wurde hinzugefügt, der zur Begrenzung und Überwachung von skalaren Ressourcen dient, die mit einem einfachen Zähler verwaltet werden können und durch maximale zulässige Werte einschränkbar sind. Als Anwendungsbeispiel für den neuen cgroup-Controller wird die Verwaltung von Adressraum-Identifiers, die im AMD SEV (Secure Encrypted Virtualization)-Mechanismus verwendet werden, genannt.
    • Im Interface für asynchrone Ein-/Ausgabe io_uring wurde für POLL-Anfragen der 'multi-shot'-Modus implementiert, bei dem POLL nach der Ereignisgenerierung nicht entfernt wird, sondern aktiv bleibt und mehrere Ereignisse generieren kann.
    • Der Code aus dem Realtime-Kernel-Branch, der die Verarbeitung von software-generierten Interrupts in Kernel-Threads sicherstellt, wurde übernommen, was es ermöglicht, sie durch höher priorisierte Prozesse zu verdrängen.
    • Die interne Bibliothek netfs wurde hinzugefügt, in die typische Funktionen, die in Netzwerk-Dateisystemen verwendet werden, ausgelagert wurden.
    • Für die PowerPC-Architektur wurde die Unterstützung für Zeiträume (time namespaces) implementiert, die es ermöglichen, in Containern eigene Zeit zu verwenden.
    • Für die RISC-V-Architektur wurde die Unterstützung für kexec, Crash-Dump, kprobe und das Ausführen des Kernels im Ort (execute-in-place, Ausführung vom Ursprungsmedium, ohne in den RAM zu kopieren) implementiert.
    • In BPF-Trace-Programmen wurde die Möglichkeit der Verwendung von task-local storage eingeführt, was eine höhere Leistung durch die Bindung von Daten an einen bestimmten BPF-Handler ermöglicht.
    • Ein neuer Mechanismus für den direkten Aufruf von Kernfunktionen aus BPF-Programmen wurde implementiert, der bereits in der Umsetzung von TCP-Überlastalgorithmen verwendet wird. Zur Gewährleistung der Sicherheit müssen die aufgerufenen Funktionen explizit in einer Whitelist definiert werden.
    • Im System zur Nachverfolgung von Funktionen ftrace wurde die Option func-no-repeats hinzugefügt, die wiederholte aufeinanderfolgende Funktionsaufrufe als Zähler darstellt.
    • Im Systemaufruf userfaultfd(), der zur Behandlung von Seitenfehlern (Zugriff auf nicht zugewiesene Speicherseiten) im Benutzermodus dient, wurde die Möglichkeit zur Verwaltung von partiellen Fehlern hinzugefügt, bei denen eine Speicherseite vorhanden ist, jedoch kein Eintrag in der Seitentabelle existiert.
    • Die Unterstützung für die spezielle Datei /dev/kmem wurde eingestellt, über die auf den gesamten Adressraum des Kernels zugegriffen werden kann. Diese Datei wurde als veraltet und sicherheitsproblematisch angesehen.
    • Ein neuer Treiber für die Kühlungskontrolle wurde für Intel-Chips implementiert, der es ermöglicht, die Prozessorfrequenz bei Überhitzungsgefahr zu senken. Im Gegensatz zum bestehenden Mechanismus zur Aktivierung des TCC (Thermal Control Circuit) manipuliert der neue Treiber relative Werte, d.h. er kann die Frequenz zu Beginn eines signifikanten Temperaturanstiegs senken, ohne das Überschreiten eines kritischen Schwellenwerts abzuwarten.
  • Virtualisierung und Sicherheit
    • Der LSM-Modul zur Isolation von Anwendungen Landlock wurde integriert, der die Interaktion einer Prozessgruppe mit der Außenwelt einschränkt und mit Blick auf Mechanismen wie XNU Sandbox, FreeBSD Capsicum und OpenBSD Pledge/Unveil entwickelt wurde. Die Zugriffslogik wird durch ein BPF-Programm definiert, jedoch filtert Landlock im Gegensatz zu seccomp-bpf keine Systemaufrufe und deren Argumente, sondern erlaubt die Einschränkung der Nutzung von Kernelobjekten wie Dateihierarchien. Mit Landlock kann jeder Prozess, auch nicht privilegierte, sich zuverlässig isolieren und einen Umgehungsschutz bei der Entdeckung von Sicherheitsanfälligkeiten oder schädlichen Veränderungen in der Anwendung gewährleisten. Landlock ermöglicht es einem Prozess, gesicherte isolierte Umgebungen zu schaffen, die als zusätzliche Schicht über den bestehenden Systemzugriffsmechanismen implementiert sind. Beispielsweise kann ein Programm den Zugriff auf Dateien außerhalb des Arbeitsverzeichnisses verbieten.
    • Die Möglichkeit zur Randomisierung der Offsets im Kernel-Stack bei der Verarbeitung von Systemaufrufen wurde hinzugefügt, um Angriffe auf den Stack zu erschweren. Der Kern des vorgeschlagenen Schutzes besteht darin, bei jedem Systemaufruf einen zufälligen Stack-Offset auszuwählen, was die Bestimmung der Stack-Anordnung im Speicher selbst bei Erhalt von Informationen über Adressen erschwert, da sich bei jedem nächsten Systemaufruf die Basisadresse des Stacks ändert. Um die Randomisierung zu aktivieren, werden die Kernel-Parameter "randomize_kstack_offset=on/off" und die Einstellung CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT vorgeschlagen. Die Overheadkosten werden auf etwa 1 % Leistungsreduktion geschätzt.
    • Die Unterstützung für die Kernel-Kompilierung mit aktivierter CFI (Control Flow Integrity) im Clang-Compiler wurde hinzugefügt, die vor jedem indirekten Funktionsaufruf eine Überprüfung einfügt, um einige Formen von unbestimmtem Verhalten zu erkennen, die potenziell zu einer Störung der normalen Ausführungsreihenfolge (Control Flow) durch den Einsatz von Exploits führen könnten, die die in einem Speicher gespeicherten Funktionszeiger verändern. Um CFI zu aktivieren, wird der Parameter CONFIG_CFI_CLANG vorgeschlagen.
    • Im vom Kernel bereitgestellten Verschlüsselungs-Keyring umfasst der Mechanismus für vertrauenswürdige Schlüssel (Trusted Keys) jetzt nicht nur Schlüssel aus TPM-Modulen, sondern auch aus TEE-Umgebungen (Trusted Execution Environment). Zur Verwaltung der Quelle für vertrauenswürdige Schlüssel wurde der Bootparameter "trusted.source" vorgeschlagen. Darüber hinaus wurde die Möglichkeit hinzugefügt, vertrauenswürdige Schlüssel im ASN.1-Format zu verarbeiten.
    • Ein Parameter zur vorzeitigen Ladung der Liste der widerrufenen Zertifikate während des Kernel-Boots wurde hinzugefügt. Das Problem (CVE-2020-26541) mit der Nichteinhaltung der in der Blacklist des UEFI Secure Boot enthaltenen Zertifikate, die im Format EFI_CERT_X509_GUID bereitgestellt werden, wurde gelöst, wodurch es möglich war, ein System mit einem widerrufenen Zertifikat zu starten.
    • Die Unterstützung für die Überprüfung digitaler Signaturen ECDSA auf Basis elliptischer Kurven wurde in das Kernel-Kryptosubsystem aufgenommen.
    • Die Möglichkeit zur Überprüfung von SELinux-Richtlinien mithilfe des IMA-Subsystems (Integrity Measurement Architecture), das die Pflege einer Hash-Datenbank zur Überprüfung der Datenintegrität sicherstellt, wurde realisiert.
  • Netzwerksubsystem
    • Der Support für die WiMAX-Technologie wurde eingestellt, da sie in öffentlichen Netzwerken nicht mehr verwendet wird. Im Kernel bleibt der einzige Treiber, der mit WiMAX verwendet werden kann, der veraltete Intel 2400m-Treiber. Im Netzwerk-Manager NetworkManager wurde die Unterstützung für WiMAX im Jahr 2015 eingestellt. Heute ist WiMAX praktisch vollständig durch Technologien wie LTE, HSPA+ und Wi-Fi 802.11n ersetzt worden.
    • Ein Treiber für den Netzwerkadapter MANA (Microsoft Azure Network Adapter) wurde hinzugefügt.
    • Im Treiber ath11k wurde die Unterstützung für die drahtlosen Module Qualcomm QCN9074 mit Unterstützung für 802.11ax hinzugefügt.
    • Im Treiber iwlwifi wurde die Möglichkeit des passiven Scannens von Kanälen im 6-GHz-Bereich implementiert. Für die Ukraine wurde die Unterstützung für das Ein- und Ausschalten von IEEE 802.11ax basierend auf BIOS-Einstellungen hinzugefügt.
    • Die Optimierung des XDP (eXpress Data Path)-Subsystems wurde durchgeführt, die es ermöglicht, Netzwerkpakete vor deren Verarbeitung durch den Linux-Netzwerkstack zu manipulieren. Die durchgeführten Tests zeigen eine Leistungssteigerung von 4-8 % für XDP. Für Virtio-Geräte kann die Leistungssteigerung der Softwareverarbeitung von AF_XDP bis zu 33 % betragen.
    • Im ICMP wurde die Unterstützung für erweiterte PROBE-Nachrichten implementiert, die in RFC 8335 definiert sind.
    • Die Integration von MPTCP (MultiPath TCP) in den Kernel wurde fortgesetzt, ein Protokollerweiterung für die Organisation des TCP-Verbindungsbetriebs mit gleichzeitiger Paketauslieferung über mehrere Routen durch verschiedene Netzwerk-Schnittstellen, die unterschiedlichen zugeordnet sind. IP-AdressenIn der neuen Version wurde die Unterstützung für sockopt zur Festlegung typischer TCP-Optionen hinzugefügt. Die Möglichkeit, einzelne Unterströme (subflow) zurückzusetzen, wurde implementiert.
    • In netfilter wurde die Unterstützung für Ressourcenmanagement durch eine vereinheitlichte Hierarchie der cgroups v2 hinzugefügt.
    • In ethtool wurde eine Schnittstelle zur Abfrage der IEEE MIB-Statistiken mit Unterstützung für mlx5 und bnxt implementiert. Netzwerktreibern ist es erlaubt, beliebige Daten aus dem SFP EEPROM abzurufen, wobei nicht mit einer Kombination von Offset und Größe, sondern mit Speicherseiten gearbeitet wird.
  • Ausrüstung
    • Die erste Unterstützung für den ARM-Chip Apple M1 wurde implementiert, einschließlich Interrupt-Controller, Timer, UART, SMP, Funktionen zur Eingabe-/Ausgabe-Organisation und MMIO. Das Reverse Engineering des GPU ist noch nicht abgeschlossen, für die Ausgabe wird Unterstützung für das Framebuffer und die Konsole über den seriellen Anschluss bereitgestellt.
    • Die Bereinigung des Kernels von alten Treibern wurde fortgesetzt, die Treiber "gasket" (Google ASIC), "sysace", "umem" und mehrere alte Treiber für serielle Anschlüsse wurden entfernt.
    • Nach 13 Jahren im Staging-Zweig wurde der Treiber „comedi“ stabilisiert und in die Hauptversion übertragen, um die Unterstützung für Datenerfassungsgeräte zu gewährleisten.
    • Der Treiber GUD (Generic USB Display) wurde hinzugefügt, mit der Implementierung eines Basistreibers für Bildschirme und TV-Adapter, die über die USB-Schnittstelle angeschlossen werden. Der Treiber bietet DRM-Eigenschaften (Direct Rendering Manager) für die Drehung des Bildes, Helligkeitssteuerung, Zugriff auf EDID, Einstellung von Video-Modi und den Anschluss von TVs, die als Grundlage für die Erstellung von Treibern für spezifische Geräte verwendet werden können.
    • Der Soundtreiber „virtio“ wurde hinzugefügt, mit der Implementierung eines virtuellen Audiogeräts, das in Gastbetriebssystemen zur Audiowiedergabe und -aufnahme ohne Umleitung des Zugriffs auf die Soundkarte und ohne Emulation verwendet werden kann.
    • Im amdgpu-Treiber wurde die anfängliche Unterstützung für die GPU Aldebaran (gfx90a) hinzugefügt. Die anfängliche Unterstützung für die adaptive Synchronisierungstechnologie FreeSync über HDMI wurde aktiviert (zuvor war diese nur für DisplayPort verfügbar), die es ermöglicht, die Aktualisierungsrate der Anzeige zu korrigieren. Die Unterstützung für ASSR (Alternate Scrambler Seed Reset) wurde aktiviert. Ein ioctl wurde hinzugefügt, um Fähigkeiten im Zusammenhang mit der Video-Encoding- und -Decoding-Anforderung abzufragen. Hinzugefügt wurde der CONFIG_DRM_AMD_SECURE_DISPLAY-Modus zur Erkennung von Änderungen an Displays, die kritische Informationen anzeigen. Unterstützung für den Energiesparmodus ASPM wurde hinzugefügt.
    • Im i915-Treiber für Intel-Grafikkarten wurde die Unterstützung für die Chips Intel Alderlake-S aktiviert. Unterstützung für eDP MSO (Embedded DisplayPort Multi-SST Operation) wurde hinzugefügt.
    • Die Unterstützung für den Gaming-Controller Luna (Amazon) sowie für die Touchscreens Hycon HY46XX, ILITEK Lego Series und MStar MSG2638 wurde hinzugefügt.

Gleichzeitig hat die lateinamerikanische Free Software Foundation eine vollständig freie Version des Kernels 5.11 – Linux-libre 5.11-gnu – erstellt, die von Elementen der Firmware und Treiber, die nicht-freie Komponenten oder Codeabschnitte enthalten, gereinigt ist, deren Anwendungsbereich vom Hersteller eingeschränkt ist. In der neuen Version wurde der Treiber comedi gereinigt. Die Bereinigung der Treiber cyclades, isicom tty und i2400m wimax wurde eingestellt, die aus dem Kernel entfernt wurden. Der Code zur Bereinigung von Blobs in den Treibern und Subsystemen amdgpu, i915 csr, r8152 usb, mhi bus, x86 touchscreen und qualcomm arm64 wurde aktualisiert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4