Release des Linux-Kernels 6.18

Nach zwei Monaten Entwicklung stellte Linus Torvalds die Veröffentlichung des Linux-Kernels 6.18 vor. Zu den bemerkenswertesten Änderungen gehören: dm-pcache für die Datenträger-Cache-Nutzung im nichtflüchtigen Speicher (PMEM), die Entfernung von Bcachefs, ein Online-Überprüfungsmodus für XFS, Treiber für Binder (Android IPC) und Tyr (GPU Mali) in Rust, die Möglichkeit, USB-Treiber in Rust zu erstellen, die Optimierung des Caching im SLUB-Speicherallokator, die Adressierung von Namensräumen über Dateideskriptoren, die Beschleunigung des Swap-Vorgangs, die Verifizierung von BPF-Programmen durch digitale Signaturen, die Virtualisierung von Intel CET in KVM, das Netzwerkprotokoll PSP (eine Hybridlösung aus TLS und IPsec), die Unterstützung der IP-Erweiterung AccECN und die Optimierung des UDP-Stacks.

In die neue Version wurden 15035 Korrekturen von 2217 Entwicklern aufgenommen, die Patch-Größe beträgt 45 MB (Änderungen betrafen 13142 Dateien, 601897 Zeilen Code wurden hinzugefügt, 355006 Zeilen entfernt). In der vorherigen Version gab es 14334 Korrekturen von 2118 Entwicklern, die Patch-Größe lag bei 46 MB. Etwa 40 % aller Änderungen in 6.18 beziehen sich auf Gerätetreiber, ca. 16 % der Änderungen betreffen die Aktualisierung von architekturspezifischem Code, 12 % sind mit dem Netzwerk-Stack verbunden, 5 % betreffen Dateisysteme und 3 % die internen Subsysteme des Kernels.

Die wichtigsten Neuerungen im Kernel 6.18 (1, 2, 3):

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
    • Im Device Mapper wurde ein dm-pcache-Handler hinzugefügt, der persistente Speicher (CXL-Speicher, adressierbar über DAX-Geräte) als zusätzlichen Hochgeschwindigkeitscache vor langsameren traditionellen Festplatten oder Flash-Speichern nutzt. Dm-pcache gewährleistet die sichere Speicherung des Cache-Inhalts bei Abstürzen (crash-safe) durch den Einsatz von nichtflüchtigem Speicher, Duplizierung von Metadaten und Integritätsprüfungen von Daten und Metadaten über CRC32-Prüfziffern. Derzeit wird nur das Caching im write-back-Modus unterstützt.
    • Der Code des Dateisystems Bcachefs wurde aus dem Kernel entfernt und wird nun als externes Modul verbreitet, das mit den DKMS-Tools (Dynamic Kernel Module Support) zusammengestellt wird. Der Code von Bcachefs kann wieder in den Kernel integriert werden, nachdem Kent Overstreet nachweislich bewiesen hat, dass eine korrekte Interaktion mit anderen Kernel-Entwicklern möglich ist und dass die etablierten Entwicklungsrichtlinien eingehalten werden.
    • Im Systemaufruf pwritev2() wurde die Option RWF_NOSIGNAL hinzugefügt, die das Senden des SIGPIPE-Signals beim Schreiben in unterbrochene anonymisierte Kanäle oder Sockets deaktiviert.
    • Im Procfs wurde die Mount-Option „pidns“ hinzugefügt, um Namensräume für Prozessidentifikatoren (PID-Namespace) anzugeben. Beispiel: „mount -t proc -o pidns=\/proc\/self\/ns\/pid proc \/tmp\/proc“.
    • Im XFS wurde die Möglichkeit zur Anwendung des Befehls fsck zur Überprüfung und Behebung erkannter Probleme im Online-Modus stabilisiert und standardmäßig aktiviert, ohne das Dateisystem aushängen zu müssen. Es wurden Systemaufrufe file_getattr und file_setattr hinzugefügt, um die Attribute spezieller Dateien (beliebige inodes) zu ändern. In KConfig wurden standardmäßig die Optionen XFS_SUPPORT_V4 (4. Version von XFS) und XFS_SUPPORT_ASCII_CI (Modus ohne Berücksichtigung der Groß- und Kleinschreibung von ASCII Zeichen) deaktiviert, die als veraltet gelten. Veraltete Mount-Optionen wie attr2, noattr2, ikeep und noikeep wurden entfernt.
    • In MD RAID wurde ein neuer Typ von Bitmaps implementiert – llbitmap (lockless bitmap), der ohne Sperren arbeitet und eine höhere Leistung gewährleistet.
    • Die Informationen über Verschlüsselung und Verifizierung (Zeiger i_crypt_info und i_verity_info) wurden aus der allgemeinen Struktur „inode“ herausgenommen. Diese Änderung ermöglicht eine geringere Speichernutzung in Dateisystemen, die keine Verschlüsselung und Verifizierung unterstützen.
    • In das FUSE-Subsystem wurde die Unterstützung für den Systemaufruf copy_file_range() und für das direkte Kopieren von Bereichen unter Verwendung einer 64-Bit-Größe (zuvor wurde nur eine 32-Bit-Größe unterstützt) hinzugefügt. Es wurde auch die Unterstützung für die Initialisierung im synchronen Modus während des Mountens (FUSE_DEV_IOC_SYNC_INIT) hinzugefügt.
    • Im ext4-Dateisystem wurde die Möglichkeit implementiert, 32-Bit-Benutzeridentifikatoren (uid) und Gruppenidentifikatoren (gid) beim Zugriff auf reservierte Blöcke zu verwenden. Es wurden ioctl-Operationen für das Setzen und Lesen von Parametern des Superblocks von eingehängten Dateisystemen hinzugefügt (tune2fs kann Superblockparameter ändern, ohne Schreibrechte auf das Blockgerät zu haben). Veraltete, für ext3 spezifische Einstellungen wurden vollständig entfernt.
    • In f2fs wurde die Option zum Einhängen "lookup_mode" hinzugefügt, um den Suchmodus auszuwählen: perf – Hash-Suche, compat – lineare Suche, auto – automatische Auswahl. Ändern des Modus ist sinnvoll für Konfigurationen mit Verzeichnissen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird. Den aktuellen Suchmodus kann man über die Datei "/sys/fs/f2fs//effective_lookup_mode" erfahren. Die Möglichkeit zur Reservierung von Inodes, die nur privilegierten Benutzern zur Verfügung stehen, wurde hinzugefügt.
    • In Overlayfs wurde ein Modus hinzugefügt, der die Groß- und Kleinschreibung der Zeichen nicht berücksichtigt und auf Ebene der Dateisysteme aktiviert wird (die Festlegung für einzelne Verzeichnisse wird derzeit nicht unterstützt).
    • In BTRFS wurde die Parallelisierung von Operationen bei hoher Lese- und niedriger Schreiblast verbessert, die Zeit für die Transaktionsfestschreibung verkürzt und die Zeit für die Synchronisierung erheblich reduziert (von Minuten auf Dutzende von Sekunden). Es wurde die Möglichkeit hinzugefügt, Blöcke (bs) zu verwenden, die größer sind als die Seitengröße (ps).
    • In ksmbd (ein im Kernel betriebener SMB-Server) wurde ein Parameter zur Begrenzung der maximalen Anzahl von Verbindungen von einem hinzugefügt. IP-Adressen. smbdirect, smbclient und smbserver wurden auf die Verwendung typischer Kernelstrukturen umgestellt.
    • In SQUASHFS wurde die Möglichkeit zur Verwendung der Optionen SEEK_DATA und SEEK_HOLE im Systemaufruf lseek() zum Suchen von Daten und Lücken in spärlichen Dateien hinzugefügt. In einigen Tests wurde eine Leistungssteigerung beim Kopieren spärlicher Dateien von bis zu 150-fach festgestellt.
    • In EXFAT wurde die Unterstützung für ioctl FS_IOC_GETFSLABEL und FS_IOC_SETFSLABEL zum Lesen und Schreiben von Partitionslabels hinzugefügt. Es wurde die Möglichkeit geschaffen, die Einhängeoptionen während des erneuten Einhängens zu ändern. Das Laden von Bitmap-Dateien wurde beschleunigt.
    • In NTFS3 wurde die Unterstützung für ioctl FS_IOC_GETFSLABEL und FS_IOC_SETFSLABEL zum Lesen und Setzen von Partitionslabels hinzugefügt.
  • Speicher und Systemdienste
    • In die Sammlung aufgenommen wurde die Implementierung des Mechanismus zur zwischenprozesslichen Kommunikation Binder, der in Rust geschrieben wurde. Binder wird in Android zur Organisation der Interprozesskommunikation und des Remote-Methodenaufrufs verwendet (ein Android-Prozess kann eine Methode oder Funktion in einem anderen Android-Prozess aufrufen, indem er Binder zur Identifizierung, zum Aufruf und zur Argumentübermittlung zwischen Prozessen verwendet). Der Code von Binder wurde im Rahmen der Google-Initiative zur Verbesserung der Sicherheit von Android in Rust neu geschrieben.
    • Im SLUB, dem Kernel-Speicher-Allocator, wurde eine optionale Caching-Schicht namens "sheaves" implementiert, die mehrere Caches verwendet, von denen jeder an einen einzelnen CPU-Kern gebunden ist. Dies ermöglicht die Lokalisierung von Operationen zur Speicherzuweisung oder -freigabe durch einen Kern. Ein solches Caching hat die Leistung der Speicherzuweisung und -freigabe im Kernel verbessert, da damit überflüssige Synchronisationsprimitive vermieden werden, die erforderlich wären, um verschiedene CPU-Kerne einzubeziehen. In durchgeführten Tests betrug der Leistungszuwachs je nach Art der Last zwischen 6,3 % und 31 %.
    • Die Möglichkeit zur Erstellung von Dateideskriptoren, die mit einem bestimmten Namensraum (namespace) identifiziert sind, wurde hinzugefügt. Im Gegensatz zum Zugriff auf Namensräume über Identifikatoren ( /proc//ns/ ) wird der Dateideskriptor an eine bestimmte Instanz des Namensraums gebunden und schließt die Situation aus, in der der Identifikator erneut zugewiesen wird und bereits auf ein anderes Objekt verweist. Analog zur Verwendung von pidfds erfolgt das Öffnen von Dateideskriptoren, die auf Namensräume verweisen, über die Funktionen open_by_handle_at() und name_to_handle_at().
    • Ein Mechanismus namens "Swap Table" wurde implementiert, um die Leistung des Swappens zu erhöhen. Die Beschleunigung wird durch die Verringerung der Konkurrenz um den Zugriff auf den Swap-Cache, eine effizientere Suche im Cache und die Verringerung der Fragmentierung erreicht. Das Backend auf Basis der Swap Table wird anstelle des XArray-Backends zur Caching des Swappens verwendet und hat im Durchschnitt die Leistung um 5-20 % erhöht. Im Test usemem stieg die Durchsatzrate um 17-28 %, im Test zur mehrsträngigen Neukompilierung des Kernels verringerte sich die Kompilierungszeit um 1,12-3,19 %, und der Test redis-benchmark mit BGSAVE zeigte eine Zunahme der verarbeiteten Anfragen um 6-7 %.
    • Das Zswap-Subsystem wurde auf die direkte Verwendung des Speichermanagementsystems zsmalloc anstelle der nicht mehr verwendeten Schicht zpool umgestellt und aus dem Kernel entfernt.
    • Für die Steuerung des Verhaltens des Mikrocodes-Bootloaders auf x86-Systemen wurde die Option "microcode=Liste von Flags" in der Befehlszeile implementiert. In ihrer aktuellen Form ersetzt die neue Option "microcode.force_minrev" und ermöglicht es ebenfalls, die minimal zulässige Version des Mikrocodes, die geladen werden kann, festzulegen.
    • Die Arbeit an der Reorganisation der übermäßig aufgeblähten Struktur «page», die zur Verwaltung der Seiten des Arbeitsspeichers verwendet wird, hat begonnen. Ein Typ 'memdesc_flags_t' für Felder mit universellen Flags wurde hinzugefügt, die nach der in Zukunft erwarteten Auslagerung separater Strukturen für Slabs und Folios aus der Struktur «page» verwendet werden können.
    • Für die Architektur nios2, die in Altera Nios II-Prozessoren (Soft-Prozessor auf Basis von FPGA) verwendet wird, wurde die Unterstützung für den Systemaufruf clone3() implementiert.
    • Es wurde ein Attribut «transitional» zur Kernel-Konfiguration (KConfig) hinzugefügt, das verwendet werden kann, um Einstellungen zu kennzeichnen, die nicht in Benutzeroberflächen wie «make menuconfig» angezeigt werden und nicht in die generierten Konfigurationsdateien aufgenommen werden. Der Hauptzweck des Attributs besteht darin, die Umbenennung von Optionen zu vereinfachen, während die Abwärtskompatibilität erhalten bleibt.
    • Die Mindestversion des Compilers Clang, mit dem der Kernel kompiliert werden kann, wurde auf das LLVM-Toolset 15 angehoben. In Debian 12 und Ubuntu 22.04 wird LLVM 14 geliefert.
    • Der Transfer von Änderungen aus dem Rust-for-Linux-Zweig, die sich auf die Verwendung der Programmiersprache Rust als zweite Sprache zur Entwicklung von Treibern und Kernelmodulen beziehen, wurde fortgesetzt (die Unterstützung von Rust ist standardmäßig nicht aktiviert und führt nicht dazu, dass Rust zu den obligatorischen Build-Abhängigkeiten des Kernels gehört). In der neuen Version wurden atomare Speicheroperationen für Rust-Code, die Struktur Maple Tree, die Möglichkeit zur Erstellung von DebugFS-Dateien und Funktionen zur Manipulation von Bitmaps implementiert. Der Zugriff auf die API zur Entwicklung von Treibern wurde erweitert. Ein vollständiges Set von Abstraktionen für die Entwicklung von USB-Gerätetreibern wurde hinzugefügt (Beispiel eines USB-Treibers). In das Tool perf wurde Unterstützung für Debug-Symbole aufgenommen, die vom Compiler rustc generiert werden.
  • Virtualisierung und Sicherheit
    • Die Unterstützung für die kryptografische Verifizierung von geladenen BPF-Programmen durch digitale Signaturen wurde hinzugefügt. Zukünftig wird diese Möglichkeit durch Werkzeuge zur Definition von Regeln für das Laden von signierten BPF-Programmen und zur Bereitstellung der Möglichkeit für unprivilegierte Benutzer, verifizierte BPF-Programme zu verwenden, erweitert.
    • Der Hypervisor KVM unterstützt die Virtualisierungserweiterung Intel CET (Control-flow Enforcement Technology), die zum Schutz vor Exploits eingesetzt wird, die Methoden der Rückkehr-orientierter Programmierung (ROP — Return-Oriented Programming) verwenden. Der Schutz besteht darin, dass der Adressrückgabewert nach der Übergabe der Kontrolle an die Funktion nicht nur im normalen Stack, sondern auch in einem separaten Schatten-Stack gespeichert wird, der nicht direkt geändert werden kann.
    • Die Möglichkeit, mehr als 255 CPUs in Gastsystemen zu verwenden, die unter dem Hypervisor Bhyve auf Hosts mit FreeBSD 15 betrieben werden, wurde hinzugefügt.
    • Eine Schicht namens dibs (Direct Internal Buffer Sharing) wurde für die kontrollierte gemeinsame Nutzung von Buffern innerhalb einer isolierten Umgebung, wie einem Hypervisor oder einer Linux-Kernelinstanz, hinzugefügt.
    • Das Auditsystem unterstützt nun die gleichzeitige Verwendung mehrerer aktivierter LSM-Module (Linux Security Module).
    • Ein virtio-Treiber spi-virtio zum Zugriff auf ein SPI-Gerät (Serial Peripheral Interface) wurde hinzugefügt. virtuelle Maschinen.
    • Im Hypervisor KVM wurde die Unterstützung für den SEV-SNP CipherText Hiding-Modus hinzugefügt, der das Lesen des Chiffretexts des Speichers geschützter Gastsysteme auf nicht autorisierten CPUs blockiert.
    • Ein qtee-Treiber für TEE-Umgebungen (Trusted Execution Environment) von Qualcomm-Chips wurde hinzugefügt.
  • Netzwerksubsystem
    • Die Unterstützung für die Verschlüsselung von TCP-Verbindungen unter Verwendung des PSP-Protokolls (PSP Security Protocol), das von Google zum Verschlüsseln des Datenverkehrs zwischen Rechenzentren entwickelt wurde, wurde hinzugefügt. PSP bietet Verschlüsselung, kryptografische Integritätskontrolle und Authentifizierung der Quelle und realisiert eine Art Kombination der Fähigkeiten der Protokolle TLS und IPsec. PSP wendet Verschlüsselung auf der Ebene einzelner Netzwerkverbindungen und nicht auf dem gesamten Kommunikationskanal an. PSP verwendet separate Verschlüsselungsschlüssel für verschiedene tunneln TCP-Verbindungen zur strengen Isolation des Datenverkehrs zwischen unterschiedlichen Anwendungen und Prozessoren. Um die CPU-Last zu reduzieren, wird das Auslagern von Verschlüsselungs- und Entschlüsselungsoperationen auf Netzwerkadapter unterstützt. Zur Datenübertragung wird das UDP-Protokoll verwendet, über das der Inhalt des ursprünglichen TCP-Pakets transportiert wird.

      Release des Linux-Kernels 6.18
    • Die anfängliche Unterstützung der AccECN-Erweiterung (Accurate Explicit Congestion Notification) wurde hinzugefügt, die eine verbesserte Version der ECN-Erweiterung darstellt. Sie ermöglicht es Hosts, im Falle einer Überlastung IP-Pakete zu kennzeichnen, anstatt sie abzulehnen, was ermöglicht, den Beginn von Stau in Kommunikationskanälen ohne Paketverlust zu erkennen. Die ursprüngliche ECN-Erweiterung hat die Einschränkung, nur ein Überlastsignal pro TCP-Übertragungszyklus (RTT, Round-Trip Time, Anfrage senden und Antwort erhalten) zuzulassen. AccECN hebt diese Einschränkung auf und ermöglicht es dem Empfänger, dem Sender mehrere Überlastmarkierungen im TCP-Paketkopf zu übermitteln. Die Algorithmen zur Überlastkontrolle können die erhaltenen Informationen nutzen, um präziser auf Überlastungen zu reagieren und auf ein abruptes Absenken der Paketversandrate bei geringfügiger Überlastung zu verzichten.
    • Im UDP-Stack wurde die Verarbeitung eingehender Pakete unter DDoS-Attacken optimiert, die zu einer großen Anzahl von Paketen in einem oder mehreren UDP-Sockets führen. Die vorgenommenen Optimierungen, wie die Verringerung konkurrierender Sperren, die Optimierung der Platzierung von Datenstrukturen im Speicher und die Berücksichtigung von NUMA (Non-Uniform Memory Access) in den Sperren, haben die Leistung beim Empfang von UDP-Paketen unter extremen Bedingungen um 47 % und mehr verbessert.
    • Die Möglichkeit, die Eingabe-/Ausgabecache im NFS-Server zu deaktivieren, wurde implementiert, wodurch der Einsatz des NFS-Servers in Systemen mit begrenztem Arbeitsspeicher (z. B. in abgespeckten Cloud-Umgebungen) ermöglicht wird. Das Deaktivieren des Caches kann auch auf stark belasteten NFS-Servern nützlich sein, um zu verhindern, dass Daten, die mit lokalen Speichern verbunden sind, aus dem Cache verdrängt werden, um Speicherplatz für den NFS-Cache freizugeben.
    • Die maximale Größe der eingehenden und ausgehenden Pakete für Netzwerksockets (net.core.rmem_max und net.core.wmem_max) wurde von 2 MB auf 4 MB erhöht. Die standardmäßig festgelegte Größe blieb unverändert (net.core.rmem_default und net.core.wmem_default = 2 MB).
    • Ein Treiber für den Qualcomm PPE (Packet Processing Engine), der in SoCs wie dem Qualcomm IPQ9574 verwendet wird, wurde hinzugefügt.
  • Ausrüstung
    • Der Kern enthält den Tyr-Treiber, der in Rust geschrieben ist und die Arbeit mit GPUs der ARM Mali unterstützt, die die CSF-Technologie (Command Stream Frontend) verwenden, wie z.B. Mali G310, G510 und G710. Der Treiber ist derzeit noch nicht bereit für den dauerhaften Einsatz durch Endbenutzer und wird als experimenteller Prototyp zur Testung von Abstraktionen für die Entwicklung von Treibern in Rust betrachtet.
    • In die Treiber für Eingabegeräte mit HID-Schnittstelle (Human Interface Device) wurde die Unterstützung für Touchpads mit taktiler Rückmeldung und Druckkraftsensoren integriert.
    • Die Arbeit am drm-Treiber (Direct Rendering Manager) Xe für GPUs auf Basis der Intel Xe-Architektur, die in Grafikkarten der Intel Arc-Familie und integrierter Grafik ab den Tiger Lake-Prozessoren verwendet wird, wurde fortgesetzt. In der neuen Version wurde die madvise-Schnittstelle hinzugefügt, die Unterstützung für SR-IOV PF (Single Root I/O Virtualization Physical Function) aktiviert, die Unterstützung des Intel PSMI-Modus zur Validierung von Hardware bereitgestellt, die Verarbeitung über Firmware übermittelte Fehlerinformationen ermöglicht, ein SLPC-Stromprofil implementiert und die Unterstützung für das Laden von Hilfsfirmware (z.B. für den Lüftercontroller und Spannungsregler) während der Treiberprüfung hinzugefügt.
    • Im AMDGPU-Treiber wurde die Unterstützung für Geräte mit APU Cyan Skillfish hinzugefügt, die Unterstützung für AMD GCN 1.0 verbessert, die Kompatibilität mit dem Tool criu realisiert, und im sysfs wurden Temperaturmetriken hinzugefügt, während MMIO-Remap-Anfragen aus dem Benutzerspace erlaubt wurden.
    • Im i915-Treiber wurde die Unterstützung für Chips der Wildcat Lake-Familie hinzugefügt und die Leistung mit GPUs der Jasper Lake-, Elkhart Lake-, Gen7- und Gen6-Reihen verbessert.
    • Im Nouveau-Treiber werden standardmäßig die GSP-Firmwares von NVIDIA verwendet und die Fehlerverarbeitung wurde verbessert.
    • Die Integration der Nova-Treibers für NVIDIA-GPUs, die mit GSP-Firmwares ausgestattet sind und seit der NVIDIA GeForce RTX 2000-Serie mit der Turing-Mikroarchitektur verwendet werden, wurde fortgesetzt. Der Treiber ist in Rust geschrieben. In der neuen Version wurde die Unterstützung für GSP-Firmwares erweitert, die Implementierung des Makros „register!“ verbessert, die Unterstützung für PCI-Gerätekategorien und Herstelleridentifikatoren hinzugefügt.
    • Der Treiber rocket für NPU-Beschleuniger, die in SoCs der Rockchip RK3588 verwendet werden, wurde hinzugefügt.
    • Ein Kernel-Parameter „boot_display“ wurde hinzugefügt, um das Ausgabegerät für die Anzeige des Startvorgangs auf Systemen mit mehreren GPUs auszuwählen.
    • Der vesadrm-Treiber unterstützt nun 8-Bit-Paletten.
    • Im Treiber msm wurde die Unterstützung für die GPU Adreno 663 hinzugefügt und die Energieverbrauchsreduzierungstechnik IFPC (Inter Frame Power Collapse) implementiert.
    • Im Treiber panthor wurde die Unterstützung für die GPUs Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 und Mali-Gx25 hinzugefügt.
    • Die Unterstützung für die Audiosysteme ASoC Qualcomm Glymur und PM4125, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 und TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20, tas5825 wurde hinzugefügt. Die Unterstützung für die USB-Audiokarten Tascam US-144mkII und Presonus S1824c wurde ebenfalls hinzugefügt.
    • Die Unterstützung für ARM CPUs Cortex-A320/A520AE/A720AE und C1-Nano/Pro/Premium/Ultra wurde hinzugefügt.
    • Die Unterstützung für ARM-Plattformen, SoCs und Geräte wurde hinzugefügt: Apple M2 Pro, M2 Max und M2 Ultra, Sony Xperia SP, Samsung Galaxy S22, Samsung Galaxy S20 FE, ASUS Eee Pad Slider SL101, Lenovo ThinkBook 16, HP Omnibook X14 X1P42100, Dell Inspiron 7441 / Latitude 7455, Sige1, NanoPi Zero2, Axis Artpec8, NXP i.MX91, ROCK 2A/2F, Qualcomm Lemans Auto, Renesas RZ/T2H, RZ/N2H, RZ/T2H und RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP.

Zur gleichen Zeit hat die lateinamerikanische Free Software Foundation eine vollständig freie Kernel-Version 6.18 – Linux-libre 6.18-gnu, die von Elementen von Firmware und Treibern gereinigt wurde, die nicht freie Komponenten oder Codeabschnitte enthalten, deren Anwendung durch den Hersteller eingeschränkt ist, erstellt. In der Version 6.18 wurde der Code zur Reinigung von Blobs in den Treibern Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex aktualisiert. Die Reinigung der Blob-Namen in dts-Dateien (Device Tree) für ARM-Chips von Qualcomm, Mediatek und TI ARM64 wurde durchgeführt. Die Ladefunktion für Blobs in den neuen Treibern FourSemi fs2104/5s, TI TAS2783 und Qualcomm GENI wurde neutralisiert.

Quelle: opennet.ru

60GB SSD 8Gb DDR4