Veröffentlichung des Linux-Kernels 5.11

Nach zwei Monaten Entwicklung stellte Linus Torvalds die Veröffentlichung des Linux-Kernels 5.11 vor. Zu den bemerkenswertesten Änderungen gehören: Unterstützung für Intel SGX-Enklaven, ein neuer Mechanismus zum Abfangen von Systemaufrufen, der virtuelle Bus auxiliary, das Verbot der Module ohne MODULE_LICENSE(), der schnelle Filtermodus für Systemaufrufe in seccomp, die Einstellung der Unterstützung für die Architektur ia64, die Übertragung der WiMAX-Technologie in den «staging»-Zweig sowie die Möglichkeit zur Einkapselung von SCTP in UDP.

In die neue Version wurden 15480 Korrekturen von 1991 Entwicklern aufgenommen, die Patchgröße beträgt 72 MB (die Änderungen betrafen 12090 Dateien, 868025 Codezeilen wurden hinzugefügt, 261456 Zeilen wurden gelöscht). Etwa 46 % aller in 5.11 vorgestellten Änderungen stehen in Zusammenhang mit Gerätetreibern, ungefähr 16 % der Änderungen beziehen sich auf die Aktualisierung von hardwarearchitekturspezifischem Code, 13 % betreffen den Netzwerk-Stack, 3 % die Dateisysteme und 4 % interne Kernsubsysteme.

Hauptneuheiten:

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
    • In Btrfs wurden mehrere Mount-Optionen hinzugefügt, die beim Wiederherstellen von Daten von einem beschädigten Dateisystem verwendet werden können: «rescue=ignorebadroots» zum Mounten trotz beschädigter Wurzelbäume (Extent, UUID, Datenbewegung, Gerät, Prüfzsumme, freier Speicher), «rescue=ignoredatacsums» zum Deaktivieren der Prüfzsummentwicklung für Daten und «rescue=all» zur gleichzeitigen Aktivierung der Modi „ignorebadroots“, „ignoredatacsums“ und „nologreplay“. Die Unterstützung der Mount-Option «inode_cache», die zuvor als veraltet erklärt wurde, wurde eingestellt. Der Code wurde für die Implementierung von Unterstützung für Blöcke mit Metadaten und Daten, deren Größe kleiner als die Seite (PAGE_SIZE) ist, sowie Unterstützung für den Modus der zonierten Speicherzuteilung vorbereitet. Unbuffered (Direct IO) Anfragen wurden auf die iomap-Infrastruktur umgestellt. Die Leistung verschiedener Operationen wurde optimiert, in einigen Fällen kann die Beschleunigung mehrere Prozent betragen.
    • In XFS wurde das Flag «needsrepair» implementiert, das auf die Notwendigkeit einer Wiederherstellung hinweist. Wenn dieses Flag gesetzt ist, kann das Dateisystem nicht gemountet werden, bis das Flag mit dem Dienstprogramm xfs_repair zurückgesetzt wird.
    • In Ext4 wurden nur Fehlerkorrekturen und Optimierungen angeboten sowie der Code gereinigt.
    • Die erneute Exportierung von über NFS gemounteten Dateisystemen wurde erlaubt (d.h. der über NFS gemountete Partition kann jetzt über NFS exportiert und als Zwischenablage verwendet werden).
    • In den system call close_range() wurde die Option CLOSE_RANGE_CLOEXEC hinzugefügt, die es Prozessen ermöglicht, eine gesamte Reihe von geöffneten Dateideskriptoren im close-on-exec-Modus auf einmal zu schließen.
    • In das F2FS-Dateisystem wurden neue ioctl()-Aufrufe hinzugefügt, mit denen Benutzer im Benutzermodus steuern können, welche Dateien komprimiert gespeichert werden. Es wurde eine Montageoption "compress_mode=" hinzugefügt, um den Ort des Kompressor-Handlers entweder im Kernel oder im Benutzermodus auszuwählen.
    • Es wurde die Möglichkeit hinzugefügt, Overlayfs von unprivilegierten Prozessen zu mounten, indem ein separater Benutzer-Namensraum (user namespace) verwendet wird. Um die Übereinstimmung mit dem Sicherheitsmodell zu überprüfen, wurde eine vollständige Codeüberprüfung durchgeführt. In Overlayfs wurde auch die Möglichkeit hinzugefügt, mit geklonten Abbilden von Dateisystemen durch das optionale Deaktivieren der UUID-Prüfung zu arbeiten.
    • Im Ceph-Dateisystem wurde die Unterstützung für das msgr2.1-Protokoll hinzugefügt, das es ermöglicht, den AES-GCM-Algorithmus für die Übertragung von Daten in verschlüsselter Form anzuwenden.
    • Im dm-multipath-Modul wurde die Möglichkeit implementiert, die CPU-Bindung ("IO affinity") bei der Auswahl des Routen für Ein-/Ausgabe-Anfragen zu berücksichtigen.
  • Speicher und Systemdienste
    • Ein neuer Mechanismus zum Abfangen von Systemaufrufen wurde hinzugefügt, der auf prctl() basiert und es dem Benutzermodus ermöglicht, Ausnahmen beim Zugriff auf bestimmte Systemaufrufe zu generieren und deren Ausführung zu emulieren. Diese Funktionalität wird in Wine und Proton benötigt, um Systemaufrufe von Windows zu emulieren, was notwendig ist, um die Kompatibilität mit Spielen und Programmen zu gewährleisten, die Systemaufrufe direkt umgehen (zum Beispiel zum Schutz vor unbefugter Nutzung).
    • In den Systemaufruf userfaultfd(), der zum Umgang mit Seitenfehlern (Zugriff auf nicht zugewiesene Seiten im Speicher) im Benutzermodus dient, wurde die Möglichkeit hinzugefügt, die Verarbeitung von Ausnahmen, die auf Kernel-Ebene auftreten, zu deaktivieren, um die Ausnutzung bestimmter Schwachstellen zu erschweren.
    • In das BPF-Subsystem wurde die Unterstützung für task-lokale Datenspeicherung hinzugefügt, die es ermöglicht, Daten an einen bestimmten BPF-Handler zu binden.
    • Die Verwaltung des Speicherkonsums für BPF-Programme wurde vollständig überarbeitet – anstelle von memlock rlimit wird nun ein cgroup-Controller zur Verwaltung des Speichers in BPF-Objekten vorgeschlagen.
    • Im BTF-Mechanismus (BPF Type Format), der Informationen zur Typüberprüfung im BPF-Pseudocode bereitstellt, wurde die Unterstützung für Kernelmodule implementiert.
    • Im asynchronen E/A-Interface io_uring wurde die Unterstützung für die Systemaufrufe shutdown(), renameat2() und unlinkat() hinzugefügt. Bei der Aufruf von io_uring_enter() wurde die Möglichkeit hinzugefügt, eine Zeitüberschreitung anzugeben (die Unterstützung des Arguments zur Angabe einer Zeitüberschreitung kann mit dem Flag IORING_FEAT_EXT_ARG überprüft werden).
    • Die ia64-Architektur, die in Intel Itanium-Prozessoren verwendet wurde, wurde in die Kategorie der nicht mehr unterstützten Systeme („orphaned“) eingestuft, was das Ende der Testphase bedeutet. Hewlett Packard Enterprise hat die Annahme von Bestellungen für neue Itanium-Hardware eingestellt, und Intel hat dies bereits im vergangenen Jahr getan.
    • Die Unterstützung für Systeme auf Basis der MicroBlaze-Architektur, die nicht mit einem Speicherverwaltungseinheit (MMU) ausgestattet sind, wurde eingestellt. Solche Systeme sind seit langem nicht mehr im Gebrauch.
    • Für die MIPS-Architektur wurde die Unterstützung für die Codeabdeckungstestung (Coverage Testing) mit dem Tool gcov hinzugefügt.
    • Die Unterstützung für den zusätzlichen virtuellen Bus wurde hinzugefügt, um mit Multifunktionsgeräten zu interagieren, die Funktionen erfordern, die unterschiedliche Treiber benötigen (z. B. Netzwerkkarten mit Unterstützung für Ethernet und RDMA). Der Bus kann verwendet werden, um einem Gerät einen primären und einen sekundären Treiber zuzuweisen, wenn die Verwendung des MFD-Subsystems (Multi-Function Devices) problematisch ist.
    • Für die RISC-V-Architektur wurde die Unterstützung für das Contiguous Memory Allocator (CMA) hinzugefügt, das optimiert ist, um große zusammenhängende Speicherbereiche mit der Technik des Seitenverschiebens zuzuweisen. Außerdem wurden für RISC-V Mittel zur Zugriffskontrolle auf /dev/mem und zur Erfassung der Interruptverarbeitungszeit implementiert.
    • Für 32-Bit-ARM-Systeme wurde die Unterstützung für das Debugging-Tool KASan (Kernel Address Sanitizer) hinzugefügt, das hilft, Fehler im Umgang mit dem Speicher zu erkennen. Für 64-Bit-ARM wurde die Implementierung von KASan auf die Verwendung von MTE-Tags (MemTag) umgestellt.
    • Der Systemaufruf epoll_pwait2() wurde hinzugefügt, der die Verwendung von Zeitüberschreitungen mit Nanosekunden-Genauigkeit ermöglicht (der Aufruf von epoll_wait arbeitet mit Millisekunden).
    • Im Build-System wird ein Fehler ausgegeben, wenn versucht wird, Module des Kernels zu compilieren, in denen durch das Makro MODULE_LICENSE() keine Lizenz für den Code definiert ist. Ein Fehler während des Builds wird jetzt auch durch die Verwendung des Makros EXPORT_SYMBOL() für statische Funktionen ausgelöst.
    • Die Unterstützung für das Mapping von GEM-Objekten aus dem für Ein-/Ausgabe verwendeten Speicher wurde hinzugefügt, was die Arbeit mit dem Framebuffer auf einigen Architekturen beschleunigt hat.
    • Die Unterstützung für Qt4 wurde in Kconfig eingestellt (Qt5, GTK und Ncurses bleiben unterstützt).
  • Virtualisierung und Sicherheit
    • Die Systemaufruf seccomp() unterstützt jetzt den Modus für schnelles Reagieren, der es ermöglicht, sehr schnell zu bestimmen, ob ein bestimmter Systemaufruf basierend auf der an den Prozess angehängten Berechtigungstabelle (constant-action bitmap) erlaubt oder verboten ist, ohne einen BPF-Handler auszuführen.
    • Die Kernkomponenten für die Erstellung und Verwaltung von Enklaven auf Basis der Intel SGX-Technologie (Software Guard eXtensions) wurden integriert, die es Anwendungen ermöglicht, Code in isolierten, verschlüsselten Speicherbereichen auszuführen, auf die der restliche Systemzugang beschränkt ist.
    • Im Rahmen der Initiative zur Einschränkung des Zugriffs vom Benutzermodus auf die MSR-Register (model-specific register) wurde das Schreiben in das Register MSR_IA32_ENERGY_PERF_BIAS verboten, das es ermöglicht, den Energieeffizienzmodus des Prozessors zu ändern ("normal", "performance", "powersave").
    • Die Möglichkeit, die Migration hochpriorisierter Aufgaben zwischen CPUs abzuschalten, wurde aus dem kernel-rt Branch für Echtzeitsysteme übernommen.
    • Für ARM64-Systeme wurde die Möglichkeit hinzugefügt, MTE-Tags (MemTag, Memory Tagging Extension) für Adressen von Signalhandlern zu verwenden. Die Verwendung von MTE wird durch die Angabe der Option SA_EXPOSE_TAGBITS in sigaction() aktiviert und ermöglicht die Überprüfung der Korrektheit der Verwendung von Zeigern, um die Ausnutzung von Schwachstellen zu verhindern, die durch den Zugriff auf bereits freigegebene Speicherblöcke, Pufferüberläufe, Zugriffe vor der Initialisierung und Verwendung außerhalb des aktuellen Kontexts verursacht werden.
    • Der Parameter „DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING“ wurde hinzugefügt, der es dem dm-verity-Subsystem ermöglicht, die Hash-Signaturen von Zertifikaten zu überprüfen, die im sekundären Schlüsselring (keyring) gespeichert sind. In der Praxis ermöglicht diese Einstellung die Verifizierung nicht nur von im Kernel eingebetteten Zertifikaten, sondern auch von Zertifikaten, die während des Betriebs geladen werden, was die Aktualisierung von Zertifikaten ohne ein vollständiges Kernel-Update ermöglicht.
    • Im User-mode Linux wurde die Unterstützung für den Suspend-to-Idle-Modus hinzugefügt, der es ermöglicht, die Umgebung einzufrieren und das Signal SIGUSR1 zum Aufwecken aus dem Schlafmodus zu verwenden.
    • Im virtio-mem-Mechanismus, der das Hot-Plugging und -Entfernen von Speicher für virtuelle Maschinen ermöglicht, wurde die Unterstützung für den Big Block Mode (BBM) hinzugefügt, der es ermöglicht, Speicher in Blöcken zu übertragen oder abzuziehen, die größer als die Blockgröße des Kernspeichers sind, was für die Optimierung von VFIO in QEMU notwendig ist.
    • In die Kernel-basierte Implementierung von TLS wurde die Unterstützung für den CHACHA20-POLY1305-Algorithmus integriert.
  • Netzwerksubsystem
    • Für 802.1Q (VLAN) wurde ein Mechanismus zur Verwaltung von Verbindungsfehlern (CFM, Connectivity Fault Management) implementiert, der es ermöglicht, Fehler in Netzwerken mit virtuellen Brücken zu erkennen, zu verifizieren und zu isolieren. Zum Beispiel kann CFM verwendet werden, um Probleme in Netzwerken zu lokalisieren, die mehrere unabhängige Organisationen betreffen, deren Mitarbeiter nur Zugang zu ihrer eigenen Hardware haben.
    • Die Unterstützung für das Encapsulieren von SCTP-Paketen in UDP-Paketen (RFC 6951) wurde hinzugefügt, was die Verwendung von SCTP in Netzwerken mit älteren Adressübersetzern ermöglicht, die SCTP nicht direkt unterstützen, sowie die Implementierung von SCTP auf Systemen, die keinen direkten Zugang zur IP-Ebene bieten.
    • Die Umsetzung der WiMAX-Technologie wurde in den Staging-Bereich verschoben und ist für die zukünftige Entfernung vorgesehen, sofern keine Benutzer gefunden werden, die WiMAX benötigen. WiMAX wird in öffentlichen Netzwerken nicht mehr verwendet, und im Kernel bleibt der einzige Treiber, der mit WiMAX betrieben werden kann, der veraltete Intel 2400m-Treiber. Im Netzwerk-Manager NetworkManager wurde die Unterstützung für WiMAX 2015 eingestellt. Derzeit wird WiMax nahezu vollständig von Technologien wie LTE, HSPA+ und Wi-Fi 802.11n verdrängt.
    • Die Leistung bei der Verarbeitung von eingehendem TCP-Verkehr im Zerocopy-Modus wurde optimiert, d.h. ohne zusätzliches Kopieren in neue Puffer. Für mittelgroßen Verkehr, der Dutzende oder mehrere Hundert Kilobyte Daten umfasst, ist der Einsatz von Zerocopy anstelle von recvmsg() deutlich effizienter. Beispielsweise haben die implementierten Änderungen die Effizienz der Verarbeitung von RPC-ähnlichem Verkehr mit 32 KB großen Nachrichten beim Einsatz von Zerocopy um 60-70 % gesteigert.
    • Neue ioctl()-Aufrufe zum Erstellen von Netzwerkbrücken, die mehrere PPP-Kanäle abdecken, wurden hinzugefügt. Die vorgeschlagene Funktion ermöglicht es, dass Frames von einem Kanal in einen anderen wechseln, zum Beispiel von PPPoE zu einer PPPoL2TP-Sitzung.
    • Die Integration in den MPTCP-Kernel (MultiPath TCP) wurde fortgesetzt, einer Erweiterung des TCP-Protokolls für die Organisation von TCP-Verbindungen mit gleichzeitiger Paketlieferung über mehrere Routen hinweg, die über verschiedene Netzwerkinterfaces mit unterschiedlichen IP-Adressen gebunden sind. In der neuen Version wurde die Unterstützung für die Option ADD_ADDR implementiert, um verfügbare IP-Adressen Verbindungen anzukündigen, wenn neue Streams zu einer bestehenden MPTCP-Verbindung hinzugefügt werden.
    • Es wurde die Möglichkeit zur Konfiguration von Aktionen bei Budgetüberschreitungen des Verbindungs-Pollings (busy-polling) hinzugefügt. Der zuvor verfügbare SO_BUSY_POLL-Modus sah einen Wechsel zu softirq bei Budgeterschöpfung vor. Für Anwendungen, die weiterhin Polling nutzen müssen, wurde die neue Option SO_PREFER_BUSY_POLL vorgeschlagen.
    • Unter IPv6 wurde die Unterstützung für die SRv6 End.DT4- und End.DT6-Modi implementiert, die zur Erstellung von Multipoint-IPv4 L3 VPN und VRF-Geräten (Virtual Routing and Forwarding) verwendet werden.
    • Im Netfilter wurde die Implementierung von Set-Ausdrücken vereinheitlicht, was die Möglichkeit bietet, mehrere Ausdrücke für jedes Element von Set-Listen anzugeben.
    • Im drahtlosen 802.11-Stack wurden APIs zur Konfiguration von SAR-Leistungsbeschränkungen sowie von AE PWE- und HE MCS-Parametern hinzugefügt. Der Treiber Intel iwlwifi unterstützt jetzt den 6-GHz-Bereich (Ultra High Band). Im Treiber Qualcomm Ath11k wurde Unterstützung für die Schnellverbindungstechnologie FILS (Fast Initial Link Setup, standardisiert als IEEE 802.11ai) hinzugefügt, die Verzögerungen beim Roaming während der Migration von einem Access Point zu einem anderen beseitigt.
  • Ausrüstung
    • Im Treiber amdgpu wurde die Unterstützung für die APU AMD „Green Sardine“ (Ryzen 5000) und die GPU „Dimgrey Cavefish“ (Navi 2) sowie die erste Unterstützung für die APU AMD Van Gogh mit Zen 2-Kern und RDNA 2-GPU (Navi 2) implementiert. Unterstützung für neue APU-Identifikatoren von Renoir ( basierend auf CPU Zen 2 und GPU Vega) wurde hinzugefügt.
    • Der i915-Treiber für Intel-Grafikkarten unterstützt die IS-Technologie (Integer Scaling) mit einer Implementierung eines Filters zur Skalierung unter Berücksichtigung des Zustands angrenzender Pixel (Nearest-neighbor-Interpolation), um die Farbe fehlender Pixel zu bestimmen. Die Unterstützung für die diskreten Intel DG1-Karten wurde erweitert. Es wurde Unterstützung für die Technologie "Big Joiner" implementiert, die seit den Ice Lake/Gen11-Chips vorhanden ist und es ermöglicht, einen Transcoder zur Verarbeitung von zwei Streams zu verwenden, beispielsweise zur Ausgabe auf einen 8K-Bildschirm über einen DisplayPort. Ein asynchroner Umschaltmodus zwischen zwei Puffern im Videospeicher (async flip) wurde hinzugefügt.
    • Im Nouveau-Treiber wurde eine erste Unterstützung für die NVIDIA-GPUs der Mikroarchitektur "Ampere" (GA100, GeForce RTX 30xx) hinzugefügt, die derzeit durch Werkzeuge zur Verwaltung von Video-Modi eingeschränkt ist.
    • Es wurde Unterstützung für das 3WIRE-Protokoll hinzugefügt, das in LCD-Panels verwendet wird. Unterstützung für die Panels novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 und ABT Y030XX067A 3.0 wurde hinzugefügt. Besonders hervorzuheben ist die Unterstützung für das Panel der Smartphones OnePlus 6 und 6T, die es ermöglicht hat, den Start auf Geräten mit einem unveränderten Kernel zu organisieren.
    • Unterstützung für den ersten diskreten USB4-Hub-Controller Intel Maple Ridge wurde hinzugefügt.
    • Unterstützung für die Audio-Codecs Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI und XCVR, Realtek RT715 und Qualcomm SM8250 wurde hinzugefügt.
    • Unterstützung für ARM-Platten, Geräte und Plattformen: 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 auf Basis von Marvell Prestera 98DX3236, Server mit Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Unterstützung für die Spielkonsole Ouya mit NVIDIA Tegra 3 ist integriert.

Gleichzeitig hat die lateinamerikanische Free Software Foundation eine vollständig freie Kernel-Version 5.11 – Linux-libre 5.11-gnu, die von Elementen von Firmware und Treibern, die nicht freie Komponenten oder Codeabschnitte enthalten, bereinigt ist, veröffentlicht. In dieser neuen Version wurde die Bereinigung der Treiber für qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver und mhi pci controller durchgeführt. Der Code zur Bereinigung von Blobs in den Treibern und Subsystemen amdgpu, btqca, btrtl, btusb, i915 csr wurde aktualisiert. Neue Blobs in m3 rproc, idt82p33 ptp clock und qualcomm arm64 wurden deaktiviert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4