Nach zwei Monaten Entwicklung hat Linus Torvalds die Version des Linux-Kernels 6.2 vorgestellt. Zu den bemerkenswertesten Änderungen gehören: die Zulassung von Code unter der Copyleft-Next-Lizenz, verbesserte Implementierung von RAID5/6 in Btrfs, fortgesetzte Integration der Unterstützung der Programmiersprache Rust, reduzierte Overheadkosten zum Schutz gegen Retbleed-Angriffe, hinzugefügt die Möglichkeit zur Regulierung des Speicherverbrauchs bei rückläufigen Schreibvorgängen, wurde für TCP ein PLB (Protective Load Balancing)-Mechanismus hinzugefügt, ein hybrider Mechanismus zum Schutz des Befehlsausführungsflusses (FineIBT) integriert, in BPF die Möglichkeit zur Definition eigener Objekte und Datenstrukturen hinzugefügt, das Tool rv (Runtime Verification) integriert und der Energieverbrauch bei der Implementierung von RCU-Sperren reduziert.
In die neue Version wurden 16843 Korrekturen von 2178 Entwicklern aufgenommen, die Größe des Patches beträgt 62 MB (Änderungen betreffen 14108 Dateien, 730195 Codezeilen wurden hinzugefügt und 409485 Zeilen entfernt). Etwa 42 % aller in 6.2 vorgestellten Änderungen sind mit Gerätetreibern verbunden, circa 16 % der Änderungen betreffen Aktualisierungen des codespezifischen Formats für Hardwarearchitekturen, 12 % beziehen sich auf den Netzwerk-Stack, 4 % auf Dateisysteme und 3 % auf interne Kernsubsysteme.
Die wichtigsten Neuerungen im Kernel 6.2:
- Speicher und Systemdienste
- Die Einbeziehung von Code und Änderungen in den Kernel unter der Copyleft-Next-Lizenz 0.3.1 ist erlaubt. Die Copyleft-Next-Lizenz wurde von einem der Autoren der GPLv3 erstellt und ist vollständig mit der GPLv2-Lizenz kompatibel, was von Juristen der Firmen SUSE und Red Hat bestätigt wird. Im Vergleich zur GPLv2 ist die Copyleft-Next-Lizenz erheblich kompakter und verständlicher (die Einleitung und Verweise auf überholte Kompromisse wurden entfernt), sie legt Fristen und Verfahren zur Behebung von Verstößen fest und hebt automatisch die Copyleft-Anforderungen für veraltete Werke auf, die älter als 15 Jahre sind.
Die Copyleft-Next-Lizenz enthält auch eine Klausel zur Gewährung von Rechten an patentierten Technologien, die diese Lizenz im Gegensatz zur GPLv2 kompatibel mit der Apache 2.0-Lizenz macht. Um die vollständige Kompatibilität mit der GPLv2 sicherzustellen, wird im Text von Copyleft-Next ausdrücklich angegeben, dass ein abgeleitetes Werk nicht nur unter der ursprünglichen Copyleft-Next-Lizenz, sondern auch unter der GPL-Lizenz bereitgestellt werden kann.
- Das Programm enthält das Dienstprogramm „rv“, das eine Schnittstelle bereitstellt, um aus dem Benutzerspeicher mit den Handlern des RV-Subsystems (Runtime Verification) zu interagieren, das zur Überprüfung der Korrektheit von Hochverfügbarkeitssystemen dient, die Ausfallzeiten ausschließen. Die Überprüfung erfolgt zur Laufzeit durch das Anhängen von Handlern an Tracepoints, die den tatsächlichen Ablauf der Ausführung mit einem vorher festgelegten, deterministischen Referenzmodell des Automaten abgleichen, welches das erwartete Verhalten des Systems definiert.
- Im Gerät zRAM, das die Speicherung von Swap-Speicher im komprimierten Format im Speicher ermöglicht (es wird ein Blockgerät im Speicher erstellt, auf dem mit Kompression gewchselt wird), wurde die Möglichkeit der Neupackung von Seiten unter Verwendung eines alternativen Algorithmus zur Erreichung eines höheren Komprimierungsgrades implementiert. Die Hauptidee besteht darin, eine Auswahl zwischen mehreren Algorithmen (lzo, lzo-rle, lz4, lz4hc, zstd) anzubieten, die ihre eigenen Kompromisse zwischen Komprimierungs-/Dekomprimierungsgeschwindigkeit und Komprimierungsgrad oder optima in bestimmten Situationen (zum Beispiel zur Komprimierung großer Speicherseiten) vorschlagen.
- Die API „iommufd“ wurde hinzugefügt, um aus dem Benutzerspeicher das Eingabe-/Ausgabespeicherverwaltungssystem — IOMMU (I/O Memory-Management Unit) — zu steuern. Die neue API bietet die Möglichkeit, die Seitenverwaltungstabellen für Eingabe-/Ausgabeoperationen unter Verwendung von Dateideskriptoren zu verwalten.
- Im BPF wurde die Möglichkeit zur Erstellung von Typen, Definition eigener Objekte, Aufbau einer eigenen Objekt-Hierarchie und flexibler Gestaltung eigener Datenstrukturen wie verkettete Listen bereitgestellt. Für BPF-Programme, die in den Schlafmodus wechseln (BPF_F_SLEEPABLE), wurde die Unterstützung für die Sperren bpf_rcu_read_{,un}lock() hinzugefügt. Es wurde die Unterstützung zur Speicherung von Objekten task_struct implementiert. Ein map-Typ BPF_MAP_TYPE_CGRP_STORAGE wurde hinzugefügt, der lokalen Speicher für cgroups bereitstellt.
- Für den RCU (Read-copy-update) Lock-Mechanismus wurde ein optionaler Mechanismus für „faule“ Callback-Aufrufe implementiert, bei dem mehrere Callback-Aufrufe im Batch-Modus über einen Timer auf einmal verarbeitet werden. Die Anwendung der vorgeschlagenen Optimierung ermöglicht es, den Energieverbrauch auf Android- und ChromeOS-Geräten um 5–10 % zu senken, indem RCU-Anfragen während Idle-Zeiten oder bei geringer Systemlast hinausgezögert werden.
- Die sysctl split_lock_mitigate-Option wurde hinzugefügt, um das Systemverhalten beim Auftreten von Split-Locks zu steuern, die durch den Zugriff auf nicht ausgerichtete Daten im Speicher verursacht werden, wenn atomare Anweisungen Daten über zwei CPU-Cachelinien hinweg verarbeiten. Solche Locks führen zu erheblichen Leistungseinbußen. Bei einer Einstellung von split_lock_mitigate auf 0 wird lediglich eine Warnung über das Vorhandensein des Problems ausgegeben, während bei einer Einstellung auf 1 zusätzlich zur Warnung die Ausführung des den Lock verursachenden Prozesses verlangsamt wird, um die Leistung des restlichen Systems zu bewahren.
- Für die PowerPC-Architektur wurde eine neue Implementierung von qspinlock-Locks vorgeschlagen, die eine höhere Leistung zeigt und einige Lock-Probleme löst, die in Ausnahmefällen auftreten.
- Der Code zur Verarbeitung von MSI (Message-Signaled Interrupts) wurde überarbeitet, um bestehende architektonische Probleme zu beheben und die Unterstützung für die Bindung einzelner Handler an verschiedene Geräte hinzuzufügen.
- Für Systeme mit der LoongArch-Befehlssatzarchitektur, die in den Prozessoren Loongson 3 5000 verwendet wird und einen neuen RISC ISA implementiert, der MIPS und RISC-V ähnelt, wurde die Unterstützung für ftrace, Stackschutz sowie Schlaf- und Wartezustände implementiert.
- Es wurde die Möglichkeit geschaffen, Bereichen des gemeinsamen anonymen Speichers Namen zuzuweisen (früher konnten Namen nur dem privaten anonymen Speicher zugewiesen werden, der einem bestimmten Prozess zugewiesen ist).
- Ein neuer Kernel-Parameter "trace_trigger" wurde hinzugefügt, der zur Aktivierung eines Trace-Triggers dient, der zur Bindung bedingter Befehle verwendet wird, die bei einer Überprüfung aktiviert werden (z.B. trace_trigger="sched_switch.stacktrace if prev_state == 2").
- Die Anforderungen an die Version des binutils-Pakets wurden erhöht. Zum Bauen des Kernels wird nun mindestens binutils 2.25 benötigt.
- Beim Aufruf von exec() wurde die Möglichkeit hinzugefügt, einen Prozess in einen Zeit-Namespace zu versetzen, in dem die Zeit von der Systemzeit abweicht.
- Der Transfer zusätzlicher Funktionen aus dem Rust-for-Linux-Zweig hat begonnen, die mit der Nutzung der Programmiersprache Rust als zweiter Sprache zur Entwicklung von Treibern und Kernmodulen zusammenhängen. Die Unterstützung von Rust ist standardmäßig deaktiviert und führt nicht dazu, dass Rust zu den obligatorischen Build-Abhängigkeiten des Kernels gehört. Die im letzten Release vorgeschlagene Grundfunktionalität wurde um Möglichkeiten zur Unterstützung von Low-Level-Code, wie den Typ Vec und die Makros pr_debug!(), pr_cont!() und pr_alert!(), sowie das prozedurale Makro „#[vtable]“, das die Arbeit mit Funktionszeigertabellen vereinfacht, erweitert. Die Einführung hochgradiger Rust-Bindings für die Kernsubsysteme, die die Entwicklung vollständiger Treiber in Rust ermöglichen, wird in künftigen Versionen erwartet.
- Der im Kernel verwendete Typ „char“ wurde nun für alle Architekturen standardmäßig als unsigned deklariert.
- Der Memory-Management-Mechanismus slab — SLOB (slab allocator), der für Systeme mit geringem Speicherplatz konzipiert wurde, wird als veraltet erklärt. Anstelle von SLOB wird in der Regel empfohlen, SLUB oder SLAB zu verwenden. Für Systeme mit geringem Speicherplatz wird empfohlen, SLUB im SLUB_TINY-Modus anzuwenden.
- Die Einbeziehung von Code und Änderungen in den Kernel unter der Copyleft-Next-Lizenz 0.3.1 ist erlaubt. Die Copyleft-Next-Lizenz wurde von einem der Autoren der GPLv3 erstellt und ist vollständig mit der GPLv2-Lizenz kompatibel, was von Juristen der Firmen SUSE und Red Hat bestätigt wird. Im Vergleich zur GPLv2 ist die Copyleft-Next-Lizenz erheblich kompakter und verständlicher (die Einleitung und Verweise auf überholte Kompromisse wurden entfernt), sie legt Fristen und Verfahren zur Behebung von Verstößen fest und hebt automatisch die Copyleft-Anforderungen für veraltete Werke auf, die älter als 15 Jahre sind.
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Im Btrfs wurden Verbesserungen vorgenommen, die darauf abzielen, das Problem des „write hole“ in der RAID 5/6-Implementierung zu beheben (Versuch der RAID-Wiederherstellung, wenn ein Absturz während des Schreibvorgangs auftritt und nicht klar ist, welcher Block auf welchem der RAID-Geräte korrekt geschrieben wurde, was zu Beschädigungen von Blöcken führen kann, die den nicht geschriebenen Blöcken entsprechen). Zudem wird für SSDs nun standardmäßig, wenn möglich, asynchrones Ausführen der „discard“-Operation aktiviert, was zu einer höheren Leistung führt, da die disk operations effizient in der Warteschlange gruppiert und von einem Hintergrundbearbeiter verarbeitet werden. Die Leistung der Operationen send und lseek sowie ioctl FIEMAP wurde verbessert.
- Die Möglichkeiten zur Verwaltung der verzögerten Schreiboperationen (Writeback, Hintergrundspeicherung geänderter Daten) für Blockgeräte wurden erweitert. In einigen Situationen, wie z.B. bei der Verwendung von Netz-Blockgeräten oder USB-Sticks, kann eine verzögerte Schreiboperation zu hohem RAM-Verbrauch führen. Um das Verhalten der verzögerten Schreiboperation zu steuern und die Größe des Seitencaches im sysfs (\/sys\/class\/bdi\/) in bestimmten Grenzen zu halten, wurden die neuen Parameter strict_limit, min_bytes, max_bytes, min_ratio_fine und max_ratio_fine vorgeschlagen.
- Im Dateisystem F2FS wurde eine ioctl-Operation für atomare Ersetzungen implementiert, die es ermöglicht, Daten in einer Datei innerhalb einer einzigen atomaren Operation zu schreiben. F2FS hat auch einen Blockcache für Extents hinzugefügt, der hilft, aktiv genutzte Daten oder Daten, auf die lange nicht mehr zugegriffen wurde, zu identifizieren.
- Im Dateisystem ext4 gibt es nur Fehlerkorrekturen.
- Im Dateisystem ntfs3 wurden mehrere neue Mount-Optionen vorgeschlagen: „nocase“ zur Steuerung der Groß-/Kleinschreibung von Dateinamen und Verzeichnissen; windows_name zur Verhinderung der Erstellung von Dateinamen, die Zeichen enthalten, die für Windows unzulässig sind; hide_dot_files zur Steuerung der Zuweisung von Hidden-Flags für Dateien, die mit einem Punkt beginnen.
- Im Dateisystem Squashfs wurde die Mount-Option „threads=“ implementiert, mit der die Anzahl der Threads für die Parallelisierung von Entpackvorgängen festgelegt werden kann. In Squashfs wurde auch die Möglichkeit hinzugefügt, die Benutzer-IDs von gemounteten Dateisystemen zuzuordnen, die zur Zuordnung von Dateien eines bestimmten Benutzers auf einem gemounteten fremden Partition mit einem anderen Benutzer im aktuellen System verwendet wird.
- Die Implementierung der POSIX-Zugriffskontrolllisten (POSIX ACL) wurde überarbeitet. In der neuen Implementierung wurden architektonische Probleme behoben, die Wartung des Codes vereinfacht und sicherere Datentypen verwendet.
- Im fscrypt-Subsystem, das für die transparente Verschlüsselung von Dateien und Verzeichnissen verwendet wird, wurde die Unterstützung des Verschlüsselungsalgorithmus SM4 (chinesischer Standard GB\/T 32907-2016) hinzugefügt.
- Es wurde die Möglichkeit geschaffen, den Kernel ohne Unterstützung für NFSv2 zu kompilieren (zukünftig wird die Unterstützung für NFSv2 vollständig eingestellt).
- Die Organisation der Überprüfung der Zugriffsrechte auf NVMe-Geräte wurde geändert. Es wurde die Möglichkeit geschaffen, auf NVMe-Geräte zu lesen und zu schreiben, sofern der schreibende Prozess Zugang zu einer speziellen Gerätedatei hat (früher musste der Prozess die Berechtigung CAP_SYS_ADMIN besitzen).
- Der Pakettreiber für CD/DVD wurde entfernt, da er bereits 2016 als veraltet deklariert wurde.
- Virtualisierung und Sicherheit
- Eine neue Methode zum Schutz vor der Retbleed-Sicherheitsanfälligkeit in Intel- und AMD-CPUs wurde implementiert, die ein Call Stack-Tracking verwendet, was nicht so stark die Leistung beeinträchtigt wie der zuvor vorhandene Schutz gegen Retbleed. Um den neuen Modus zu aktivieren, wurde der Kernel-Parameter „retbleed=stuff“ vorgeschlagen.
- Ein hybrider Schutzmechanismus für die Ausführungsreihenfolge von Befehlen namens FineIBT wurde hinzugefügt, der die Verwendung von Intel IBT (Indirect Branch Tracking)-Hardwarebefehlen und der kCFI (Kernel Control Flow Integrity)-Softwareabschottung kombiniert, um Verstöße gegen die normale Ausführungsreihenfolge (control flow) durch Ausnutzung von Exploits, die die in den Speicher gespeicherten Funktionszeiger ändern, zu verhindern. FineIBT erlaubt die Ausführung von indirekten Sprüngen nur im Fall eines Übergangs zu einer ENDBR-Instruktion, die am Anfang der Funktion platziert ist. Zusätzlich wird, ähnlich wie beim kCFI-Mechanismus, eine Hash-Prüfung durchgeführt, die die Unveränderlichkeit der Zeiger gewährleistet.
- Es wurden Einschränkungen hinzugefügt, um Angriffe, die die Generierung von „oops“-Zuständen manipulieren, zu blockieren, nach denen problematische Aufgaben beendet werden und der Zustand ohne Unterbrechung des Systembetriebs wiederhergestellt wird. Bei einer sehr hohen Anzahl von „oops“-Zustandsaufrufen tritt ein Überlauf des Referenzzählers (refcount) auf, was es ermöglicht, Schwachstellen durch Dereferenzierung von NULL-Zeigern auszunutzen. Zum Schutz vor solchen Angriffen wurde eine Begrenzung der maximalen Anzahl von „oops“-Ereignissen in den Kernel integriert, nach deren Überschreitung der Kernel einen Übergang in den „panic“-Zustand einleiten und anschließend neu starten wird, wodurch eine Anzahl an Iterationen, die zum Überlauf des refcount notwendig wäre, nicht erreicht werden kann. Standardmäßig ist die Grenze auf 10.000 „oops“ festgelegt, kann jedoch über den Parameter oops_limit geändert werden.
- Der Konfigurationsparameter LEGACY_TIOCSTI und der sysctl legacy_tiocsti wurden hinzugefügt, um die Möglichkeit zu deaktivieren, Daten über ioctl TIOCSTI in das Terminal einzufügen, da diese Funktionalität zum Einfügen beliebiger Zeichen in den Eingabepuffer des Terminals und zur Simulation der Benutzereingabe verwendet werden kann.
- Ein neuer Typ interner Strukturen wurde vorgeschlagen, encoded_page, in dem die unteren Bits des Zeigers zur Speicherung zusätzlicher Informationen verwendet werden, die zum Schutz vor versehentlichem Dereferenzieren des Zeigers dienen (im Falle eines tatsächlichen Dereferenzierens müssen diese zusätzlichen Bits zuvor gelöscht werden).
- Auf der ARM64-Plattform wurde während des Boot-Vorgangs die Möglichkeit eingeführt, die softwareseitige Implementierung des Shadow Stack-Mechanismus, der zum Schutz vor der Überschreibung der Rückgabadresse aus einer Funktion im Falle eines Bufferüberlaufs verwendet wird, zu aktivieren und zu deaktivieren (das Schutzprinzip besteht darin, die Rückgabadresse nach der Übergabe der Steuerung an die Funktion in einem separaten "Shadow"-Stack zu speichern und diese Adresse vor dem Verlassen der Funktion abzurufen). Die Unterstützung von hardware- und softwareseitiger Implementierung des Shadow Stack in einem Kernel-Build ermöglicht es, denselben Kernel auf verschiedenen ARM-Systemen zu verwenden, unabhängig von der Unterstützung von Instruktionen zur Pointer-Autentifizierung. Die Aktivierung der softwareseitigen Implementierung erfolgt durch Ersetzen der erforderlichen Instruktionen im Code während des Boot-Vorgangs.
- Die Unterstützung der Verwendung des Mechanismus zur asynchronen Benachrichtigung über den Austritt (asynchronous exit notification) auf Intel-Prozessoren wurde hinzugefügt, was das Erkennen von Single-Step-Angriffen auf Code, der in SGX-Enclaves ausgeführt wird, ermöglicht.
- Ein Satz von Operationen wurde vorgeschlagen, um dem Hypervisor zu ermöglichen, Anfragen aus Intel TDX (Trusted Domain Extensions) Guest-Systemen zu unterstützen.
- Die Kernel-Baueinstellungen RANDOM_TRUST_BOOTLOADER und RANDOM_TRUST_CPU wurden entfernt, stattdessen sollten die entsprechenden Kommandozeilenoptionen random.trust_bootloader und random.trust_cpu verwendet werden.
- Der Mechanismus Landlock, der die Interaktion einer Gruppe von Prozessen mit der Außenwelt einschränkt, wurde um die Unterstützung des Flags LANDLOCK_ACCESS_FS_TRUNCATE erweitert, das die Kontrolle über das Truncating von Dateien ermöglicht.
- Netzwerksubsystem
- Für IPv6 wurde die Unterstützung von PLB (Protective Load Balancing) hinzugefügt, einem Lastenausgleichsmechanismus zwischen Netzwerklinks, der darauf abzielt, Überlastungspunkte in den Switches von Rechenzentren zu reduzieren. Durch die Änderung des IPv6 Flow Labels ändert PLB zufällig die Wege der Pakete, um die Lasten an den Ports des Switches auszugleichen. Um die Neuanordnung von Paketen zu minimieren, wird diese Operation nach Möglichkeit in Zeiten der Untätigkeit (idle) durchgeführt. Der Einsatz von PLB in Google-Rechenzentren hat den Lastenausgleich an den Switch-Ports im Durchschnitt um 60 % verbessert, den Paketverlust um 33 % reduziert und die Verzögerungen um 20 % verringert.
- Ein Treiber für MediaTek-Geräte mit Unterstützung für Wi-Fi 7 (802.11be) wurde hinzugefügt.
- Die Unterstützung für 800-Gigabit-Links wurde hinzugefügt.
- Die Möglichkeit zur Umbenennung von Netzwerkinterfacen zur Laufzeit, ohne den Betrieb zu stoppen, wurde hinzugefügt.
- Die Protokolle über SYN-Flut wurden um einen Hinweis auf die IP-Adresse, an die das Paket gesendet wurde, erweitert.
- Für UDP wurde die Möglichkeit implementiert, separate Hash-Tabellen für verschiedene Netzwerk-Namespaces zu verwenden.
- Für Netzwerkbrücken wurde die Unterstützung der Authentifizierungsmethode MAB (MAC Authentication Bypass) implementiert.
- Für das CAN-Protokoll (CAN_RAW) wurde die Unterstützung des Socket-Modus SO_MARK zur Anbringung von Datenverkehrsfiltern basierend auf fwmark implementiert.
- In ipset wurde ein neuer Parameter bitmask implementiert, der es ermöglicht, eine Maske basierend auf beliebigen Bits in der IP-Adresse festzulegen (z. B. „ipset create set1 hash:ip bitmask 255.128.255.0“).
- In nf_tables wurde die Unterstützung für die Verarbeitung von inneren Headern, die innerhalb von tunnisierten Paketen kommen, hinzugefügt.
- Ausrüstung
- Ein Subsystem „accel“ mit der Implementierung eines Frameworks für Rechenbeschleuniger wurde hinzugefügt, die sowohl in Form von separaten ASICs als auch als IP-Blöcke innerhalb von SoCs und GPUs bereitgestellt werden können. Diese Beschleuniger sind hauptsächlich darauf ausgelegt, die Lösung von Aufgaben des maschinellen Lernens zu beschleunigen.
- Im amdgpu-Treiber wurde die Unterstützung von IP-Komponenten GC, PSP, SMU und NBIO aktiviert. Für ARM64-Systeme wurde die Unterstützung von DCN (Display Core Next) implementiert. Die Implementierung des geschützten Bildschirmausgangs wurde von DCN10 auf DCN21 umgestellt und kann nun beim Anschluss mehrerer Bildschirme verwendet werden.
- Im i915-Treiber (Intel) wurde die Unterstützung für diskrete Intel Arc-Grafikkarten (DG2/Alchemist) stabilisiert.
- Im Nouveau-Treiber wurde die Unterstützung für die NVIDIA GA102 (RTX 30) GPU auf Basis der Ampere-Architektur implementiert. Für nva3-Karten (GT215) wurde die Möglichkeit zur Steuerung der Hintergrundbeleuchtung hinzugefügt.
- Unterstützung für drahtlose Adapter auf Basis von Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) und MediaTek MT7996, Bluetooth-Schnittstellen von Broadcom BCM4377/4378/4387 sowie Ethernet-Controller von Motorcomm yt8521, NVIDIA Tegra GE hinzugefügt.
- Unterstützung für ASoC (ALSA System on Chip) für integrierte Audioprozessoren HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588 hinzugefügt. Unterstützung für die Audioperipherie Focusrite Saffire Pro 40 hinzugefügt. Der Audiocodec Realtek RT1318 wurde hinzugefügt.
- Unterstützung für Smartphones und Tablets von Sony (Xperia 10 IV, 5 IV, X und X compact, OnePlus One, 3, 3T und Nord N100, Xiaomi Poco F1 und Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1) hinzugefügt.
- Unterstützung für ARM SoC und Apple-Platinen T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), SDM670 (Snapdragon 670), MSM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), RK3326 Odroid-Go/rg351, Zyxel NSA310S, InnoComm i.MX8MM und Odroid Go Ultra hinzugefügt.
Gleichzeitig hat die lateinamerikanische Frei-Software-Stiftung einen vollständig freien Kernel 6.2 – Linux-libre 6.2-gnu, der von Elementen der Firmware und Treiber, die nicht freie Komponenten oder Codeabschnitte enthalten, gereinigt wurde, erstellt. In der neuen Version wurden neue Blobs im Nouveau-Treiber bereinigt. Das Laden von Blobs in den Treibern mt7622, mt7996 WiFi und bcm4377 Bluetooth wurde deaktiviert. Die Namen von Blobs in DTS-Dateien für die Architektur Aarch64 wurden bereinigt. Der Code zur Bereinigung von Blobs in verschiedenen Treibern und Subsystemen wurde aktualisiert. Die Bereinigung des Treibers s5k4ecgx wurde eingestellt, da er aus dem Kernel entfernt wurde.
Quelle: opennet.ru
