Kernel-Version Linux 5.6

Nach zwei Monaten Entwicklungszeit hat Linus Torvalds eingeführt Kernel-Release Linux 5.6Zu den bemerkenswertesten Änderungen zählt die Integration einer VPN-Schnittstelle. WireGuard, USB4-Unterstützung, Zeit-Namespaces, die Möglichkeit, TCP-Staubehandler mit BPF zu erstellen, erste Unterstützung für MultiPath TCP, eine Kernel-Korrektur für das Jahr-2038-Problem, der "bootconfig"-Mechanismus, ZoneFS.

Die neue Version enthält 13702 Fixes von 1810 Entwicklern,
Patchgröße - 40 MB (Änderungen betrafen 11577 Dateien, 610012 Codezeilen wurden hinzugefügt,
294828 Zeilen entfernt). Etwa 45 % aller in 5.6 vorgestellten Fälle
Änderungen beziehen sich auf Gerätetreiber, etwa 15 % der Änderungen
Einstellung zur Aktualisierung von Hardware-Architektur-spezifischem Code, 12 %
bezogen auf den Netzwerk-Stack, 4 % auf Dateisysteme und 3 % auf interne
Kernel-Subsysteme.

Haupt- Innovationen:

  • Netzwerk-Subsystem
    • Hinzugefügt von Implementierung einer VPN-Schnittstelle WireGuard, das auf modernen Verschlüsselungsmethoden (ChaCha20, Poly1305, Curve25519, BLAKE2s) basiert, ist benutzerfreundlich, unkompliziert, hat sich in zahlreichen großen Implementierungen bewährt und bietet eine sehr hohe Leistung (3,9-mal schneller). OpenVPN (durch den Durchsatz). In WireGuard Es wird das Konzept des Verschlüsselungsschlüssel-Routings verwendet, bei dem jeder Netzwerkschnittstelle ein privater Schlüssel zugeordnet und zur Verknüpfung öffentliche Schlüssel verwendet werden. Der Austausch öffentlicher Schlüssel zum Verbindungsaufbau ähnelt dem von SSH. Notwendig für den Betrieb WireGuard kryptographische Primitive waren überführt aus der Bibliothek Zink als Teil der Standard-Crypto-API und enthalten in den Kern 5.5.
    • Gestartet Integration von Komponenten, die zur Unterstützung von MPTCP (MultiPath TCP) erforderlich sind, einer Erweiterung des TCP-Protokolls zur Organisation des Betriebs einer TCP-Verbindung mit der gleichzeitigen Zustellung von Paketen auf mehreren Routen über verschiedene Netzwerkschnittstellen, die unterschiedlichen IP-Adressen zugeordnet sind. Für Netzwerkanwendungen sieht eine solche aggregierte Verbindung wie eine normale TCP-Verbindung aus und die gesamte Flusstrennungslogik wird von MPTCP ausgeführt. Multipath TCP kann sowohl zur Erhöhung des Durchsatzes als auch zur Erhöhung der Zuverlässigkeit verwendet werden. Beispielsweise kann MPTCP verwendet werden, um die Datenübertragung auf einem Smartphone über WLAN- und 4G-Verbindungen gleichzeitig zu organisieren oder um Kosten zu senken, indem ein Server über mehrere günstige Verbindungen anstelle einer teuren Verbindung verbunden wird.
    • Hinzugefügt von Unterstützung der Netzwerkwarteschlangenverarbeitungsdisziplin sch_ets (Erweiterte Übertragungsauswahl, IEEE 802.1Qaz), das die Möglichkeit bietet, die Bandbreite zwischen verschiedenen Verkehrsklassen zu verteilen. Wenn die Belastung einer bestimmten Verkehrsklasse unter der zugewiesenen Bandbreite liegt, erlaubt das ETS anderen Verkehrsklassen, die verfügbare (ungenutzte) Bandbreite zu nutzen. Qdisc sch_ets ist als PRIO-Disziplin konfiguriert und verwendet Verkehrsklassen, um strenge und gemeinsame Bandbreitengrenzen zu definieren. ETS arbeitet als Kombination verschiedener Disziplinen FRÜHERE и DRR — Wenn es streng begrenzte Verkehrsklassen gibt, wird PRIO verwendet, aber wenn kein Verkehr in der Warteschlange ist, funktioniert es wie DRR.
    • Ein neuer Typ von BPF-Programmen hinzugefügt BPF_PROG_TYPE_STRUCT_OPS, mit dem Sie Kernel-Funktionshandler über BPF implementieren können. Derzeit kann diese Funktion bereits zur Implementierung von TCP-Überlastungskontrollalgorithmen in Form von BPF-Programmen verwendet werden. Als Beispiel vorgeschlagen BPF-Programm mit Algorithmusimplementierung DCTCP.
    • In den Kern aufgenommen Veränderungen, Übersetzungswerkzeuge ethtool mit ioctl() zu verwenden Netlink-Schnittstelle. Die neue Schnittstelle erleichtert das Hinzufügen von Erweiterungen, verbessert die Fehlerbehandlung, ermöglicht das Senden von Benachrichtigungen bei Statusänderungen, vereinfacht die Interaktion zwischen Kernel und Benutzerbereich und reduziert die Anzahl der benannten Listen, die synchronisiert werden müssen.
    • Implementierung des Netzwerkwarteschlangenverwaltungsalgorithmus FQ-PIE (Flow Queue PIE) hinzugefügt, der darauf abzielt, die negativen Auswirkungen der Zwischenpufferung von Paketen auf Edge-Netzwerkgeräte (Bufferbloat) zu reduzieren. FQ-PIE zeigt eine hohe Effizienz beim Einsatz in Systemen mit Kabelmodems.
  • Festplattensubsystem, E/A und Dateisysteme
    • Für Btrfs-Dateisystem hinzugefügt asynchrone Implementierung der DISCARD-Operation (Markierung freigegebener Blöcke, die nicht mehr physisch gespeichert werden müssen). Anfänglich wurden DISCARD-Vorgänge synchron ausgeführt, was zu Leistungseinbußen führen konnte, da die Laufwerke auf den Abschluss der entsprechenden Befehle warteten. Durch die asynchrone Implementierung müssen Sie nicht warten, bis das Laufwerk DISCARD abgeschlossen hat, und können diesen Vorgang im Hintergrund ausführen.
    • In XFS ausgetragen Bereinigen von Code, der alte 32-Bit-Zeitzähler verwendete (der Typ time_t wurde durch time64_t ersetzt), was zum 2038-Problem führte. Fehler und Speicherbeschädigungen behoben, die auf 32-Bit-Plattformen auftraten. Der Code wurde überarbeitet, um mit erweiterten Attributen zu arbeiten.
    • Zum ext4-Dateisystem trat ein Leistungsoptimierungen im Zusammenhang mit der Handhabung von Inode-Sperren bei Lese- und Schreibvorgängen. Verbesserte Leistung beim Überschreiben im Direct-I/O-Modus. Der erste und letzte Fehlercode werden nun im Superblock gespeichert, um die Problemdiagnose zu vereinfachen.
    • Auf dem F2FS-Dateisystem umgesetzt Die Möglichkeit, Daten komprimiert zu speichern. Für einzelne Dateien oder Verzeichnisse kann die Komprimierung mit dem Befehl „chattr +c file“ oder „chattr +c dir; touch dir/file“ aktiviert werden. Um eine ganze Partition zu komprimieren, kann das Mount-Dienstprogramm die Option „-o compress_extension=ext“ verwenden.
    • Der Kernel enthält ein Dateisystem ZoneFS, was die Arbeit auf niedriger Ebene mit Zonenspeichergeräten vereinfacht. Bei in Zonen unterteilten Laufwerken handelt es sich um Geräte auf magnetischen Festplatten oder NVMe-SSDs, deren Speicherplatz in Zonen unterteilt ist, die Gruppen von Blöcken oder Sektoren bilden, in denen nur das sequentielle Hinzufügen von Daten zulässig ist, wodurch die gesamte Blockgruppe aktualisiert wird. FS ZoneFS wurde von Western Digital entwickelt und ordnet jeder Zone im Laufwerk eine separate Datei zu, die zum Speichern von Daten im Rohmodus ohne Manipulation auf Sektor- und Blockebene verwendet werden kann, d. h. Ermöglicht Anwendungen die Verwendung der Datei-API, anstatt direkt über ein IOCTL auf das Blockgerät zuzugreifen.
    • Das Mounten von Partitionen über UDP ist in NFS standardmäßig deaktiviert. Unterstützung für das direkte Kopieren von Dateien zwischen Servern, wie in der NFS 4.2-Spezifikation definiert, wurde hinzugefügt. Die neue Mount-Option „softreval“ ermöglicht die Verwendung zwischengespeicherter Attributwerte bei einem Serverausfall. Ist diese Option beispielsweise aktiviert, bleibt die Möglichkeit, in der NFS-Partition zu navigieren und auf im Cache abgelegte Informationen zuzugreifen, auch nach Serverausfall bestehen.
    • Ausgetragen Optimierung der Leistung des fs-verity-Mechanismus zur Kontrolle der Integrität und Authentizität einzelner Dateien. Erhöhte sequentielle Lesegeschwindigkeit dank der Verwendung des Merkle-Hash-Baums. Optimierte FS_IOC_ENABLE_VERITY-Leistung bei fehlenden Daten im Cache (präemptives Lesen von Seiten mit Daten wird verwendet).
  • Virtualisierung und Sicherheit
    • Die Möglichkeit, das SE-Modul zu deaktivieren, ist veraltet.Linux während des Betriebs und auch zukünftig die Entladung bereits aktivierter SELinux wird verboten. Um SE zu deaktivierenLinux Sie müssen den Parameter "selinux=0" in der Kernel-Befehlszeile angeben.
    • Hinzugefügt von Unterstützung für Namespaces für Zeit (Zeit-Namespaces), sodass Sie den Status der Systemuhr an den Container binden können (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), verwenden Sie Ihre eigene Zeit im Container und stellen Sie bei der Migration des Containers auf einen anderen Host sicher, dass die Messwerte von CLOCK_MONOTONIC und CLOCK_BOOTTIME unverändert bleiben (berücksichtigen Sie die Zeit nach dem Laden, mit oder ohne Berücksichtigung des Ruhezustands). ).
    • Der Blockierungspool /dev/random wurde entfernt. Das Verhalten von /dev/random ähnelt dem von /dev/urandom hinsichtlich der Verhinderung einer Entropieblockierung nach der Poolinitialisierung.
    • Der Kernel enthält einen Treiber, der es Gastsystemen, die unter VirtualBox laufen, ermöglicht, von der Hostumgebung exportierte Verzeichnisse einzubinden (VirtualBox Shared Folder).
    • Dem BPF-Subsystem wurde eine Reihe von Patches hinzugefügt (BPF-Dispatcher), wenn Sie den Retpoline-Mechanismus zum Schutz vor Angriffen der Spectre V2-Klasse verwenden, können Sie die Effizienz des Aufrufs von BPF-Programmen erhöhen, wenn damit verbundene Ereignisse auftreten (z. B. ermöglicht es die Beschleunigung des Aufrufs von XDP-Handlern, wenn a Netzwerkpaket kommt an).
    • Treiber zur Unterstützung von TEE (Trusted Execution Environment) hinzugefügt, das in AMD-APUs integriert ist.
  • Speicher- und Systemdienste
    • BPF unterstützt nun globale Funktionen. Dies ist Teil einer Initiative zur Unterstützung von Funktionsbibliotheken, die in BPF-Programme integriert werden können. Der nächste Schritt ist die Unterstützung dynamischer Erweiterungen, die das Laden globaler Funktionen ermöglichen und bestehende globale Funktionen während der Verwendung ersetzen. Das BPF-Subsystem unterstützt außerdem eine Variante der Map-Operation (zum Speichern persistenter Daten), die im Batchmodus ausgeführt werden kann.
    • Verfasst am Mit dem Gerät „cpu_cooling“ können Sie eine überhitzte CPU kühlen, indem Sie sie für kurze Zeit in den Ruhezustand versetzen.
    • Systemaufruf hinzugefügt openat2(), das eine Reihe zusätzlicher Flags zur Begrenzung der Dateipfadauflösung bietet (Verbot des Überquerens von Mount-Punkten, symbolische Links, magische Links (/proc/PID/fd), „../“-Komponenten).
    • Bei heterogenen Systemen, die auf der big.LITTLE-Architektur basieren und leistungsstarke und weniger produktive energieeffiziente CPU-Kerne in einem Chip kombinieren, wird der Parameter uclamp_min bei der Ausführung von Echtzeitaufgaben festgelegt (erschienenШшся im Kernel 5.3 gibt es einen Mechanismus zur Ladungssicherung). Dieser Parameter stellt sicher, dass die Aufgabe vom Scheduler auf einem CPU-Kern mit ausreichender Leistung platziert wird.
    • Der Kernel wird befreit von Probleme des Jahres 2038. Die letzten verbleibenden Handler wurden ersetzt, die einen 32-Bit-Time_t-Typ (signed int) für den epochalen Zeitzähler verwendeten, der laut Bericht von 1970 im Jahr 2038 überlaufen sollte.
    • Kontinuierliche Verbesserung der asynchronen E/A-Schnittstelle io_uring, indem zur Verfügung gestellt Unterstützung für neue Operationen: IORING_OP_FALLOCATE (leere Bereiche reservieren), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (Dateien öffnen und schließen),
      IORING_OP_FILES_UPDATE (Hinzufügen und Entfernen von Dateien zur Schnellzugriffsliste),
      IORING_OP_STATX (Dateiinformationsanforderung),
      IORING_OP_READ,
      IORING_OP_WRITE (vereinfachte Analoga von IORING_OP_READV und IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynchrone Varianten von posix_fadvise- und madvise-Aufrufen), IORING_OP_SEND,
      IORING_OP_RECV (Senden und Empfangen von Netzwerkdaten),
      IORING_OP_EPOLL_CTL (Operationen an Epoll-Dateideskriptoren ausführen).
    • Systemaufruf hinzugefügt pidfd_getfd(), wodurch ein Prozess einen Dateideskriptor für eine geöffnete Datei von einem anderen Prozess abrufen kann.
    • Umgesetzt der „bootconfig“-Mechanismus, der es zusätzlich zu den Befehlszeilenoptionen ermöglicht, die Parameter des Kernels über eine Einstellungsdatei zu bestimmen. Um solche Dateien zum initramfs-Image hinzuzufügen, wird das Dienstprogramm bootconfig vorgeschlagen. Diese Funktion kann beispielsweise verwendet werden, um kprobes beim Booten zu konfigurieren.
    • Neu gestaltet ein Mechanismus zum Warten auf das Schreiben und Lesen von Daten in unbenannten Pipes. Durch die Änderung konnten Aufgaben wie die parallele Montage großer Projekte beschleunigt werden. Allerdings kann die Optimierung aufgrund eines Fehlers in der Version 4.2.1, der in Version 4.3 behoben wurde, zu einer Race-Bedingung in GNU Make führen.
    • Zu prctl() wurde ein PR_SET_IO_FLUSHER-Flag hinzugefügt, das verwendet werden kann, um Prozesse zu markieren, die Speicher freigeben, sodass sie keinen Beschränkungen hinsichtlich des geringen Speichers unterliegen.
    • Basierend auf der in verwendeten Technologie Android Das ION-Speicherverwaltungssystem verfügt über ein implementiertes Subsystem. dma-buf-Heaps, mit dem Sie die Zuweisung von DMA-Puffer für die gemeinsame Nutzung von Speicherbereichen zwischen Treibern, Anwendungen und verschiedenen Subsystemen steuern können.
  • Hardware-Architekturen
    • Unterstützung für die in ARMv0 eingeführte E8.5PD-Erweiterung hinzugefügt, die Schutz vor Angriffen im Zusammenhang mit der spekulativen Ausführung von Befehlen in der CPU ermöglicht. E0PD-basierter Schutz führt zu einem geringeren Overhead als KPTI-Schutz (Kernel Page Table Isolation).
    • Für Systeme, die auf der ARMv8.5-Architektur basieren, wurde Unterstützung für den RNG-Befehl hinzugefügt, der Zugriff auf einen Hardware-Pseudozufallszahlengenerator ermöglicht. Im Kernel wird der RNG-Befehl verwendet, um Entropie zu erzeugen, wenn der vom Kernel bereitgestellte Pseudozufallszahlengenerator initialisiert wird.
    • Die im Kernel hinzugefügte Unterstützung für MPX (Memory Protection Extensions) wurde entfernt 3.19 und ermöglicht Ihnen, die Überprüfung von Zeigern zu organisieren, um sicherzustellen, dass die Grenzen von Speicherbereichen eingehalten werden. Diese Technologie war in Compilern nicht weit verbreitet und wurde aus GCC entfernt.
    • Für die RISC-V-Architektur wurde Unterstützung für das Debugging-Tool KASan (Kernel Address Sanitizer) implementiert, das die Erkennung von Fehlern bei der Arbeit mit dem Speicher ermöglicht.
  • Ausrüstung
    • Spezifikationsunterstützung implementiert USB 4.0, das auf dem Thunderbolt 3-Protokoll basiert und einen Durchsatz von bis zu 40 Gbit/s bietet und gleichzeitig abwärtskompatibel mit USB 2.0 und USB 3.2 ist. Ähnlich wie Thunderbolt Die USB 4.0-Schnittstelle ermöglicht das Tunneln verschiedener Protokolle über ein einziges Kabel mit einem Stecker USB-CDies umfasst PCIe, DisplayPort und USB 3.x sowie Software-Implementierungen von Protokollen, beispielsweise für die Herstellung von Netzwerkverbindungen zwischen Hosts. Die Implementierung basiert auf den bereits im Kernel enthaltenen Komponenten. Linux Der Thunderbolt-Treiber wurde aktualisiert und für die Verwendung mit USB4-kompatiblen Hosts und Geräten angepasst. Die Änderungen erweitern die Software-Implementierung des Verbindungsmanagers, der für die Erstellung von Tunneln zum Anschluss mehrerer Geräte über einen einzigen Port zuständig ist, um die Unterstützung von Thunderbolt-3-Geräten.
    • Im AMDGPU-Treiber hinzugefügt anfängliche Unterstützung für die Kopierschutztechnologie HDCP 2.x (High-bandwidth Digital Content Protection). Unterstützung für den AMD Pollock ASIC-Chip basierend auf Raven 2 hinzugefügt. Die Möglichkeit zum Zurücksetzen der GPU für die Renoir- und Navi-Familien wurde implementiert.
    • DRM-Treiber für Intel-Grafikkarten hinzugefügt DSI VDSC-Unterstützung für Chips basierend auf der Ice Lake- und Tiger Lake-Mikroarchitektur, LMEM mmap (Gerätelokaler Speicher) implementiert, VBT-Analyse (Video BIOS Table) verbessert, HDCP 2.2-Unterstützung für Coffee Lake-Chips implementiert.
    • Die Arbeit an der Vereinheitlichung des amdkfd-Treibercodes (für diskrete GPUs wie Fiji, Tonga, Polaris) mit dem amdgpu-Treiber wurde fortgesetzt.
    • Der k10temp-Treiber wurde überarbeitet, um die Ausgabe von Spannungs- und Stromparametern für AMD Zen-CPUs sowie erweiterte Informationen von Temperatursensoren zu unterstützen, die in Zen- und Zen 2-CPUs verwendet werden.
    • Im Nouveau-Treiber hinzugefügt Unterstützung für den verifizierten Firmware-Download-Modus für NVIDIA-Grafikprozessoren basierend auf der Turing-Mikroarchitektur (GeForce RTX 2000), wodurch die 3D-Beschleunigung für diese Karten aktiviert werden konnte (erfordert den Download der offiziellen Firmware mit digitaler Signatur von NVIDIA). Unterstützung für die TU10x-Grafik-Engine hinzugefügt. Probleme mit HD-Audio behoben.
    • Unterstützung für Datenkomprimierung bei der Übertragung über DisplayPort MST (Multi-Stream Transport) hinzugefügt.
    • Neuer Treiber hinzugefügt "at11k» für Qualcomm Wireless-Chips mit 802.11ax-Unterstützung.
      Der Treiber basiert auf dem mac80211-Stack und unterstützt die Modi Access Point, Workstation und Mesh-Netzwerkknoten.
    • Über sysfs wird Zugriff auf lesbare Temperatursensorwerte bereitgestellt, die auf modernen Festplatten und SSDs verwendet werden.
    • beigetragen Wesentliche Änderungen am ALSA-Soundsystem, die darauf abzielen, den Code zu beseitigen Probleme des Jahres 2038 (Vermeidung der Verwendung des 32-Bit-Typs time_t in den Schnittstellen snd_pcm_mmap_status und snd_pcm_mmap_control). Unterstützung für neue Audio-Codecs hinzugefügt
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.
    • Hinzugefügt Treiber für LCD-Panels Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Scharfes LS020B1DD01D.
    • Hinzugefügt von Unterstützung für ARM-Boards und -Plattformen Gen1 Amazon Echo (OMAP3630-basiert), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Tolino Shine 3 eBook-Reader,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX und HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
      ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Unterstützung für den im Raspberry Pi 4 verwendeten PCIe-Controller hinzugefügt.

Gleichzeitig die Latin American Free Software Foundation gebildet
вариант völlig kostenloser Kernel 5.6 - Linux-libre 5.6-gnu, bereinigt von Firmware- und Treiberelementen mit nicht-freien Komponenten oder Codeabschnitten, deren Anwendungsbereich vom Hersteller eingeschränkt ist. Die neue Version deaktiviert das Laden von Blobs in Treibern für AMD TEE, ATH11K und Mediatek SCP. Der Code zum Bereinigen von Blobs in Treibern und Subsystemen von AMD PSP, amdgpu und nouveau wurde aktualisiert.

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