Veröffentlichung des Linux-Kernels 5.13

Nach zwei Monaten Entwicklung hat Linus Torvalds die Version 5.13 des Linux-Kernels veröffentlicht. Zu den auffälligsten Änderungen gehören: das Dateisystem EROFS, erste Unterstützung für Apple M1-Chips, der cgroup-Controller „misc“, die Einstellung der Unterstützung von /dev/kmem, Unterstützung neuer Intel- und AMD-GPUs, die Möglichkeit, Kernel-Funktionen direkt aus BPF-Programmen aufzurufen, die Zufälligkeit des Kernel-Stacks für jeden Systemaufruf, die Möglichkeit der Kompilierung mit Clang und CFI-Schutz (Control Flow Integrity), das LSM-Modul Landlock für zusätzliche Prozessbeschränkungen sowie ein virtuelles Audio-Gerä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 meisten in der Geschichte), die Patch-Größe beträgt 60 MB (Änderungen betrafen 12996 Dateien, es wurden 794705 Codezeilen hinzugefügt und 399590 entfernt). Ungefähr 47 % aller Änderungen in 5.13 betreffen Gerätetreiber, etwa 14 % beziehen sich auf die Aktualisierung von architekturspezifischem Code, 13 % sind mit dem Netzwerk-Stack verbunden, 5 % mit Dateisystemen und 4 % mit internen Kernsubsystemen.

Hauptneuheiten:

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
    • Unterstützung des EROFS-Dateisystems (Enhanced Read-Only File System), das von Huawei für die Verwendung auf schreibgeschützten Partitionen vorgeschlagen wurde, wurde hinzugefügt. Das neue Dateisystem unterstützt die Speicherung von Daten in komprimierter Form und zeigt im Vergleich zu Ext4 eine ähnliche Leistung bei sequentiellen Lesevorgängen, übertrifft jedoch Ext4 bei zufälligem Datenzugriff erheblich. Beispielsweise übertraf das EROFS-Dateisystem bei einer Komprimierungsrate von 4 in Tests mit Server einer Festplatte Ext4 bei zufälligen Leseoperationen um mehr als das Sechsfache, während es auf einem Android-Smartphone mit Flash fast dreimal schneller war. Wie bei anderen schreibgeschützten Dateisystemen wurde die Struktur von EROFS erheblich vereinfacht, indem bei der Implementierung einige Bereiche der Metadaten, wie die Bitmap freier Blöcke, weggelassen wurden.
    • Für das SMB3-Dateisystem wurde die Option zum Einhängen "rasize" implementiert, mit der die Größe des vorausgreifenden Lesevorgangs (readahead) festgelegt werden kann, um die Leistung bestimmter Lastarten zu steigern.
    • Im Dateisystem ext4 ist die Überschreibung von Katalogelementen beim Löschen von Dateien gewährleistet. In ext4 ist auch die gleichzeitige Verwendung des Modus ohne Berücksichtigung der Groß- und Kleinschreibung sowie von Verschlüsselung erlaubt.
    • Im Dateisystem exFAT wurde die Unterstützung des ioctl-Befehls FITRIM (discard) hinzugefügt, um den Speicher über ungenutzte Blöcke im Dateisystem zu informieren.
    • Im Dateisystem XFS wurde die Möglichkeit hinzugefügt, Platz aus der letzten Verteilungsguppe im Dateisystem zu entziehen, was den ersten Schritt zur Implementierung der Funktion zur Verkleinerung bestehender Partitionen im Dateisystem XFS darstellt.
    • Ein neuer Systemaufruf quotactl_path wurde hinzugefügt, der sich von quotactl unterscheidet, indem er die Verwaltung von Quoten nicht über eine spezielle Gerätedatei, sondern durch Angabe des Pfades zu dem Punkt ermöglicht, an dem das Dateisystem eingehängt ist.
    • Im Mechanismus fanotify wurden die Möglichkeiten für nicht privilegierte Benutzer erweitert. Beispielsweise können jetzt, analog zu inotify, ohne SYS_CAP_ADMIN-Rechte die Ereignisse OPEN, ACCESS, MODIFY und CLOSE für Dateien und Verzeichnisse verfolgt werden.
  • Speicher und Systemdienste
    • Ein neuer cgroup-Controller – „Misc“ (CONFIG_CGROUP_MISC) – wurde hinzugefügt, um die Einschränkung und Überwachung von skalaren Ressourcen zu ermöglichen, die mithilfe eines einfachen Zählers verwaltet und durch Maximalwerte begrenzt werden können. Als Anwendungsbeispiel für den neuen cgroup-Controller wird die Verwaltung von Adressraum-IDs genannt, die im Mechanismus AMD SEV (Secure Encrypted Virtualization) verwendet werden.
    • Im Interface für asynchrones Ein-/Ausgabe io_uring wurde der „Multi-Shot“-Modus für POLL-Anfragen implementiert, bei dem POLL nach der Ereigniserzeugung nicht entfernt, sondern aktiv bleibt und mehrere Ereignisse generieren kann.
    • Code aus dem Realtime-Zweig des Kernels wurde übertragen, um die Verarbeitung von softwaregenerierten Interrupts in Kernel-Threads zu ermöglichen, wodurch diese von höherpriorisierten Prozessen verdrängt werden können.
    • Eine interne Bibliothek netfs wurde hinzugefügt, in die typische Funktionen ausgegliedert wurden, die in Netzwerdateisystemen verwendet werden.
    • 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 die Ausführung des Kernels im Speicher (execute-in-place, Ausführung vom Speichermedium ohne Kopie in den RAM) realisiert.
    • In BPF-Trace-Programmen gibt es nun die Möglichkeit, lokales, auf die Aufgabe bezogenes Datenspeicher (task-local storage) zu verwenden, was die Leistung durch die Bindung von Daten an einen bestimmten BPF-Handler erhöht.
    • Ein neuer Mechanismus für den direkten Aufruf von Kernel-Funktionen aus BPF-Programmen wurde implementiert, der bereits in der Umsetzung von TCP-Überlastalgorithmen verwendet wird. Zum Schutz müssen die aufgerufenen Funktionen explizit auf einer Whitelist definiert sein.
    • In das ftrace-Funktionsverfolgungssystem wurde die Option func-no-repeats eingefügt, die es ermöglicht, wiederholte aufeinanderfolgende Funktionsaufrufe als Zähler darzustellen.
    • Im Systemaufruf userfaultfd(), der zur Behandlung von Seitenfehlern (Zugriff auf nicht zugewiesene Speicherseiten) im Benutzerspeicher gedacht ist, wurde die Möglichkeit zur Steuerung von teilweisen Fehlschlägen hinzugefügt, bei denen die Speicherseite vorhanden ist, aber kein Eintrag in der Seitentabelle besteht.
    • Die Unterstützung für die spezielle Datei /dev/kmem wurde eingestellt, mit deren Hilfe auf den gesamten Adressraum des Kernels zugegriffen werden konnte. Diese Datei gilt als veraltet und verursacht Sicherheitsprobleme.
    • Für Intel-Chips wurde ein neuer Treiber zur Kühlungskontrolle implementiert, der die Prozessorfrequenz bei Überhitzungsgefahr senken kann. Im Gegensatz zum bestehenden Mechanismus der Aktivierung des TCC (Thermal Control Circuit) manipuliert der neue Treiber relative Werte, d.h. er kann die Frequenz bereits zu Beginn eines signifikanten Temperaturanstiegs senken, ohne darauf zu warten, dass ein kritischer Schwellenwert überschritten wird.
  • Virtualisierung und Sicherheit
    • Im System ist das LSM-Modul zur Anwendungsisolierung Landlock integriert, das die Interaktion einer Prozessgruppe mit der Außenwelt einschränkt. Es wurde unter Berücksichtigung von Isolierungsmechanismen wie XNU Sandbox, FreeBSD Capsicum und OpenBSD Pledge/Unveil entwickelt. Die Zugriffskontrolle wird durch ein BPF-Programm bestimmt. Im Gegensatz zu seccomp-bpf filtert Landlock jedoch keine Systemaufrufe und deren Argumente, sondern erlaubt die Einschränkung der Nutzung von Kernelobjekten, wie z.B. Dateihierarchien. Mit Landlock kann jeder Prozess, auch ohne besondere Berechtigungen, sich zuverlässig isolieren und die Umgehung dieser Isolation verhindern, falls Schwachstellen oder schädliche Änderungen innerhalb der Anwendung erkannt werden. Landlock ermöglicht es dem Prozess, geschützte, isolierte Umgebungen zu schaffen, die als zusätzliche Schicht über den vorhandenen systeminternen Zugriffskontrollmechanismen implementiert sind. Beispielsweise kann ein Programm den Zugriff auf Dateien außerhalb des Arbeitsverzeichnisses verbieten.
    • Die Möglichkeit zur Randomisierung der Stacks verschiebungen 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 eine zufällige Stack-Verschiebung auszuwählen, was die Bestimmung der Stack-Layout im Speicher erschwert, selbst wenn Informationen über Adressen vorliegen, da sich bei jedem folgenden Systemaufruf die Basisadresse des Stacks ändert. Um die Randomisierung zu aktivieren, wurden die Kernel-Befehlszeilenparameter „randomize_kstack_offset=on/off“ und die Einstellung CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT vorgeschlagen. Die Overheadkosten werden auf etwa 1 % Leistungsverlust geschätzt.
    • Die Unterstützung für die Kernel-Kompilierung mit aktivierter CFI (Control Flow Integrity) im Clang-Compiler wurde hinzugefügt. Dies fügt vor jedem indirekten Funktionsaufruf eine Überprüfung hinzu, um bestimmte Formen von unbestimmtem Verhalten zu identifizieren, die potenziell zu einer Störung des normalen Kontrollflusses führen können, verursacht durch Exploits, die die in den Speicher geschriebenen Funktionszeiger ändern. Um CFI zu aktivieren, wurde der Parameter CONFIG_CFI_CLANG vorgeschlagen.
    • Im bereitgestellten Kernel-Service für die Speicherung von Verschlüsselungsschlüsseln (Key Ring) umfasst der Trusted Keys-Mechanismus nun nicht nur Schlüssel aus TPM-Modulen, sondern auch aus TEE-Umgebungen (Trusted Execution Environment). Zur Verwaltung der Quelle der vertrauenswürdigen 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 Ladezeitliste der widerrufenen Zertifikate während des Kernelstarts wurde hinzugefügt. Ein Problem (CVE-2020-26541) wurde behoben, bei dem widerrufene Zertifikate im UEFI Secure Boot-Schwarzenlisten ignoriert wurden, die im EFI_CERT_X509_GUID-Format geliefert wurden, wodurch es möglich war, das System mit einem widerrufenen Zertifikat zu starten.
    • Die Unterstützung zur Überprüfung von digitalen ECDSA-Signaturen auf der Basis elliptischer Kurven wurde in das Krypto-Subsystem des Kernels integriert.
    • Die Möglichkeit zur Verifizierung von SELinux-Richtlinien mittels des IMA (Integrity Measurement Architecture)-Subsystems wurde implementiert, das die Aufrechterhaltung einer Hash-Datenbank zur Überprüfung der Datenintegrität gewährleistet.
  • Netzwerksubsystem
    • Die Unterstützung der WiMAX-Technologie wurde eingestellt, da sie in öffentlichen Netzwerken nicht mehr verwendet wird. Der einzige Treiber, der noch mit WiMAX eingesetzt werden kann, ist der veraltete Intel 2400m. Im Netzwerk-Konfigurator NetworkManager wurde die Unterstützung für WiMAX 2015 eingestellt. WiMax wurde mittlerweile nahezu vollständig durch Technologien wie LTE, HSPA+ und Wi-Fi 802.11n ersetzt.
    • 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 zum Aktivieren/Deaktivieren von IEEE 802.11ax basierend auf BIOS-Einstellungen hinzugefügt.
    • Die Optimierung des XDP (eXpress Data Path)-Subsystems, das die Manipulation von Netzwerkpaketen vor deren Verarbeitung durch den Linux-Kernel-Netzwerkstack ermöglicht, wurde durchgeführt. Die durchgeführten Tests zeigen eine Leistungssteigerung von 4-8% für XDP. Bei Virtio-Geräten kann die Leistungssteigerung der Software-Verarbeitung mit AF_XDP bis zu 33% betragen.
    • Im ICMP wurde die Unterstützung für erweiterte PROBE-Nachrichten, die in RFC 8335 definiert sind, implementiert.
    • Die Integration in den MPTCP (MultiPath TCP)-Kernel für die Erweiterung des TCP-Protokolls geht weiter, um die gleichzeitige Paketübertragung über mehrere Routen durch verschiedene Netzwerkschnittstellen zu ermöglichen. IP-Adressen. In der neuen Version wurde die Unterstützung für sockopt zur Festlegung von Standardoptionen für TCP hinzugefügt. Es wurde die Möglichkeit implementiert, einzelne Subflows zurückzusetzen.
    • Im netfilter wurde die Unterstützung für das Ressourcenmanagement mit einer einheitlichen Hierarchie von cgroups v2 hinzugefügt.
    • In ethtool wurde eine Schnittstelle zum Lesen der IEEE MIB-Statistiken mit Unterstützung für mlx5 und bnxt implementiert. Netzwerk-Treiber dürfen beliebige Daten aus dem SFP EEPROM extrahieren und dabei die Speicherseiten anstelle von Offset+Größe manipulieren.
  • Ausrüstung
    • Die erste Unterstützung für den ARM-Chip Apple M1 wurde implementiert, einschließlich des Interrupt-Controllers, Timers, UART, SMP und Funktionen zur Organisation von E/A und MMIO. Das Reverse Engineering der GPU ist noch nicht abgeschlossen, es wurde jedoch Unterstützung für Framebuffer und Konsole über den seriellen Port bereitgestellt.
    • Die Bereinigung des Kernels von alten Treibern wird fortgesetzt; die Treiber 'gasket' (Google ASIC), 'sysace', 'umem' und mehrere alte Treiber für serielle Ports wurden entfernt.
    • Nach 13 Jahren im staging-Bereich wurde der Treiber 'comedi' zur Unterstützung von Datenerfassungsgeräten stabilisiert und in den Hauptzweig überführt.
    • Ein GUD-Treiber (Generic USB Display) wurde hinzugefügt, der einen grundlegenden Treiber für Bildschirme und TV-Adapter implementiert, die über USB angeschlossen werden. Der Treiber bietet DRM-Funktionen (Direct Rendering Manager) für die Drehung des Bildes, die Helligkeitssteuerung, den Zugriff auf EDID, die Konfiguration von Video-Modi und die Verbindung von TVs, die als Grundlage für die Entwicklung spezifischer Gerätetreiber verwendet werden können.
    • Ein «virtio» Audio-Treiber wurde hinzugefügt, der ein virtuelles Audiogerät implementiert, das in Gastbetriebssystemen für die Audioausgabe und -aufnahme verwendet werden kann, ohne Zugriff auf die Soundkarte zu erfordern und ohne Emulation.
    • Der amdgpu-Treiber hat erste Unterstützung für die GPU Aldebaran (gfx90a) erhalten. Die anfängliche Unterstützung für die FreeSync-Technologie zur adaptiven Synchronisation über HDMI wurde eingeführt (zuvor nur für DisplayPort verfügbar), was eine Anpassung der Bildwiederholfrequenz ermöglicht. Unterstützung für ASSR (Alternate Scrambler Seed Reset) wurde hinzugefügt. Ein ioctl wurde hinzugefügt, um die Möglichkeiten zum Codieren und Decodieren von Videos abzufragen. Der CONFIG_DRM_AMD_SECURE_DISPLAY-Modus wurde implementiert, um Änderungen an Bildschirmen zu erkennen, die kritische Informationen anzeigen. Zudem wurde die Unterstützung für den Energiesparmechanismus ASPM hinzugefügt.
    • Im i915-Treiber für Intel-Grafikkarten wurde die Unterstützung für Intel Alderlake-S Chips aktiviert. Des Weiteren wurde eDP MSO (Embedded DisplayPort Multi-SST Operation) unterstützt.
    • 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 Freie Software Stiftung eine vollständig freie Kernversion 5.11 – Linux-libre 5.11-gnu – veröffentlicht, die von Firmware- und Treiberelementen bereinigt wurde, die nichtfreie Komponenten oder Codeabschnitte enthalten, deren Nutzung durch den Hersteller eingeschränkt ist. In dieser neuen Version wurde der Treiber comedi bereinigt. Die Bereinigung der Treiber cyclades, isicom tty und i2400m wimax wurde eingestellt, da sie 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

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster