Linux 5.11-Kernel-Release

Nach zweimonatiger Entwicklungszeit präsentierte Linus Torvalds die Veröffentlichung des Linux-Kernels 5.11. Zu den bemerkenswertesten Änderungen gehören: Unterstützung für Intel SGX-Enklaven, ein neuer Mechanismus zum Abfangen von Systemaufrufen, ein virtueller Hilfsbus, ein Verbot der Assemblierung von Modulen ohne MODULE_LICENSE(), ein schneller Filtermodus für Systemaufrufe in seccomp, Beendigung der Unterstützung für ia64-Architektur, Übertragung der WiMAX-Technologie auf den „Staging“-Zweig, die Möglichkeit, SCTP in UDP zu kapseln.

Die neue Version enthält 15480 Fixes von 1991 Entwicklern, die Patchgröße beträgt 72 MB (die Änderungen betrafen 12090 Dateien, 868025 Codezeilen wurden hinzugefügt, 261456 Zeilen wurden gelöscht). Ungefähr 46 % aller in 5.11 eingeführten Änderungen beziehen sich auf Gerätetreiber, ungefähr 16 % der Änderungen beziehen sich auf die Aktualisierung von Code, der für Hardwarearchitekturen spezifisch ist, 13 % beziehen sich auf den Netzwerkstapel, 3 % beziehen sich auf Dateisysteme und 4 % beziehen sich auf beziehen sich auf interne Kernel-Subsysteme.

Wichtigste Neuerungen:

  • Festplattensubsystem, E/A und Dateisysteme
    • Btrfs wurden mehrere Mount-Optionen hinzugefügt, die bei der Wiederherstellung von Daten aus einem beschädigten Dateisystem verwendet werden können: „rescue=ignorebadroots“ zum Mounten trotz der Beschädigung einiger Root-Bäume (Extent, UUID, Datenverschiebung, Gerät, Csum, freier Speicherplatz), „ „rescue=ignoredatacsums“ zum Deaktivieren der Prüfsummenprüfung für Daten und „rescue=all“, um gleichzeitig die Modi „ignorebadroots“, „ignoredatacsums“ und „nologreplay“ zu aktivieren. Die zuvor veraltete Mount-Option „inode_cache“ wurde eingestellt. Der Code wurde vorbereitet, um Unterstützung für Blöcke mit Metadaten und Daten zu implementieren, die kleiner als eine Seitengröße (PAGE_SIZE) sind, sowie Unterstützung für den Zonen-Speicherplatzzuweisungsmodus. Ungepufferte (Direct IO) Anfragen wurden in die iomap-Infrastruktur verschoben. Die Leistung einer Reihe von Vorgängen wurde optimiert; in einigen Fällen kann die Beschleunigung mehrere zehn Prozent erreichen.
    • XFS implementiert das Flag „needsrepair“, das die Notwendigkeit einer Reparatur signalisiert. Wenn dieses Flag gesetzt ist, kann das Dateisystem erst gemountet werden, wenn das Flag vom Dienstprogramm xfs_repair zurückgesetzt wird.
    • Ext4 bietet lediglich Fehlerbehebungen und Optimierungen sowie Code-Bereinigung.
    • Der erneute Export von über NFS gemounteten Dateisystemen ist zulässig (d. h. eine über NFS gemountete Partition kann jetzt über NFS exportiert und als Zwischencache verwendet werden).
    • Der Systemaufruf close_range(), der es einem Prozess ermöglicht, eine ganze Reihe geöffneter Dateideskriptoren auf einmal zu schließen, hat eine CLOSE_RANGE_CLOEXEC-Option hinzugefügt, um Deskriptoren im Close-on-Exec-Modus zu schließen.
    • Das F2FS-Dateisystem fügt neue ioctl()-Aufrufe hinzu, um dem Benutzerraum die Kontrolle darüber zu ermöglichen, welche Dateien in komprimierter Form gespeichert werden. Mount-Option „compress_mode=" hinzugefügt, um auszuwählen, ob der Komprimierungshandler auf der Kernelseite oder im Benutzerbereich platziert werden soll.
    • Bietet die Möglichkeit, Overlayfs durch nicht privilegierte Prozesse unter Verwendung eines separaten Benutzernamensraums bereitzustellen. Um die Einhaltung der Sicherheitsmodellimplementierung zu überprüfen, wurde ein vollständiges Code-Audit durchgeführt. Overlayfs bietet außerdem die Möglichkeit, Kopien von Dateisystem-Images zu verwenden, indem optional die UUID-Prüfung deaktiviert wird.
    • Das Ceph-Dateisystem hat Unterstützung für das msgr2.1-Protokoll hinzugefügt, das die Verwendung des AES-GCM-Algorithmus bei der Übertragung von Daten in verschlüsselter Form ermöglicht.
    • Das dm-multipath-Modul implementiert die Möglichkeit, die CPU-Affinität („IO-Affinität“) bei der Auswahl der Route für I/O-Anfragen zu berücksichtigen.
  • Speicher- und Systemdienste
    • Es wurde ein neuer Mechanismus zum Abfangen von Systemaufrufen hinzugefügt, der auf prctl() basiert und es Ihnen ermöglicht, beim Zugriff auf einen bestimmten Systemaufruf Ausnahmen aus dem Benutzerbereich zu generieren und dessen Ausführung zu emulieren. Diese Funktionalität ist in Wine und Proton erforderlich, um Windows-Systemaufrufe zu emulieren. Dies ist notwendig, um die Kompatibilität mit Spielen und Programmen sicherzustellen, die Systemaufrufe direkt unter Umgehung der Windows-API ausführen (z. B. zum Schutz vor unbefugter Nutzung).
    • Der Systemaufruf userfaultfd(), der für die Behandlung von Seitenfehlern (Zugriff auf nicht zugewiesene Speicherseiten) im Benutzerbereich entwickelt wurde, verfügt nun über die Möglichkeit, die Ausnahmebehandlung auf Kernel-Ebene zu deaktivieren, um die Ausnutzung bestimmter Schwachstellen zu erschweren.
    • Das BPF-Subsystem hat Unterstützung für die aufgabenlokale Speicherung hinzugefügt, die eine Datenbindung an einen bestimmten BPF-Handler ermöglicht.
    • Die Abrechnung des Speicherverbrauchs durch BPF-Programme wurde komplett neu gestaltet – anstelle von Memlock rlimit wurde ein cgroup-Controller vorgeschlagen, um die Speichernutzung in BPF-Objekten zu verwalten.
    • Der BTF-Mechanismus (BPF Type Format), der Informationen zur Typprüfung im BPF-Pseudocode bereitstellt, bietet Unterstützung für Kernelmodule.
    • Unterstützung für Shutdown()-, Renameat2()- und Unlinkat()-Systemaufrufe für die asynchrone E/A-Schnittstelle io_uring hinzugefügt. Beim Aufruf von io_uring_enter() wurde die Möglichkeit hinzugefügt, eine Zeitüberschreitung anzugeben (Sie können die Unterstützung für das Argument zur Angabe einer Zeitüberschreitung mithilfe des Flags IORING_FEAT_EXT_ARG überprüfen).
    • Die in Intel Itanium-Prozessoren verwendete ia64-Architektur wurde in die Kategorie „Waisen“ verschoben, was bedeutet, dass die Tests eingestellt wurden. Hewlett Packard Enterprise hat die Annahme von Bestellungen für neue Itanium-Geräte eingestellt, und Intel hat dies letztes Jahr getan.
    • Die Unterstützung für Systeme, die auf der MicroBlaze-Architektur basieren und keine Speicherverwaltungseinheit (MMU) enthalten, wurde eingestellt. Solche Systeme hat man im Alltag schon lange nicht mehr gesehen.
    • Für die MIPS-Architektur wurde Unterstützung für das Testen der Codeabdeckung mithilfe des Dienstprogramms gcov hinzugefügt.
    • Unterstützung für den virtuellen Hilfsbus für die Verbindung mit Multifunktionsgeräten hinzugefügt, die Funktionen kombinieren, die unterschiedliche Treiber erfordern (z. B. Netzwerkkarten mit Ethernet- und RDMA-Unterstützung). Der Bus kann verwendet werden, um einem Gerät einen primären und sekundären Treiber zuzuweisen, in Situationen, in denen die Verwendung des MFD-Subsystems (Multi-Function Devices) problematisch ist.
    • Für die RISC-V-Architektur wurde Unterstützung für das Speicherzuweisungssystem CMA (Contiguous Memory Allocator) hinzugefügt, das für die Zuweisung großer zusammenhängender Speicherbereiche mithilfe von Speicherseitenverschiebungstechniken optimiert ist. Für RISC-V sind außerdem Tools implementiert, um den Zugriff auf /dev/mem zu beschränken und die Interrupt-Verarbeitungszeit zu berücksichtigen.
    • Für 32-Bit-ARM-Systeme 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. Für 64-Bit-ARM wurde die KASan-Implementierung auf die Verwendung von MTE-Tags (MemTag) umgestellt.
    • epoll_pwait2()-Systemaufruf hinzugefügt, um Zeitüberschreitungen mit Nanosekundengenauigkeit zu ermöglichen (epoll_wait-Aufruf manipuliert Millisekunden).
    • Das Build-System zeigt jetzt einen Fehler an, wenn versucht wird, ladbare Kernel-Module zu erstellen, in denen die Code-Lizenz nicht mithilfe des Makros MODULE_LICENSE() definiert ist. Von nun an führt auch die Verwendung des EXPORT_SYMBOL()-Makros für statische Funktionen zu einem Build-Fehler.
    • Unterstützung für die Zuordnung von GEM-Objekten aus dem für I/O verwendeten Speicher hinzugefügt, wodurch die Arbeit mit dem Framebuffer auf einigen Architekturen beschleunigt werden konnte.
    • Kconfig hat die Unterstützung für Qt4 eingestellt (unter Beibehaltung der Unterstützung für Qt5, GTK und Ncurses).
  • Virtualisierung und Sicherheit
    • Dem Systemaufruf seccomp() wurde Unterstützung für einen Schnellreaktionsmodus hinzugefügt, mit dem Sie anhand der dem Prozess beigefügten Bitmap mit konstanter Aktion, die nicht ausgeführt werden muss, sehr schnell feststellen können, ob ein bestimmter Systemaufruf zulässig oder verboten ist ein BPF-Handler.
    • Integrierte Kernel-Komponenten zum Erstellen und Verwalten von Enklaven basierend auf der Intel SGX-Technologie (Software Guard eXtensions), die es Anwendungen ermöglicht, Code in isolierten verschlüsselten Speicherbereichen auszuführen, auf die der Rest des Systems nur begrenzten Zugriff hat.
    • Im Rahmen einer Initiative zur Beschränkung des Zugriffs vom Benutzerbereich auf das MSR (modellspezifisches Register) wird in das Register MSR_IA32_ENERGY_PERF_BIAS geschrieben, mit dem Sie den Energieeffizienzmodus des Prozessors („Normal“, „Leistung“, „Energiesparmodus“) ändern können. , ist verboten.
    • Die Möglichkeit, die Migration von Aufgaben mit hoher Priorität zwischen CPUs zu deaktivieren, wurde aus dem Kernel-RT-Zweig für Echtzeitsysteme verschoben.
    • Für ARM64-Systeme wurde die Möglichkeit hinzugefügt, MTE-Tags (MemTag, Memory Tagging Extension) für Signalhandler-Speicheradressen zu verwenden. Die Verwendung von MTE wird durch die Angabe der Option SA_EXPOSE_TAGBITS in sigaction() aktiviert und ermöglicht Ihnen die Überprüfung der korrekten Verwendung von Zeigern, um die Ausnutzung von Schwachstellen zu blockieren, die durch den Zugriff auf bereits freigegebene Speicherblöcke, Pufferüberläufe, Zugriffe vor der Initialisierung und Verwendung außerhalb des MTE verursacht werden aktuellen Kontext.
    • Der Parameter „DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING“ wurde hinzugefügt, der es dem dm-verity-Subsystem ermöglicht, Hash-Signaturen von Zertifikaten zu überprüfen, die im sekundären Schlüsselbund platziert sind. In der Praxis können Sie mit dem Setup nicht nur im Kernel integrierte Zertifikate überprüfen, sondern auch während des Betriebs geladene Zertifikate, wodurch Zertifikate aktualisiert werden können, ohne den gesamten Kernel aktualisieren zu müssen.
    • Linux im Benutzermodus hat Unterstützung für den Suspend-to-Idle-Modus hinzugefügt, der es Ihnen ermöglicht, die Umgebung einzufrieren und das SIGUSR1-Signal zum Aufwachen aus dem Ruhemodus zu verwenden.
    • Der virtio-mem-Mechanismus, der das Hot-Plug-In und Trennen von Speicher zu virtuellen Maschinen ermöglicht, hat Unterstützung für den Big Block Mode (BBM) hinzugefügt, der es ermöglicht, Speicher in Blöcken zu übertragen oder zu nehmen, die größer sind als die Größe des Kernel-Speichers Block, der zur Optimierung von VFIO in QEMU erforderlich ist.
    • Der Kernel-Implementierung von TLS wurde Unterstützung für die CHACHA20-POLY1305-Verschlüsselung hinzugefügt.
  • Netzwerk-Subsystem
    • Für 802.1Q (VLAN) wurde ein Mechanismus zur Verwaltung von Verbindungsfehlern (CFM, Connectivity Fault Management) implementiert, der es Ihnen ermöglicht, Fehler in Netzwerken mit virtuellen Brücken (Virtual Bridged Networks) zu identifizieren, zu überprüfen und zu isolieren. Beispielsweise kann CFM verwendet werden, um Probleme in Netzwerken zu isolieren, die sich über mehrere unabhängige Organisationen erstrecken, deren Mitarbeiter nur Zugriff auf ihre eigene Ausrüstung haben.
    • Unterstützung für die Kapselung von SCTP-Protokollpaketen in UDP-Paketen (RFC 6951) hinzugefügt, wodurch Sie SCTP in Netzwerken mit älteren Adressübersetzern verwenden können, die SCTP nicht direkt unterstützen, sowie SCTP auf Systemen implementieren können, die keinen direkten Zugriff auf die IP bieten Schicht.
    • Die Implementierung der WiMAX-Technologie wurde ins Staging verschoben und soll in Zukunft entfernt werden, wenn es keine Benutzer gibt, die WiMAX benötigen. WiMAX wird in öffentlichen Netzwerken nicht mehr verwendet und im Kernel ist der einzige Treiber, mit dem WiMAX verwendet werden kann, der veraltete Intel 2400m-Treiber. Die WiMAX-Unterstützung im NetworkManager-Netzwerkkonfigurator wurde 2015 eingestellt. Derzeit wird WiMax fast vollständig durch Technologien wie LTE, HSPA+ und Wi-Fi 802.11n ersetzt.
    • Es wurde daran gearbeitet, die Leistung der Verarbeitung eingehenden TCP-Verkehrs im Zerocopy-Modus zu optimieren, d. h. ohne zusätzliches Kopieren in neue Puffer. Bei mittelgroßem Datenverkehr, der Dutzende oder mehrere Hundert Kilobyte an Daten abdeckt, ist die Verwendung von Zerocopy anstelle von recvmsg() deutlich effektiver. Durch die implementierten Änderungen konnte beispielsweise die Effizienz der Verarbeitung von RPC-Verkehr mit 32-KB-Nachrichten bei Verwendung von Zerocopy um 60–70 % gesteigert werden.
    • Neue ioctl()-Aufrufe hinzugefügt, um Netzwerkbrücken zu erstellen, die mehrere PPP-Links umfassen. Die vorgeschlagene Funktion ermöglicht die Übertragung von Frames von einem Kanal zu einem anderen, beispielsweise von einer PPPoE- zu einer PPPoL2TP-Sitzung.
    • Integration in den Kern von MPTCP (MultiPath TCP), einer Erweiterung des TCP-Protokolls zur Organisation des Betriebs einer TCP-Verbindung mit der gleichzeitigen Zustellung von Paketen auf mehreren Routen über verschiedene Netzwerkschnittstellen, die unterschiedlichen IP-Adressen zugeordnet sind. Die neue Version führt Unterstützung für die Option ADD_ADDR ein, um verfügbare IP-Adressen anzukündigen, mit denen eine Verbindung hergestellt werden kann, wenn neue Flüsse zu einer vorhandenen MPTCP-Verbindung hinzugefügt werden.
    • Es wurde die Möglichkeit hinzugefügt, Aktionen zu konfigurieren, wenn das Verbindungsabfragebudget überschritten wird (Busy-Polling). Der bisher verfügbare SO_BUSY_POLL-Modus bedeutete den Wechsel zu Softirq, wenn das Budget erschöpft war. Für Anwendungen, die weiterhin Polling verwenden müssen, wird eine neue Option SO_PREFER_BUSY_POLL vorgeschlagen.
    • IPv6 implementiert die Unterstützung für die SRv6-Modi End.DT4 und End.DT6, die zum Erstellen von Mehrbenutzer-IPv4-L3-VPNs und VRF-Geräten (Virtual Routing and Forwarding) verwendet werden.
    • Netfilter vereinheitlichte die Implementierung von Mengenausdrücken, wodurch es möglich wurde, für jedes Element von Mengenlisten mehrere Ausdrücke anzugeben.
    • Dem 802.11-Wireless-Stack wurden APIs hinzugefügt, um SAR-Leistungsgrenzen sowie AE-PWE- und HE-MCS-Parameter zu konfigurieren. Der Intel iwlwifi-Treiber bietet Unterstützung für den 6-GHz-Bereich (Ultra High Band). Der Qualcomm Ath11k-Treiber hat Unterstützung für die FILS-Technologie (Fast Initial Link Setup, standardisiert als IEEE 802.11ai) hinzugefügt, die es Ihnen ermöglicht, Roaming-Verzögerungen während der Migration von einem Zugangspunkt zu einem anderen zu vermeiden.
  • Ausrüstung
    • Der amdgpu-Treiber bietet Unterstützung für AMD „Green Sardine“ APU (Ryzen 5000) und „Dimgrey Cavefish“ GPU (Navi 2) sowie anfängliche Unterstützung für AMD Van Gogh APU mit Zen 2-Kern und RDNA 2 GPU (Navi 2). Unterstützung für neue Renoir-APU-Kennungen hinzugefügt (basierend auf Zen 2-CPU und Vega-GPU).
    • Der i915-Treiber für Intel-Grafikkarten unterstützt die IS-Technologie (Integer Scaling) mit der Implementierung eines Filters zur Vergrößerung der Skalierung unter Berücksichtigung des Zustands benachbarter Pixel (Nearest-Neighbor-Interpolation), um die Farbe fehlender Pixel zu bestimmen. Die Unterstützung für diskrete Intel DG1-Karten wurde erweitert. Es wurde die Unterstützung der „Big Joiner“-Technologie implementiert, die seit Ice Lake / Gen11-Chips vorhanden ist und die Verwendung eines Transcoders zur Verarbeitung von zwei Streams ermöglicht, beispielsweise für die Ausgabe auf einem 8K-Bildschirm über einen DisplayPort. Es wurde ein Modus zum asynchronen Umschalten zwischen zwei Puffern im Videospeicher hinzugefügt (asynchroner Flip).
    • Der Nouveau-Treiber hat eine anfängliche Unterstützung für NVIDIA-GPUs hinzugefügt, die auf der Ampere-Mikroarchitektur (GA100, GeForce RTX 30xx) basieren und bisher auf Tools zur Steuerung von Videomodi beschränkt waren.
    • Unterstützung für das in LCD-Panels verwendete 3WIRE-Protokoll hinzugefügt. Unterstützung für Novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 und ABT Y030XX067A 3.0 Panels hinzugefügt. Unabhängig davon können wir die Unterstützung für das Panel der OnePlus 6- und 6T-Smartphones erwähnen, die es ermöglichte, das Laden eines unveränderten Kernels auf Geräte zu organisieren.
    • Unterstützung für Intels ersten diskreten USB4-Host-Controller, Maple Ridge, hinzugefügt.
    • Unterstützung für Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI und XCVR, Realtek RT715 und Qualcomm SM8250 Audio-Codecs hinzugefügt.
    • Unterstützung für ARM-Boards, Geräte und Plattformen hinzugefügt: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, ​​​​Mikrotik basierend auf Marvell Prestera 98DX3236, Server mit Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, „Trogdor“ Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Integrierte Unterstützung für die Ouya-Spielekonsole basierend auf NVIDIA Tegra 3.

Gleichzeitig hat die Latin American Free Software Foundation eine Version des völlig kostenlosen 5.11-Kernels erstellt – Linux-libre 5.11-gnu, frei von Firmware- und Treiberelementen, die unfreie Komponenten oder Codeabschnitte enthalten, deren Umfang begrenzt ist vom Hersteller. Die neue Version bereinigt Treiber für qat_4xxx (Krypto), lt9611uxcm (DSI/HDMI-Brücke), ccs/smia++ (Sensor), ath11k_pci, NXP-Audio-Transceiver und MHI-PCI-Controller. Aktualisierter Blob-Reinigungscode in den Treibern und Subsystemen amdgpu, btqca, btrtl, btusb, i915 csr. Neue Blobs in m3 rproc, idt82p33 ptp clock und qualcomm arm64 deaktiviert.

Source: opennet.ru

Kommentar hinzufügen