Kernel-Version Linux 6.1

Nach zweimonatiger Entwicklungszeit veröffentlichte Linus Torvalds den Kernel. Linux 6.1. Zu den wichtigsten Änderungen zählen: die Unterstützung für die Entwicklung von Treibern und Modulen in der Rust-Sprache, die Modernisierung des Mechanismus zur Bestimmung der verwendeten Speicherseiten, ein spezieller Speichermanager für BPF-Programme, das KMSAN-Speicherproblemdiagnosesystem, der KCFI-Schutzmechanismus (Kernelk Control-Flow Integrity) und die Einführung der Maple-Baumstruktur.

Die neue Version enthält 15115 Fixes von 2139 Entwicklern, die Patchgröße beträgt 51 MB und ist damit etwa doppelt so groß wie die Patches der Kernel 2 und 6.0. Die Änderungen betrafen 5.19 Dateien, 13165 Codezeilen wurden hinzugefügt und 716247 Zeilen gelöscht. Etwa 304560 % aller in 45 eingeführten Änderungen beziehen sich auf Gerätetreiber, etwa 6.1 % der Änderungen beziehen sich auf die Aktualisierung von Code, der für Hardwarearchitekturen spezifisch ist, 14 % beziehen sich auf den Netzwerkstapel, 14 % beziehen sich auf Dateisysteme und 3 % beziehen sich auf beziehen sich auf interne Kernel-Subsysteme.

Wichtige Neuerungen im Kernel 6.1:

  • Speicher- und Systemdienste
    • Rust wurde als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen hinzugefügt. Hauptgrund für die Unterstützung von Rust ist die Vereinfachung der Entwicklung sicherer und qualitativ hochwertiger Gerätetreiber durch die Reduzierung von Fehlern bei der Speicherverwaltung. Die Rust-Unterstützung ist standardmäßig deaktiviert und Rust ist keine obligatorische Build-Abhängigkeit des Kernels. Der Kernel verwendet derzeit eine minimale, abgespeckte Version von Patches, die von 40 auf 13 Codezeilen reduziert wurde und nur das absolute Minimum für die Erstellung eines einfachen, in Rust geschriebenen Kernelmoduls bietet. Zukünftig planen wir, die bestehende Funktionalität schrittweise zu erweitern und weitere Änderungen aus dem Rust-for-Branch zu übernehmen.LinuxParallel dazu laufen Projekte, die die vorgeschlagene Infrastruktur nutzen, um Treiber für NVMe-Laufwerke, das 9p-Netzwerkprotokoll und die Apple M1 GPU in Rust zu entwickeln.
    • Für Systeme, die auf AArch64-, RISC-V- und LoongArch-Architekturen mit EFI basieren, wurde die Möglichkeit implementiert, komprimierte Kernel-Images direkt zu laden. Handler zum Laden, Ausführen und Entladen von Kernel-Images hinzugefügt, die direkt von EFI zboot aufgerufen werden. Außerdem wurden Handler zum Installieren und Löschen von Protokollen aus der EFI-Protokolldatenbank hinzugefügt. Früher wurde das Entpacken durch einen separaten Bootloader durchgeführt, nun kann dies durch einen Handler im Kernel selbst erfolgen – das Kernel-Image wird als EFI-Anwendung gebildet.
    • Die Zusammensetzung umfasst einen Teil der Patches mit der Implementierung eines mehrstufigen Speicherverwaltungsmodells, das die Trennung von Speicherbänken mit unterschiedlichen Leistungsmerkmalen ermöglicht. Beispielsweise können die am häufigsten verwendeten Seiten im schnellsten Speicher gespeichert werden, während die am seltensten verwendeten Seiten im relativ langsamen Speicher gespeichert werden. Kernel 6.1 führt einen Mechanismus ein, um zu bestimmen, wo sich stark genutzte Seiten im langsamen Speicher befinden, damit sie in den schnellen Speicher hochgestuft werden können, und führt außerdem ein allgemeines Konzept von Speicherebenen und ihrer relativen Leistung ein.
    • Es umfasst den MGLRU-Mechanismus (Multi-Generational LRU), der die alte LRU-Implementierung (Least Recent Used) basierend auf zwei Warteschlangen durch eine mehrstufige Struktur ersetzt, die besser bestimmt, welche Speicherseiten tatsächlich verwendet werden und an welche weitergeleitet werden können die Swap-Partition.
    • Die Unterstützung für die von Oracle-Ingenieuren vorgeschlagene „Maple-Tree“-Datenstruktur wurde hinzugefügt. Diese soll die „Rot-Schwarz-Baum“-Struktur effizienter ersetzen. Der Maple Tree ist eine Variante des B-Baums, die Bereichsindizierung unterstützt und für eine effiziente Cache-Nutzung optimiert ist. moderne ProzessorenEinige Speicherverwaltungssubsysteme wurden bereits auf Maple-Bäume migriert, was sich positiv auf ihre Leistung ausgewirkt hat. Zukünftig könnten Maple-Bäume zur Implementierung von Bereichssperren eingesetzt werden.
    • Dem BPF-Subsystem wurde die Möglichkeit hinzugefügt, „zerstörerische“ BPF-Programme zu erstellen, die speziell darauf ausgelegt sind, über den Aufruf crash_kexec() eine Notabschaltung einzuleiten. Solche BPF-Programme können für Debugging-Zwecke erforderlich sein, um zu einem bestimmten Zeitpunkt die Erstellung eines Crash-Dumps zu veranlassen. Um beim Laden eines BPF-Programms auf destruktive Vorgänge zuzugreifen, müssen Sie das Flag BPF_F_DESTRUCTIVE angeben, sysctl kernel.destructive_bpf_enabled aktivieren und über CAP_SYS_BOOT-Rechte verfügen.
    • Für BPF-Programme ist es möglich, cgroup-Elemente sowie Ressourcen (Dateien, VMA, Prozesse usw.) eines bestimmten Threads oder einer bestimmten Aufgabe aufzuzählen. Ein neuer Kartentyp wurde implementiert, um Benutzer-Ringpuffer zu erstellen.
    • Ein spezieller Aufruf für die Speicherzuweisung in BPF-Programmen (Speicherzuweisung) wurde hinzugefügt, der eine sicherere Speicherzuweisung im BPF-Kontext bietet als der Standard-kmalloc().
    • Der erste Teil der Änderungen wurde integriert und bietet die Möglichkeit, Treiber für Eingabegeräte mit einer HID-Schnittstelle (Human Interface Device) zu erstellen, implementiert in Form von BPF-Programmen.
    • Der Kernel hat den Code, der das ausführbare Dateiformat a.out unterstützte, vollständig entfernt. Dieses Format wurde in Version 5.1 als veraltet markiert und für die meisten Architekturen ab den Versionen 5.18 und 5.19 deaktiviert. Das a.out-Format ist auf Systemen mit dieser Architektur schon lange veraltet. LinuxDie Generierung von a.out-Dateien wird von modernen Tools in Konfigurationen für nicht unterstützt. Linux Standardmäßig. Der Lader für a.out-Dateien kann vollständig im Benutzermodus implementiert werden.
    • Für Systeme, die auf der LoongArch-Befehlssatzarchitektur basieren, die in den Loongson 3 5000-Prozessoren verwendet wird und die neue RISC ISA implementiert, ähnlich wie MIPS und RISC-V, ist Unterstützung für Leistungsmessereignisse (Perf-Ereignisse), Kexec, Kdump und BPF-JIT-Kompilierung implementiert .
    • Die asynchrone I/O-Schnittstelle io_uring bietet einen neuen Modus, IORING_SETUP_DEFER_TASKRUN, der es ermöglicht, ringpufferbezogene Arbeiten vorübergehend zu verschieben, bis eine Anwendungsanforderung gestellt wird, die für Batch-Arbeiten verwendet werden kann und Latenzprobleme aufgrund von Preemption vermeidet. Anwendungen am falsche Zeit.
    • Prozesse im Benutzerbereich erhalten die Möglichkeit, die Konvertierung einer Reihe normaler Speicherseiten in einen Satz großer Speicherseiten (Transparent Huge-Pages) zu initiieren.
    • Implementierung des Geräts /dev/userfaultfd hinzugefügt, das den Zugriff auf die Funktionalität des Systemaufrufs userfaultfd() mithilfe von Zugriffsrechten im FS ermöglicht. Mit der Funktion „userfaultfd“ können Sie Handler für den Zugriff auf nicht zugewiesene Speicherseiten (Seitenfehler) im Benutzerbereich erstellen.
    • Die Anforderungen an die Version des Dienstprogramms GNU Make wurden erhöht – zum Erstellen des Kernels ist jetzt mindestens Version 3.82 erforderlich.
  • Festplattensubsystem, E/A und Dateisysteme
    • Am Btrfs-Dateisystem wurden erhebliche Leistungsoptimierungen vorgenommen; unter anderem wurde die Leistung des FIEMAP-ioctl-Aufrufs um Größenordnungen gesteigert. Unterstützung für asynchrone gepufferte Schreibvorgänge für Anwendungen hinzugefügt, die io_uring verwenden. Unterstützung für mit fs-verity geschützte Dateien zum „Senden“-Vorgang hinzugefügt.
    • Das ext4-Dateisystem verfügt über Leistungsoptimierungen im Zusammenhang mit der Journalpflege und dem schreibgeschützten Betrieb.
    • Das EROFS-Dateisystem (Enhanced Read-Only File System), das für die Verwendung auf Partitionen konzipiert ist, auf die im schreibgeschützten Modus zugegriffen werden kann, implementiert die Möglichkeit, in verschiedenen Dateisystemen duplizierte Daten gemeinsam zu nutzen.
    • Der Systemaufruf statx() wurde hinzugefügt, um Informationen darüber anzuzeigen, ob direkte E/A auf eine Datei angewendet werden kann.
    • Dem FUSE-Subsystem (Filesystems in User Space) wurde Unterstützung für die Erstellung temporärer Dateien mit dem O_TMPFILE-Flag hinzugefügt.
  • Virtualisierung und Sicherheit
    • Die Implementierung des CFI-Schutzmechanismus (Control Flow Integrity) wurde ersetzt und fügt vor jedem indirekten Aufruf einer Funktion Überprüfungen hinzu, um einige Formen undefinierten Verhaltens zu erkennen, das möglicherweise zu einer Verletzung der normalen Ausführungsreihenfolge (Kontrollfluss) führen könnte Ergebnis der Verwendung von Exploits, die Zeiger auf im Speicher gespeicherte Funktionen ändern. Die Standardimplementierung von CFI aus dem LLVM-Projekt wurde durch eine Option ersetzt, die ebenfalls auf der Verwendung von Clang basiert, jedoch speziell für den Schutz von Subsystemen und Betriebssystemkernen auf niedriger Ebene angepasst ist. In LLVM wird in der Clang 16-Version eine neue Implementierung angeboten und mit der Option „-fsanitize=kcfi“ aktiviert. Der wesentliche Unterschied zur neuen Implementierung besteht darin, dass sie nicht an Link-Time-Optimierungen (LTO) gebunden ist und nicht dazu führt, dass Funktionszeiger durch Links in der Sprungtabelle ersetzt werden.
    • Für LSM-Module (Linux Das Sicherheitsmodul bietet die Möglichkeit, Handler zu erstellen, die Operationen zum Erstellen von Namensräumen abfangen.
    • Es werden Tools zur Überprüfung digitaler PKCS#7-Signaturen in BPF-Programmen bereitgestellt.
    • Die Möglichkeit, im nicht blockierenden Modus (O_NONBLOCK) zu öffnen, die in Kernel 5.6 versehentlich entfernt wurde, wurde an /dev/random zurückgegeben.
    • Auf Systemen mit x86-Architektur wurde eine Warnung hinzugefügt, falls Speicherseiten durch Kernel-Subsysteme zugeordnet werden, die gleichzeitig Ausführung und Schreiben ermöglichen. Zukünftig wird über die Möglichkeit nachgedacht, eine solche Speicherzuordnung vollständig zu verbieten.
    • KMSAN-Debugging-Mechanismus (Kernel Memory Sanitizer) hinzugefügt, um nicht initialisierte Speichernutzung im Kernel sowie nicht initialisierte Speicherlecks zwischen Benutzerbereich und Geräten zu erkennen.
    • Der im getrandom-Aufruf verwendete kryptografisch sichere Pseudozufallszahlengenerator (CRNG) wurde verbessert. Diese Änderungen wurden von Jason A. Donenfeld, dem Autor, vorbereitet. VPN WireGuard und zielen darauf ab, die Sicherheit der Extraktion von Pseudozufallszahlen zu verbessern.
  • Netzwerk-Subsystem
    • Der TCP-Stack bietet die Möglichkeit (standardmäßig deaktiviert), Socket-Hash-Tabellen für jeden Namespace separat zu verwenden, was die Leistung auf Systemen mit einer großen Anzahl von Namespaces verbessert.
    • Code zur Unterstützung des alten DECnet-Protokolls entfernt. Benutzerraum-API-Stubs bleiben vorhanden, um die Kompilierung von Anwendungen zu ermöglichen, die DECnet verwenden. Diese Anwendungen können jedoch keine Verbindung zum Netzwerk herstellen.
    • Das Netlink-Protokoll ist dokumentiert.
  • Ausrüstung
    • Der amdgpu-Treiber hat Unterstützung für die DSC-Weiterleitung (Display Stream Compression) für verlustfreie Datenkomprimierung beim Austausch von Informationen mit Bildschirmen hinzugefügt, die sehr hohe Auflösungen unterstützen. Es wird weiterhin daran gearbeitet, die Plattformen AMD RDNA3 (RX 7000) und CDNA (Instinct) zu unterstützen. Unterstützung für DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x und GMC 11.x IP-Komponenten hinzugefügt. Der amdkfd-Treiber (für diskrete AMD-GPUs wie Polaris) bietet Unterstützung für GFX 11.0.3.
    • Der i915 (Intel)-Treiber unterstützt die Meteor-Lake-GPU. Meteor Lake und neuere GPUs unterstützen die DP 2.0-Schnittstelle (DisplayPort). Identifikatoren für Grafikkarten basierend auf der Alder Lake S-Mikroarchitektur hinzugefügt.
    • Unterstützung für Audio-Subsysteme hinzugefügt, die in Apple Silicon-, Intel SkyLake- und Intel KabyLake-Prozessoren implementiert sind. Der HDA-Audiotreiber CS35L41 unterstützt den Ruhemodus. ASoC-Unterstützung (ALSA System on Chip) für integrierte Audiochips von Apple Silicon, AMD Rembrant DSPs, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake und Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPs, Qualcomm SC8280XP, SM8250 hinzugefügt. SM8450 und Texas Instruments SRC4392
    • Unterstützung für LCD-Panels Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116WH M-N21, INX hinzugefügt N116BCA- EA2, INX N116BCN-EA1, Multi-Inno Technology MI0800FT-9.
    • Unterstützung für AHCI-SATA-Controller hinzugefügt, die im Baikal-T1-SoC verwendet werden.
    • Unterstützung für Bluetooth-Chips MediaTek MT7921, Intel Magnetor (CNVi, Integrated Connectivity), Realtek RTL8852C, RTW8852AE und RTL8761BUV (Edimax BT-8500) hinzugefügt.
    • Der ath11k-Treiber für Qualcomm-Funkmodule bietet Unterstützung für Spektralscannen im 160-MHz-Bereich, implementiert Multithread-NAPI und verbesserte Unterstützung für Qualcomm WCN6750 Wi-Fi-Chips.
    • Treiber für PinePhone-Tastatur, InterTouch-Touchpads (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite-Fernbedienungen, Tablets XP-PEN Deco Pro S hinzugefügt und Intuos Pro Small (PTH-460).
    • Treiber für kryptografische Beschleuniger Aspeed HACE (Hash and Crypto Engine) hinzugefügt.
    • Unterstützung für integrierte Thunderbolt/USB4 Intel Meteor Lake-Controller hinzugefügt.
    • Unterstützung für die Smartphones Sony Xperia 1 IV, Samsung Galaxy E5, E7 und Grand Max sowie Pine64 Pinephone Pro hinzugefügt.
    • Unterstützung für ARM SoC und Boards hinzugefügt: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 und RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/ BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Aktualisierte Treiber für SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom und NXP.

Gleichzeitig entwickelte die Latin American Free Software Foundation eine Version des völlig freien Kernels 6.1 - Linux-libre 6.1-gnu wurde von Firmware- und Treiberelementen bereinigt, die nicht-freie Komponenten oder Codeabschnitte mit eingeschränktem Gültigkeitsbereich enthielten. Diese Version beinhaltet die Bereinigung des neuen rtw8852b-Treibers und der DTS-Dateien für verschiedene Qualcomm- und MediaTek-SoCs mit AArch64-basierten Prozessoren. Der Code zur Blob-Bereinigung wurde für die Treiber und Subsysteme amdgpu, i915, brcmfmac, r8188eu, rtw8852c sowie Intel ACPI aktualisiert. Die Bereinigung veralteter Treiber für tm6000-TV-Karten, cpia2 v4l, sp8870 und av7110 wurde angepasst.

Source: opennet.ru

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