Linux 6.19

Linux 6.19

Nach zwei Monaten der Entwicklung präsentierte Linus Torvalds vor die Kernel-Version Linux 6.19. Zu den auffälligsten Änderungen gehören: das Live Update Orchestrator-Subsystem, Unterstützung von PCIe Link Encryption, der Systemaufruf listns, der Zero-Copy Receive-Modus in io_uring, Unterstützung für die ARM-Erweiterung MPAM, klp-build zur Erstellung von Live-Patchen, Unterstützung der LoongArch32-Architektur, QoS für s2idle, Optimierung des Auditsubsystems, Intel LASS zum Schutz vor Spectre, Unterstützung für die Hashes SHA-3 und BLAKE2b, der Confidential VMBus-Mechanismus, TX-Optimierungen im Netzwerk-Subsystem, das Protokoll CAN XL, API für Hardwarebeschleunigung von HDR-Ausgaben.

In der Ankündigung der neuen Version teilte Linus mit, dass die nächste Version des Kernels die Nummer 7.0 erhalten wird, da sich in der 6.x Reihe genügend Veröffentlichungen angesammelt haben, um die erste Zahl der Versionsnummer zu ändern (zu seiner Zeit wurde die Version 6.0 direkt nach 5.19 erstellt). Die Änderung der Nummerierung erfolgt aus ästhetischen Gründen und ist ein formeller Schritt, um das Unbehagen über die Ansammlung einer großen Anzahl von Veröffentlichungen in der Serie abzubauen. Linus machte einen Scherz darüber, dass ihn die großen Zahlen verwirren, für die es nicht genügend Finger an Händen und Füßen gibt. Dabei gibt es formal gesehen einen Grund für eine signifikante Änderung der Versionsnummer, da mit der nächsten Veröffentlichung die Unterstützung für Rust wurde beschlossen, von experimentellen in die Hauptfunktionen des Kernels übertragen werden soll.

In die neue Version wurden 15.657 Korrekturen von 2.237 Entwicklern mit einer Patchgröße von 52 MB aufgenommen (die Änderungen betrafen 13.682 Dateien, 794.649 Codezeilen wurden hinzugefügt, 335.498 Zeilen wurden entfernt). In der vorherigen Version gab es 15.035 Korrekturen von 2.217 Entwicklern mit einer Patchgröße von 45 MB. Rund 40 % aller in 6.19 enthaltenen Änderungen beziehen sich auf Gerätetreiber, etwa 13 % der Änderungen betreffen die Aktualisierung von architekturspezifischem Code, 12 % stehen im Zusammenhang mit dem Netzwerk-Stack, 5 % mit Dateisystemen und 3 % mit internen Subsystemen des Kernels.

Die Hauptnovitäten im Kernel 6.19 (1, 2, 3):

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
  • Speicher und Systemdienste
    • Im Kernel eingeschlossen Subsystem Live Update Orchestrator (LUO), das es ermöglicht, den Kernel vollständig neu zu starten und zu aktualisieren, ohne den Betrieb zu stoppen und den Zustand des Systems, der Geräte und Prozesse nicht zu verlieren. Das LUO-Subsystem basiert auf dem zuvor in den Kernel integrierten Mechanismus. KHO (Kexec HandOver) und zusätzlich zur Möglichkeit, einen neuen Kernel aus einem alten zu starten, ohne den Zustand des Systems zu verlieren, löst er Probleme wie das Speichern des Status von Geräten und RAM sowie die Gewährleistung der Kontinuität von Vorgängen, die mit DMA und Interrupt-Verarbeitung verbunden sind. Der Status wird bis zum Wechsel zum neuen Kernel gespeichert und nach der Aktivierung des neuen Kernels wiederhergestellt, ohne die kontinuierlichen Vorgänge mit den Geräten, die vom System und den Anwendungen im Benutzerspeicher durchgeführt werden, zu stören.

    • Hinzugefügt Der Systemaufruf listns() gibt eine Liste der bestehenden Namensräume im System aus, ohne dass es notwendig ist, /proc//ns/ für alle Prozesse zu durchlaufen.

    • Das System für asynchrone Ein- und Ausgabe io_uring hat die Unterstützung für die Platzierung von Elementen unterschiedlicher Größe in der Sendequeue (SQE, Submission Queue Entry) hinzugefügt, ähnlich wie im vorherigen Release das Mischen von Größen im Ergebnis-Queue (CQE, Completion Queue Event) erlaubt wurde. Zuvor mussten alle Elemente in der Warteschlange die gleiche Größe haben, was zu übermäßigem Speicherverbrauch führte, da die maximale Größe für alle Elemente in der Warteschlange verwendet werden musste.

      In io_uring wurde auch die Unterstützung für den Mechanismus zcrx (Zero-Copy Receive) hinzugefügt, um Daten ohne Kopieren zwischen Kernel und Benutzerspeicher zu empfangen. Darüber hinaus wurde die Unterstützung für Speicherlayout-Anfragen für die Queues SQ (Submission Queue) und CQ (Completion Queue) hinzugefügt, die Informationen über die Größe des Ringpuffers liefern, die beim Benutzer-Speichermanagement mit den Flags IORING_SETUP_NO_MMAP und IORING_MEM_REGION_TYPE_USER erforderlich sind.

    • Für eine schnelle Stack-Trace-Diagnose mit Tools wie perf wurde die Unterstützung für das SFrame-Format mit Informationen über das Entwirren des Aufruf-Stacks (unwind) hinzugefügt. SFrame wird bereits in GCC und binutils unterstützt, verringert nicht die Leistung und enthält im Gegensatz zum DWARF-Format nur den minimalen Informationssatz, der für die Stack-Verfolgung erforderlich ist.

    • In das Tool perf hinzugefügt wurde die Unterstützung für eine einheitliche Beschreibung von Metriken und Ereignissen im JSON-Format sowie das verzögerte Entwirren (deferred unwinding) des Aufruf-Stacks im Benutzerspeicher hinzugefügt.

    • Für von AMD-Prozessoren wurde ein Mechanismus zur Daten-Ersetzung im Cache implementiert, der es Eingabe-/Ausgabegeräten ermöglicht, Daten direkt in den L3-Cache der CPU einzufügen, ohne sie zuvor in den RAM zu legen.

    • Unterstützung hinzugefügt für MPAM (Memory System Resource Partitioning and Monitoring), Erweiterung der Architektur des ARMv8-A-Befehlssatzes zur Kennzeichnung jedes Speicherzugriffs mit einer Abschnittskennung (PARTID, Partition ID) und einer Überwachungsgruppenkennung (PMG, Monitoring Group ID). Im Zusammenhang mit der PARTID kann der Ressourcenverbrauch wie die Speicherbandbreite oder die Cache-Größe eingeschränkt werden, damit eine bestimmte Gruppe von Aufgaben nicht alle Ressourcen in Anspruch nimmt. Im Kontext der Überwachung kann die Kombination aus PMG und PARTID genutzt werden, um den Ressourcenverbrauch des Speichers bei bestimmten Arten von Lasten zu verfolgen.

    • Im Falle eines unerwarteten Prozessabbruchs nach Erhalt eines Signals kann ein anderer Prozess mit der pidfd des beendeten Prozesses jetzt die Signalnummer ermitteln, die zum Abbruch des Prozesses geführt hat.

    • Die Implementierung von wiederherstellbaren Sequenzen (restartable sequences), die es Anwendungen ermöglichen, eine pseudo-atomare ununterbrochene Ausführung einer Gruppe von Anweisungen zu organisieren (im Falle einer Unterbrechung durch einen anderen Thread wird ein erneuter Versuch unternommen, die Sequenz auszuführen). Die neue Implementierung zeichnet sich durch eine höhere Leistung aus.

    • Für BPF-Programme umgesetzt BPF_JMP, BPF_X und BPF_JA Anweisungen zur Durchführung indirekter Sprünge zu einer bestimmten Position in der Sprungtabelle. Es wurde das Konzept dynamischer Zeiger hinzugefügt (dynptr), die es ermöglichen, Daten aus strukturierten Dateien zu lesen. Hinzugefügt die Möglichkeit, mehreren Bytes mit Metadaten an Netzwerkpakete anzuhängen.

    • Python-Module, die zur Verarbeitung der Dokumentation des Kernels verwendet werden, wurden in ein separates Verzeichnis tools/lib/python verschoben.

    • Eine Funktion wurde hinzugefügt mempool_alloc_bulk() zum sicheren Zuweisen von Elementen aus einem Speicherpool auf einmal für mehrere Objekte.

    • Fortgesetzt Übertragung von Änderungen aus dem Branch Rust-for-Linux, die mit der Verwendung der Sprache Rust als zweite Sprache zur Entwicklung von Treibern und Kernelmodulen verbunden sind (die Unterstützung von Rust ist standardmäßig nicht aktiv und führt nicht dazu, dass Rust zu den erforderlichen Build-Abhängigkeiten des Kernels gehört). In der neuen Version umfasst der Kernel ist integriert die Bibliothek „syn» mit dem Rust-Code-Parser, der das Schreiben komplexer Makros vereinfacht. Die Funktionen der Bibliotheken kernel, pin-init und rbtree wurden erweitert. Eine Bibliothek num mit dem Trait Integer zur Manipulation ganzzahliger Werte wurde hinzugefügt. Das Makro module! unterstützt jetzt ganzzahlige Parameter. Es wurde die Möglichkeit implementiert, Parameter beim Laden von Kernelmodulen, die in Rust geschrieben wurden, anzugeben. Abstraktionen für Subsysteme wurden realisiert. I2C und PWM (Pulsweitenmodulation).

    • Hinzugefügt Das Makro at_least (z. B. param[at_least 7]), das über die minimal zulässige Größe des in die Funktion übergebenen Arrays informiert. Wenn ein Array mit weniger Elementen an die Funktion übergeben wird, gibt der Compiler eine Warnung aus.

    • Umfang ein neuer Display-Engine (DC) für AMD APU der Serie HD 7000 (Sea Islands, GCN 1.1) hinzugefügt. Das Skript klp-build zur Generierung von Kernelmodulen, die Änderungen an einem laufenden Kernel (livepatch) basierend auf einer Patchdatei vornehmen. Änderungen, die zur Erstellung von Live-Patches erforderlich sind, wurden in das Tool objtool aufgenommen.

    • Im User-Mode Linux (Ausführung des Kernels als Benutzerprozess) unterstützt jetzt eine eingeschränkte Mehrkernfähigkeit, wobei Threads innerhalb eines Prozesses derzeit jedoch nicht gleichzeitig ausgeführt werden können. Hat begonnen Portierung von User-Mode Linux auf die Bibliothek nolibc.

    • Hinzugefügt Unterstützung für die Architektur LoongArch32 (LA32R, LA32S) zusätzlich zu LoongArch64.

    • Hinzugefügt Die Möglichkeit, QoS-Grenzen für die Intensität des Aufwachens des Prozessors im Energiesparmodus einzustellen. s2idle (Suspend-To-Idle), das die Ausführung von Prozessen im Benutzermodus einfriert, während einige Handler im Kernel aktiv bleiben.

    • Hinzugefügt Unterstützung für das Management von Speicherseitentabellen für IOMMU (Input-Output Memory Management Unit), die die Übersetzung virtueller Adressen, die für das Hardwaregerät sichtbar sind, in physische Adressen durchführen, und dabei DMA-Operationen nach virtuellen Adressen filtern sowie E/A-Operationen einschränken und isolieren können.

    • In den Ereignissen der Systemaufrufverfolgung wurde die Möglichkeit realisiert, Puffer aus dem Benutzerspeicher zu lesen und deren Inhalt (z. B. Dateinamen) in das Verfolgungsergebnis aufzunehmen.

    • **Wachseiten des Speichers(( (Guard Page), auf die der Zugriff eine Ausnahme und das unerwartete Beenden des Prozesses (SIGSEGV) auslöst, werden jetzt mit einer speziellen Kennzeichnung in der Datei /proc/PID/smaps markiert. Die Möglichkeit,

    • Hinzugefügt große Speicherseiten (transparente große Seiten) im privaten Speicher zonierter Geräte zu verwalten. Im Gerät

    • zram , das für die komprimierte Speicherung eines Swap-Bereichs im Speicher verwendet wird,wurde die Unterstützung für die Auslagerung mehrerer „bio“-Strukturen (Block I/O) im Batch-Modus (Writeback Batching) hinzugefügt. wurde Enthalten ist die Schriftart

    • „Terminus 10×18“ „Terminus 10×18“, die die Lesbarkeit von Informationen auf Laptops mit mittlerer Auflösung (1440×900) verbessert.

    • Bedeutend optimiert Arbeit Auditsubsysteme – es wird eine Verringerung der Overheadkosten um die Hälfte festgestellt.

  • Virtualisierung und Sicherheit
    • Die Unterstützung der von Intel-Prozessoren bereitgestellten Funktion zur Trennung linearen Adressräume (LASS, linear address-space separation) wurde hinzugefügt, die eine hardwarebasierte Trennung der Adressbereiche des Benutzerraums und des Kernels zur Verbesserung der Sicherheit ermöglicht. Der Adressraum wird durch das höchstwertige Bit der Adresse getrennt – die Hälfte des Adressraums mit gesetztem höchstem Bit wird für den Kernel verwendet, während der untere Bereich für den Benutzerraum reserviert ist. In einer frühen Phase der Ausführung von Anweisungen (vor der spekulativen Ausführung) erfolgt eine Überprüfung der Berechtigung für den Zugriff aus dem Benutzerraum auf Adressen mit gesetztem höchstem Bit und umgekehrt. Diese Trennung ermöglicht es, Kernel-Speicherlecks in den Benutzerraum über Seitenkanäle zu blockieren, selbst bei spekulativer Ausführung von Anweisungen, was die Anwendung von LASS zum Schutz vor Angriffen der Klassen Meltdown und Spectre ermöglicht, ohne hohe Overheadkosten zu verursachen.
    • Die Möglichkeit zur Aktivierung wurde hinzugefügt Erweiterungen zur Verbesserung der Sicherheit des PCI Express-Busses – PCIe Link Encryption und PCIe Device Authentication, die die Authentizität bestätigen und den Kommunikationskanal zwischen dem PCIe-Gerät und der durch Intel TDX (Trusted Domain Extensions) und AMD SEV-SNP (Secure Nested Paging) geschützten virtuellen Maschine verschlüsseln. Die implementierten Technologien verhindern das Abfangen, Analysieren und Manipulieren von Daten im DMA-Datenverkehr, wenn Zugriff auf das Hostsystem oder andere Geräte besteht.
    • In die eingebettete Kryptografiebibliothek hinzugefügt wurde Unterstützung für die Algorithmen SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 und BLAKE2b hinzugefügt.
    • Für LSM-Module (Linux Security Modules) und insbesondere für SELinux wurde wurde die Möglichkeit hinzugefügt, die Erstellung von Deskriptoren memfd zu verfolgen, um Sicherheitsrichtlinien auf die damit verbundenen Objekte anzuwenden.
    • Im LSM-Modul IPE (Integrity Policy Enforcement), das die allgemeine Richtlinie zur Gewährleistung der Integrität des gesamten Systems definiert, wurde Unterstützung für das Flag AT_EXECVE_CHECK in der Funktion execveat(), das die Überprüfung der Integrität des Skripts vor dessen Ausführung durch den Interpreter umfasst.
    • Es wurden die Primitiven scoped_user_read_access(), scoped_user_write_access und scoped_user_rw_access() für den eingeschränkten Zugriff auf Daten im Benutzerspeicherbereich mit Schutz vor spekulativen Angriffen hinzugefügt.
    • Hinzugefügt Unterstützung des Mechanismus Confidential VMBus, der im Hypervisor HyperV für den vor Manipulation geschützten Austausch zwischen einem Gastbetriebssystem, das im vertraulichen Modus (mit Speicherverschlüsselung und Registerisolation basierend auf den Technologien AMD SNP und Intel TDX) ausgeführt wird, und dem Paravisor, der für den Zugriff auf Geräte, die vertrauliche Daten verarbeiten, verantwortlich ist, verwendet wird.
    • Hinzugefügt Die Möglichkeit, Informationen über einen abgestürzten Prozess (zur Generierung eines Coredumps) über den Mechanismus pidfd zu übertragen. Die PIDFD-ID wird mit einem bestimmten Prozess verknüpft und ändert sich nicht, während die PID nach dem Abschluss des aktuellen, mit dieser PID assoziierten Prozesses einem anderen Prozess zugeordnet werden kann. Die Verwendung von pidfd ermöglicht es, zu blockieren, Angriffe das Ersetzen eines abgestürzten SUID-Prozesses durch einen anderen Prozess zu verhindern, um einen Zustand der Datenrasse zu erreichen, nachdem die Verarbeitung des Notfalls durch den Kernel begonnen hat, aber bevor der Handler im Benutzerspeicherbereich die Parameter des Prozesses überprüft.
  • Netzwerksubsystem
    • Im Netzwerk-Subsystem wurden Optimierungen, um die Effizienz der Datenübertragung (TX) zu steigern. Die Beseitigung der Spinlocks in der Funktion __dev_queue_xmit() und die Verwendung der sperrfreien Struktur llist ermöglichten bei hoher Last eine vierfache Leistung und eine doppelte Paketversandintensität bei reduzierter CPU-Last zu erreichen.
    • Bereitgestellt die Möglichkeit die Deaktivierung für einzelne Netzwerk-Sockets Systemlimits für die Speichernutzung (in diesem Fall werden allgemeine Speicherlimits verwendet, die für einzelne Container festgelegt sind). Zur Verwaltung der Deaktivierung von Limits wurde der Sysctl net.core.bypass_prot_mem und das Flag SK_BPF_BYPASS_PROT_MEM in der Funktion bpf_setsockopt vorgeschlagen.
    • Hinzugefügt Unterstützung der Erweiterung RFC 5837, das in ICMP-Nachrichten Time Exceeded, die bei Ablauf der Lebensdauer (TTL) eines Pakets zurückgegeben werden, Informationen über eingehende Netzwerk-Interfaces hinzufügt, um detailliertere Informationen bei der Routenverfolgung mit dem Tool traceroute zu erhalten.
    • Hinzugefügt Unterstützung für kontinuierliches aktives Polling (busy polling) in einem separaten Kernel-Thread, um Deskriptoren aus den RX/TX-Warteschlangen für Anwendungen, die minimale Verzögerungen erfordern, zu extrahieren.
    • Unterstützung für das Protokoll CAN XL (Controller Area Network eXtended Length), in dem die Datengröße auf 2048 Bytes erhöht wurde, um die Integration mit TCP/IP-Netzwerken zu gewährleisten, wurde die Möglichkeit des Tunnelns von Ethernet-Frames implementiert und Unterstützung hinzugefügt. Pulsweitenmodulation, die Datenraten von 20 Mbit/s und höher ermöglicht.
    • Hinzugefügt Unterstützung der Struktur sockaddr_unsized, einer Variante der sockaddr-Struktur, die ein Array mit flexiblen Elementen anstelle eines Arrays fester Größe (sa_data[] anstelle von sa_data[14], das im Wesentlichen für Verweise auf andere Strukturen größerer Größe verwendet wurde).
    • Die Funktionalität von getsockname und getpeername wurde über das io_uring-Subsystem hinzugefügt.
    • Es wurden sysctl net.ipv4.tcp_rcvbuf_low_rtt und net.ipv4.tcp_comp_sack_rtt_percent für die Optimierung von TCP hinzugefügt.
    • Hinzugefügt Unterstützung von Verbindungen mit einer Bandbreite von 1600 Gbps (1,6T).
  • Ausrüstung
    • Im DRM (Direct Rendering Manager)-Subsystem wurde eine API hinzugefügt, die die Hardwarefähigkeiten zur Farbwandlung nutzt, sodass solche Wandlungen nicht mehr über Shader oder CPU-Code ausgeführt werden müssen. Für die Ausgabe von Inhalten auf einem HDR-Monitor können komplexe Farbwandlungen jetzt vom Display-Controller vor und nach dem Mischen der Schichten (Blending) durchgeführt werden, anstelle von softwareseitigem Compositing der Inhalte in einem endgültigen Frame-Puffer. Neben der Reduzierung der Overhead- und Energieverbrauch bei der HDR-Ausgabe kann die angebotene Funktionalität auch für eine korrekte Farbübertragung in Video- oder Bildbearbeitungsprogrammen genutzt werden.
    • Hinzugefügt Treiber ethosu für NPU Arm Ethos U65 und U85, die für die Hardwarebeschleunigung von AI-Modellen vorgesehen sind.
    • Im i915-Treiber für GPUs der Lunar Lake-Serie und neuer wurde Unterstützung für die Hardwarebildschärfung (Sharpening) hinzugefügt.
    • Fortgesetzt die Arbeit am drm-Treiber (Direct Rendering Manager) Xe für GPUs auf Basis der Intel Xe-Architektur, die in den Grafikkarten der Intel Arc-Serie und der integrierten Grafik seit den Tiger Lake-Prozessoren verwendet wird. Erste Unterstützung für die Xe3P-Architektur wurde hinzugefügt, die in der GPU Crescent Island und der Familie von Prozessoren mit integrierter Grafik Nova Lake verwendet wird.
    • Der AMDGPU-Treiber bietet vollständige Unterstützung für AMD-Grafikkarten der GCN 1.0 „Southern Island“ und 1.1 „Sea Islands“, für die zuvor der Radeon-Treiber verwendet wurde. Der AMDGPU-Treiber wurde auf das Niveau des Radeon-Treibers gebracht und ist für die genannten GPUs standardmäßig aktiviert. GCN 1.x-Karten wurden von 2012 bis 2019 hergestellt und umfassen Modelle wie Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 und andere Grafikkarten der Radeon Rx 200/Rx 300-Familien. Neben der Erhöhung der Leistung um durchschnittlich 24% ermöglichte der Übergang zu AMDGPU die Unterstützung der Grafik-API Vulkan 1.3 für diese GPUs. Darüber hinaus wurde im AMDGPU Unterstützung für analoge Anschlüsse und Video Coding Engine 1.0 hinzugefügt, und standardmäßig wird der DC-Stack (Display Core) für GPUs auf Basis der Mikroarchitektur Bonaire (Radeon HD 7790) verwendet.
    • Im Nouveau-Treiber wurde wurde die Unterstützung des Hardwarebeschleunigers NVJPG implementiert, der im SoC Tegra210 vorhanden ist.
    • Im Panthor-Treiber hinzugefügt wurde die Unterstützung des Mali-G1-GPUs und eine erste Unterstützung des MediaTek MT8196-Chips hinzugefügt.
    • Hinzugefügt Unterstützung für die Sound-Subsysteme der Intel Nova Lake S-Chips, HP-Laptops mit HDA CS35L41 sowie Soundinterfaces wie CIX IPBLOQ HD und Onkyo SE-300PCIE wurde implementiert.
    • Die Integration der Nova-Treiberkomponenten für NVIDIA-GPUs, die mit GSP-Firmwares ausgestattet sind, die seit der NVIDIA GeForce RTX 2000-Serie auf Basis der Turing-Mikroarchitektur verwendet werden, wurde fortgesetzt. Der Treiber ist in Rust geschrieben. In der neuen Version begann die Arbeit an RPC und beendet der Implementierung des GSP (GPU System Processor) Co-Prozessors.
    • Hinzugefügt Unterstützung für ARM-Plattformen, SoCs und Geräte: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 Varianten von Enclustra Mercury-Platinen.
    • Die Unterstützung für Smartphones und Tablets auf Basis des SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) und Qualcomm MSM8939 (ASUS ZenFone 2) wurde hinzugefügt. Die Unterstützung für Laptops auf SoC Qualcomm sdm850, wie das Huawei MateBook E 2019, wurde hinzugefügt.
    • Unterstützung von SoCs und Platinen auf Basis der RISC-V-Architektur hinzugefügt: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Gleichzeitig hat die lateinamerikanische Free Software Foundation ein vollständig freies Kernels 5.6 Variante vollständig freies Kernel 6.19Linux-libre 6.19-gnu, bereinigt von Elementen von Firmware und Treibern, die nicht freies Material oder Codeabschnitte enthalten, deren Anwendung vom Hersteller eingeschränkt ist. In der Version 6.19 des SDCA-Audiosystems wurde der Code für das Laden von binären Firmware-Dateien entfernt. Der Code zur Bereinigung von Blobs in den Treibern Intel XE, Nova-Core, Qualcomm Iris, Venus und Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 und den Audio-Codecs TI tas2783 wurde aktualisiert. Die Bereinigung der Blob-Namen in dts-Dateien (Device Tree) für ARM-Chips wurde durchgeführt. Die Bereinigung des Treibers STM C8SECTPFE DVB, der aus dem Kernel entfernt wurde, wurde eingestellt.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4