Release des Linux-Kernels 5.1

Nach zwei Monaten der Entwicklung stellte Linus Torvalds den Release des Kernels Linux 5.1. Zu den auffälligsten Änderungen gehören: eine neue Schnittstelle für asynchronen I/O io_uring, die Möglichkeit, NVDIMM als RAM zu verwenden, Unterstützung für Shared Virtual Memory in Nouveau, Unterstützung für skalierbares Monitoring von sehr großen Dateisystemen über fanotify, die Möglichkeit, die Zstd-Komprimierungsstufen in Btrfs einzustellen, einen neuen cpuidle-Handler TEO, die Implementierung von Systemaufrufen zur Lösung des Jahres 2038-Problems, die Möglichkeit, von Geräten des device-mapper ohne initramfs zu booten, das LSM-Modul SafeSetID, Unterstützung für kombinierte Live-Patches.

Haupt Neuheiten:

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
    • Es wurde eine neue Schnittstelle für asynchronen I/O implementiert — io_uring, die bemerkenswert ist durch die Unterstützung von I/O-Polling und die Möglichkeit, sowohl mit Pufferung als auch ohne Pufferung zu arbeiten. Erinnern Sie sich daran, dass der zuvor angebotene Mechanismus für asynchronen I/O "aio" keine gepufferte I/O unterstützte, nur im O_DIRECT-Modus (ohne Pufferung und um den Cache herum) funktionierte, Probleme mit Blockierungen aufgrund von Warteschlangen bei der Verfügbarkeit von Metadaten hatte und hohe Overheads aufgrund der Datenkopierung im Speicher zeigte.

      Im Rahmen der API
      Die io_uring-Entwickler haben versucht, die Mängel der alten aio-Schnittstelle zu beseitigen. Dies führt zu Leistung. io_uring steht in sehr engem Zusammenhang mit SPDK und übertrifft libaio erheblich bei der Arbeit mit aktivem Polling. Für die Verwendung von io_uring in Endanwendungen, die im Benutzerspeicher arbeiten, wurde die Bibliothek liburing, die eine hochgradige Bindung an die Kernschnittstelle bietet, erstellt.

    • Im Ereignisverfolgungsmechanismus der FS fanotify() hinzugefügt gibt es Unterstützung zur Verfolgung von Änderungen am Superblock und an der Struktur dirent (Ereignisse wie Erstellen, Löschen und Verschieben von Verzeichnissen). Die vorgestellten Funktionen helfen, Skalierungsprobleme zu lösen, die bei der Erstellung rekursiver Änderungsverfolgen in sehr großen FS mit dem inotify-Mechanismus auftreten (Änderungen an dirent konnten zuvor nur über inotify verfolgt werden, aber
      die Effizienz bei der rekursiven Verfolgung großer verschachtelter Verzeichnisse ließ zu wünschen übrig). Nun kann eine solche Überwachung effizient über fanotify durchgeführt werden;
    • Im Dateisystem Btrfs hinzugefügt Möglichkeit zur Einstellung des Komprimierungsgrades für den zstd-Algorithmus, der als optimaler Kompromiss zwischen dem schnellen, aber ineffizienten lz4 und dem langsamen, aber gut komprimierenden xz betrachtet werden kann. Ähnlich wie bei der vorherigen Möglichkeit, den Komprimierungsgrad beim Einsatz von zlib für zstd festzulegen, wurde die Unterstützung für die Mount-Option „-o compress=zstd:level“ hinzugefügt. Bei Tests erzielte die niedrigste erste Stufe eine Datenkompression von 2,658-mal bei einer Komprimierungsgeschwindigkeit von 438,47 MB/s, einer Dekomprimierungsgeschwindigkeit von 910,51 MB/s und einem Speicherverbrauch von 780 MB, während die maximal höchste Stufe 3,126-mal erreichte, jedoch mit einer Komprimierungsgeschwindigkeit von 37,30 MB/s, einer Dekomprimierung von 878,84 MB/s und einem Speicherverbrauch von 2547 MB.
    • Hinzugefügt Die Möglichkeit, von einem Dateisystem, das auf einem device-mapper-Gerät gehostet wird, ohne die Verwendung von initramfs zu booten. Ab dieser aktuellen Kernel-Version kann das device-mapper-Gerät direkt im Bootprozess verwendet werden, beispielsweise als Partition mit dem Root-Dateisystem. Die Konfiguration der Partition erfolgt über den Bootparameter „dm-mod.create“. Zu den für das Booten zugelassenen device-mapper-Modulen gehören: „crypt“, „delay“, „linear“, „snapshot-origin“ und „verity“.
    • Im Flash-Speichersystem F2FS wurde das Flag F2FS_NOCOW_FL hinzugefügt, das es ermöglicht, den Copy-on-Write-Modus für eine bestimmte Datei zu deaktivieren;
    • Das Dateisystem wurde aus dem Kern entfernt Exofs, das eine Variante von ext2 darstellt, die für die Arbeit mit objektbasierten Speichersystemen OSD (Object-based Storage Device) angepasst wurde. Auch die Unterstützung des SCSI-Protokolls für solche Objektspeichergeräte wurde entfernt;
  • Virtualisierung und Sicherheit
    • In prctl() wurde die Option PR_SPEC_DISABLE_NOEXEC hinzugefügt, um die spekulative Ausführung von Anweisungen für den gewählten Prozess zu steuern. Diese neue Option ermöglicht es, die spekulative Ausführung selektiv für Prozesse zu deaktivieren, die potenziell anfällig für Spectre-Angriffe sein könnten. Die Sperre bleibt bis zum ersten Aufruf von exec() in Kraft;
    • Ein LSM-Modul wurde implementiert SafeSetID, das es Systemdiensten ermöglicht, Benutzer sicher zu verwalten, ohne Privilegien zu erhöhen (CAP_SETUID) und ohne die Berechtigungen des Root-Benutzers zu erhalten. Die Zuweisung von Privilegien erfolgt durch die Definition von Regeln in securityfs, die auf einer Whitelist zulässiger Bindungen basieren (in der Form „UID1:UID2“);
    • Niedrigstufige Änderungen wurden hinzugefügt, die für die stapelweise Organisation des LSM-Sicherheitsmodul-Loadings erforderlich sind. Eine Kernel-Startoption "lsm" wurde eingeführt, die steuert, welche Module geladen werden und in welcher Reihenfolge.
    • Die Auditsubsystem unterstützt nun Dateinamensräume.
    • Erweitert Die Funktionen des GCC-Plugins structleak ermöglichen es, potenzielle Speicherlecks zu blockieren. Die Initialisierung aller Variablen erfolgt jetzt durch den Bezug über den Stack.
  • Netzwerksubsystem
    • Für Sockets wurde gibt es eine neue Option "SO_BINDTOIFINDEX", die ähnlich wie
      "SO_BINDTODEVICE" ist, jedoch den Index des Netzwerkinterfaces anstelle des Namens als Argument akzeptiert.
    • Im mac80211-Stack wurde die Möglichkeit hinzugefügt, einem Gerät mehrere BSSIDs (MAC-Adressen) zuzuweisen. Im Rahmen des Projekts zur Leistungsoptimierung von WiFi wurde im mac80211-Stack die Berücksichtigung der Verteilung der Übertragungszeit eingeführt, sowie die Möglichkeit, die Übertragungszeit zwischen mehreren Stationen zu verteilen (im Access-Point-Betrieb wird weniger Zeit für langsame drahtlose Stationen zugewiesen, anstatt die Zeit gleichmäßig zwischen allen Stationen zu verteilen);
    • Ein Mechanismus hinzugefügt:devlink health«, der Benachrichtigungen bei Problemen mit der Netzwerkschnittstelle bereitstellt;
  • Speicher und Systemdienste
  • Ausrüstung
    • Im Nouveau-Treiber hinzugefügt Unterstützung für heterogenes Speichermanagement, das CPU und GPU den Zugriff auf gemeinsame synchronisierte Speicherbereiche ermöglicht. Das System für shared virtual memory (SVM) wird auf Basis des HMM-Subsystems (Heterogeneous memory management) implementiert, welches Geräte mit eigenen Speichermanagement-Einheiten (MMU, memory management unit) berücksichtigt, die auf den Hauptspeicher zugreifen können. Mithilfe von HMM kann ein gemeinsamer Adressraum zwischen GPU und CPU eingerichtet werden, in dem die GPU auf den Hauptspeicher des Prozesses zugreifen kann. Die SVM-Unterstützung ist derzeit nur für GPUs der Pascal-Familie aktiviert, obwohl Unterstützung auch für die GPUs Volta und Turing bereitgestellt wird. Darüber hinaus in Nouveau ein neues ioctl zur Verwaltung der Migration von Prozessspeicherbereichen in den GPU-Speicher;
    • Im DRM-Treiber von Intel für GPUs Skylake und neuer (gen9+) ist Teil des Tools ist standardmäßig der fastboot-Modus aktiviert, der unnötige Moduswechsel während des Bootvorgangs ausschließt. Es wurden hinzugefügt neue Geräte-IDs basierend auf den Mikroarchitekturen Coffelake und Ice Lake. Für Coffelake-Chips hinzugefügt Unterstützung für GVT (GPU-Virtualisierung). Für virtuelle GPUs wurde Unterstützung für VFIO EDID. Für LCD-Panels MIPI/DSI hinzugefügt Unterstützung für ACPI/PMIC-Elemente. Implementiert sind neue TV-Modi 1080p30/50/60 TV;
    • Im amdgpu-Treiber wurde die Unterstützung für die GPU Vega10/20 BACO hinzugefügt. Es wurden Energiemanagement-Funktionen für Vega 10/20 sowie Kühlersteuerungstabellen für Vega 10 implementiert. Neue PCI-Geräte-IDs für die GPU Picasso wurden hinzugefügt. Hinzugefügt Benutzeroberfläche zur Verwaltung geplanter Abhängigkeiten zur Vermeidung von Deadlocks;
    • Hinzugefügt DRM/KMS-Treiber für die Beschleunigung von Bildschirmoperationen ARM Komeda (Mali D71);
    • Unterstützung für Bildschirm-Panels von Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 und Kingdisplay kd097d04 hinzugefügt;
    • Unterstützung für die Audiocodecs Rockchip RK3328, Cirrus Logic CS4341 und CS35L36, MediaTek MT6358, Qualcomm WCD9335 und Ingenic JZ4725B sowie die Audio-Plattform Mediatek MT8183 hinzugefügt;
    • Unterstützung für NAND-Controller Flash STMicroelectronics FMC2, Amlogic Meson hinzugefügt;
    • Unterstützung für Beschleuniger für die Hardware-Systeme Habana AI hinzugefügt;
    • Unterstützung für Gigabit-Ethernet-Controller NXP ENETC und drahtlose Schnittstellen MediaTek MT7603E (PCIe) und MT76x8 hinzugefügt.

Gleichzeitig der Lateinamerikanische Freie Software-Fonds die
Variante ist gut gelungen. vollständig freies Kernsystem 5.1Linux-libre 5.1-gnu, bereinigt von Firmware- und Treiberelementen, die nicht freie Komponenten oder Codeabschnitte enthalten, deren Verwendung durch den Hersteller eingeschränkt ist. In dieser neuen Version wurde das Laden von Blobs in den Treibern mt7603 und goya deaktiviert. Der Code zum Bereinigen von Blobs in den Treibern und Subsystemen wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk und touchscreen_dmi wurde aktualisiert. Die Bereinigung von Blobs im Firmware-Bootloader lantiq xrx200 wurde aufgrund seiner Entfernung aus dem Kernel eingestellt.

Quelle: opennet.ru

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