Linux 5.1 kernel-release

Na twee maanden ontwikkeling, Linus Torvalds ingediend kernel-release Linux 5.1. Een van de meest opvallende veranderingen: een nieuwe interface voor asynchrone I/O io_uring, de mogelijkheid om NVDIMM als RAM te gebruiken, ondersteuning voor gedeeld virtueel geheugen in Nouveau, ondersteuning voor schaalbare monitoring van zeer grote bestandssystemen via fanotify, de mogelijkheid om Zstd-compressie te configureren niveaus in Btrfs, een nieuwe cpuidle TEO-handler, implementatie van systeemaanroepen om het 2038-probleem op te lossen, de mogelijkheid om op te starten vanaf device-mapper-apparaten zonder initramfs, SafeSetID LSM-module, ondersteuning voor gecombineerde live-patches.

De belangrijkste innovaties:

  • Schijfsubsysteem, I/O en bestandssystemen
    • Implementeerde een nieuwe interface voor asynchrone I/O - io_uring, dat bekend staat om zijn ondersteuning voor I/O-polling en de mogelijkheid om met of zonder buffering te werken. Laten we niet vergeten dat het eerder voorgestelde asynchrone I/O-mechanisme “aio” geen gebufferde I/O ondersteunde, alleen in de O_DIRECT-modus kon werken (zonder de cache te bufferen en te omzeilen), problemen had met vergrendelen vanwege het wachten op de beschikbaarheid van metagegevens, en vertoonde grote overheadkosten als gevolg van het kopiëren van gegevens naar het geheugen.

      Binnen de API
      io_uring-ontwikkelaars probeerden de tekortkomingen van de oude aio-interface te elimineren. Door productiviteit io_uring is heel dichtbij SPDK en loopt aanzienlijk voor op libaio als er wordt gewerkt met polling ingeschakeld. Er is een bibliotheek voorbereid voor het gebruik van io_uring in eindapplicaties die in de gebruikersruimte draaien bevrijdend, dat een raamwerk op hoog niveau biedt via de kernelinterface;

    • In het gebeurtenisvolgmechanisme in de FS fanotify() toegevoegd ondersteuning voor het volgen van superblok- en structuurveranderingssituaties direct (gebeurtenissen van het maken, verwijderen en verplaatsen van mappen). De gepresenteerde functies helpen bij het oplossen van de schaalbaarheidsproblemen die optreden bij het creëren van recursieve tracking van wijzigingen in zeer grote bestandssystemen met behulp van het inotify-mechanisme (dirent wijzigingen konden voorheen alleen worden gevolgd via inotify, maar
      prestaties onder omstandigheden van recursieve tracking van grote geneste mappen lieten veel te wensen over). Nu kan dergelijke monitoring effectief worden gedaan via fanotify;

    • Op het Btrfs-bestandssysteem toegevoegd de mogelijkheid om het compressieniveau voor het zstd-algoritme aan te passen, wat kan worden beschouwd als een optimaal compromis tussen de snelle maar ineffectieve lz4 en de langzame maar goede compressie xz. Naar analogie met hoe het voorheen mogelijk was om het compressieniveau in te stellen bij het gebruik van zlib, is ondersteuning voor de “-o compress=zstd:level” mount-optie toegevoegd voor zstd. Tijdens het testen zorgde het minimale eerste niveau voor datacompressie met een snelheid van 2.658 keer met een compressiesnelheid van 438.47 MB/s, decompressiesnelheid van 910.51 MB/s en een geheugenverbruik van 780 MB, en het maximale niveau 15 zorgde voor 3.126 keer, maar met een compressie snelheid van 37.30 MB/s, uitpakken 878.84 MB/s en geheugenverbruik 2547 MB;
    • Toegevoegd de mogelijkheid om op te starten vanaf een bestandssysteem dat zich op het device-mapper-apparaat bevindt, zonder initramfs te gebruiken. Vanaf de huidige kernelrelease kunnen device-mapper-apparaten direct worden gebruikt tijdens het opstartproces, bijvoorbeeld als partitie met het rootbestandssysteem. De partitie wordt geconfigureerd met behulp van de opstartparameter “dm-mod.create”. Device-mapper-modules die mogen worden geladen, zijn onder meer: ​​"crypt", "delay", "linear", "snapshot-origin" en "verity";
    • De vlag F2FS_NOCOW_FL is toegevoegd aan het F2FS-bestandssysteem dat is gericht op Flash-drives, waardoor u de modus voor kopiëren bij schrijven voor een bepaald bestand kunt uitschakelen;
    • Bestandssysteem verwijderd uit de kernel Exofs, een variant van ext2, aangepast voor het werken met OSD-objectopslag (Object-based Storage Device). Ondersteuning voor het SCSI-protocol voor dergelijke objectopslagapparaten is ook verwijderd;
  • Virtualisatie en beveiliging
    • PR_SPEC_DISABLE_NOEXEC optie toegevoegd aan prctl() om de speculatieve uitvoering van instructies voor het geselecteerde proces te controleren. Met een nieuwe optie kunt u speculatieve uitvoering selectief uitschakelen voor processen die mogelijk kunnen worden aangevallen door een Spectre-aanval. De vergrendeling blijft bestaan ​​tot de eerste aanroep van exec();
    • LSM-module geïmplementeerd SafeSetID, waarmee systeemservices gebruikers veilig kunnen beheren zonder rechten te escaleren (CAP_SETUID) en zonder rootrechten te verkrijgen. Privileges worden toegewezen door regels in securityfs te definiëren op basis van een witte lijst met geldige bindingen (in de vorm “UID1:UID2”);
    • Er zijn wijzigingen op laag niveau toegevoegd die nodig zijn voor het stapelgebaseerd laden van beveiligingsmodules (LSM's). Introductie van de "lsm" kernel-opstartoptie om te bepalen welke modules worden geladen en in welke volgorde;
    • Ondersteuning voor bestandsnaamruimten is toegevoegd aan het auditsubsysteem;
    • Uitgebreid kenmerken van de GCC-plug-in structleak, waarmee u potentiële lekken van geheugeninhoud kunt blokkeren. Initialisatie van alle variabelen die in de code worden gebruikt door toegang te krijgen tot een referentie op de stapel is voorzien;
  • Netwerksubsysteem
    • Voor stopcontacten geïmplementeerd nieuwe optie "SO_BINDTOIFINDEX" vergelijkbaar met
      "SO_BINDTODEVICE", maar met als argument het indexnummer van de netwerkinterface in plaats van de interfacenaam;

    • De mac80211-stack heeft de mogelijkheid toegevoegd om meerdere BSSID's (MAC-adressen) aan één apparaat toe te wijzen. Als onderdeel van een project om de WiFi-prestaties te optimaliseren, heeft de mac80211-stack zendtijdregistratie toegevoegd en de mogelijkheid om de zendtijd over meerdere stations te verdelen (bij gebruik in de toegangspuntmodus wordt minder zendtijd toegewezen aan langzame draadloze stations, in plaats van de tijd gelijkmatig over alle stations te verdelen). stations);
    • Mechanisme toegevoegd "gezondheid ontwikkelen", dat meldingen geeft wanneer er problemen optreden met de netwerkinterface;
  • Geheugen- en systeemservices
    • Geïmplementeerd veilige signaalafgifte die PID-hergebruik mogelijk maakt. Als u bijvoorbeeld eerder kill aanroept, zou er een situatie kunnen ontstaan ​​waarin, onmiddellijk na het verzenden van een signaal, de doel-PID zou kunnen worden vrijgegeven vanwege procesbeëindiging en bezet zou kunnen worden door een ander proces, en het signaal uiteindelijk zou worden doorgegeven aan een ander proces. Om dergelijke situaties te elimineren is een nieuwe systeemaanroep pidfd_send_signal toegevoegd, die bestandsdescriptors uit /proc/pid gebruikt om een ​​stabiele procesbinding te garanderen. Zelfs als de PID wordt hergebruikt tijdens de verwerking van systeemoproepen, verandert de bestandsdescriptor niet en kan deze veilig worden gebruikt om een ​​signaal naar het proces te sturen;
    • Toegevoegd de mogelijkheid om permanente geheugenapparaten te gebruiken (bijvoorbeeld persistent geheugen). NVDIMM) als RAM. Tot nu toe ondersteunde de kernel dergelijke apparaten als opslagapparaten, maar nu kunnen ze ook als extra RAM worden gebruikt. De functie is geïmplementeerd als reactie op de wensen van gebruikers die bereid zijn een prestatievertraging te verdragen en de native Linux kernel-geheugenbeheer-API willen gebruiken in plaats van bestaande geheugentoewijzingssystemen voor gebruikersruimte te gebruiken die bovenop mmap draaien voor de dax bestand;
    • Een nieuwe CPU-inactieve handler toegevoegd (cpuidle, beslist wanneer de CPU in diepe energiebesparende modi kan worden gezet; hoe dieper de modus, hoe groter de besparing, maar ook hoe langer het duurt om de modus te verlaten) - TEO (Timer Events Oriented Governor ). Tot nu toe zijn er twee CPU-handlers voorgesteld: "menu" en "ladder", die verschillen in heuristiek. De "menu"-handler heeft problemen gekend bij het nemen van heuristische beslissingen, en om dit te elimineren werd besloten een nieuwe handler voor te bereiden. TEO is gepositioneerd als alternatief voor de "menu"-handler, waardoor hogere prestaties mogelijk zijn bij hetzelfde stroomverbruik.
      U kunt de nieuwe handler activeren met behulp van de opstartparameter “cpuidle.governor=teo”;

    • Als onderdeel van het werk om te elimineren problemen van 2038, veroorzaakt door een overflow van het 32-bit time_t-type, omvat systeemaanroepen die 32-bit tijdtellers bieden voor 64-bit architecturen. Als gevolg hiervan kan de 64-bit time_t-structuur nu op alle architecturen worden gebruikt. Soortgelijke wijzigingen zijn ook geïmplementeerd in het netwerksubsysteem voor opties tijdstempel netwerkaansluitingen;
    • In het hot patching-systeem voor de kern (live patching) toegevoegd “Atomic Replace”-functie voor het atomair toepassen van een reeks wijzigingen op een enkele functie. Met deze functie kunt u samenvattingspatches distribueren die meerdere wijzigingen tegelijk omvatten, in plaats van het proces van stapsgewijze toepassing van live patches in een strikt gedefinieerde volgorde, wat vrij moeilijk te onderhouden is. Terwijl voorheen elke volgende wijziging gebaseerd moest zijn op de status van de functie na de laatste wijziging, is het nu mogelijk om meerdere wijzigingen die aan één initiële status zijn gekoppeld in één keer door te geven (dat wil zeggen dat beheerders in plaats daarvan één geconsolideerde patch kunnen onderhouden ten opzichte van de basiskernel van een keten van patches die van elkaar afhankelijk zijn);
    • Aangekondigd verouderde ondersteuning voor het uitvoerbare bestandsformaat a.out en
      verwijderd code voor het genereren van kernbestanden in het a.out-formaat, dat zich in een verlaten staat bevindt. Het a.out-formaat wordt al lange tijd niet meer gebruikt op Linux-systemen, en het genereren van a.out-bestanden wordt al lange tijd niet ondersteund door moderne tools in standaard Linux-configuraties. Bovendien kan de lader voor a.out-bestanden volledig in de gebruikersruimte worden geïmplementeerd;

    • De mogelijkheid om ongebruikte code te identificeren en te verwijderen is toegevoegd aan het BPF-programmaverificatiemechanisme. De kernel bevat ook patches met spinlock-ondersteuning voor het BPF-subsysteem, die extra mogelijkheden bieden voor het beheren van de parallelle uitvoering van BPF-programma's;
  • Uitrusting
    • In Nouveau-chauffeur toegevoegd ondersteuning voor heterogeen geheugenbeheer, waardoor de CPU en GPU toegang krijgen tot gemeenschappelijke gesynchroniseerde geheugengebieden. Het gedeelde virtuele geheugensysteem (SVM, gedeeld virtueel geheugen) wordt geïmplementeerd op basis van het HMM-subsysteem (Heterogeneous Memory Management), dat het gebruik mogelijk maakt van apparaten met hun eigen geheugenbeheereenheden (MMU, Memory Management Unit), die toegang hebben tot hoofd geheugen. Met HMM kunt u met name een gedeelde adresruimte tussen de GPU en CPU organiseren, waarin de GPU toegang heeft tot het hoofdgeheugen van het proces. SVM-ondersteuning is momenteel alleen ingeschakeld voor GPU's uit de Pascal-familie, hoewel er ook ondersteuning wordt geboden voor Volta- en Turing-GPU's. Bovendien in Nouveau toegevoegd nieuwe ioctl om de migratie van procesgeheugengebieden naar GPU-geheugen te controleren;
    • In Intel DRM-stuurprogramma voor GPU Skylake en hoger (gen9+) inbegrepen Standaard elimineert de fastboot-modus onnodige moduswijzigingen tijdens het opstarten. Toegevoegd новые apparaat-ID's gebaseerd op microarchitecturen van Coffelake en Ice Lake. Voor Coffelake-chips toegevoegd GVT-ondersteuning (GPU-virtualisatie). Voor virtuele GPU's geïmplementeerd VFIO EDID-ondersteuning. Voor LCD-panelen MIPI/DSI toegevoegd ondersteuning voor ACPI/PMIC-elementen. Geïmplementeerd nieuwe TV-modi 1080p30/50/60 TV;
    • Ondersteuning toegevoegd voor Vega10/20 BACO GPU aan het amdgpu-stuurprogramma. Vega 10/20 energiebeheer en Vega 10 koelerbesturingstabellen geïmplementeerd. Nieuwe PCI-apparaat-ID's toegevoegd voor Picasso GPU's. toegevoegd interface voor het beheren van planbare afhankelijkheden om impasses te voorkomen;
    • toegevoegd DRM/KMS-stuurprogramma voor schermversnellers ARM Komeda (Mali D71);
    • Ondersteuning toegevoegd voor Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 en Kingdisplay kd097d04 schermpanelen;
    • Ondersteuning toegevoegd voor Rockchip RK3328, Cirrus Logic CS4341 en CS35L36, MediaTek MT6358, Qualcomm WCD9335 en Ingenic JZ4725B audiocodecs, evenals Mediatek MT8183 audioplatform;
    • Ondersteuning toegevoegd voor NAND-controllers Flash STMicroelectronics FMC2, Amlogic Meson;
    • Accelerator-ondersteuning toegevoegd voor Habana AI-hardwaresystemen;
    • Ondersteuning toegevoegd voor NXP ENETC gigabit Ethernet-controllers en MediaTek MT7603E (PCIe) en MT76x8 draadloze interfaces.

Tegelijkertijd de Latin American Free Software Foundation gevormd
вариант volledig gratis kernel 5.1 - Linux-libre 5.1-gnu, ontdaan van firmware- en driverelementen die niet-vrije componenten of codesecties bevatten, waarvan de reikwijdte wordt beperkt door de fabrikant. In de nieuwe release is het laden van blobs uitgeschakeld in de mt7603- en goya-stuurprogramma's. Bijgewerkte code voor het opschonen van blobs in stuurprogramma's en subsystemen wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk en touchscreen_dmi. Het opschonen van blobs in de lantiq xrx200-firmwarelader is gestopt omdat deze uit de kernel is verwijderd.

Bron: opennet.ru

Voeg een reactie