Release van de Linux-kernel 5.1

Na twee maanden ontwikkeling heeft Linus Torvalds gepresenteerd de release van de kernel Linux 5.1. Onder de meest opvallende wijzigingen bevinden zich: een nieuwe interface voor asynchrone invoer/uitvoer io_uring, de mogelijkheid om NVDIMM als RAM te gebruiken, ondersteuning in Nouveau voor gedeeld virtueel geheugen, ondersteuning voor schaalbare monitoring van zeer grote bestandssystemen via fanotify, de mogelijkheid om compressieniveaus Zstd in Btrfs in te stellen, een nieuwe cpuidle-handler TEO, de implementatie van systeemoproepen om het probleem van het jaar 2038 op te lossen, de mogelijkheid om op te starten vanaf apparaten device-mapper zonder initramfs, LSM-module SafeSetID, en ondersteuning voor gecombineerde live-patches.

Belangrijkste vernieuwingen:

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Een nieuwe interface voor asynchrone invoer/uitvoer is geïmplementeerd — io_uring, die wordt gekenmerkt door de ondersteuning van polling voor invoer/uitvoer en de mogelijkheid om zowel met buffering als zonder buffering te werken. Ter herinnering, de eerder aangeboden mechanisme voor asynchrone invoer/uitvoer 'aio' ondersteunde geen gebufferde invoer/uitvoer, kon alleen in de O_DIRECT-modus (zonder buffering en om de cache heen) werken, had problemen met het ontstaan van blokkades door het wachten op de beschikbaarheid van metadata en toonde hoge overhead door de kopie van gegevens in het geheugen.

      Binnen de API
      io_uring hebben ontwikkelaars geprobeerd de tekortkomingen van de oude aio-interface te verhelpen. Op prestatie is io_uring zeer dicht in de buurt van SPDK en overtreft libaio aanzienlijk bij het gebruik van polling. Voor het gebruik van io_uring in eindtoepassingen die in de gebruikersruimte draaien, is er een bibliotheek liburing, die een hoog-niveau wrapper biedt voor de kernelinterface;

    • In het mechanisme voor het volgen van gebeurtenissen in filesystem fanotify() toegevoegd is er ondersteuning voor het volgen van situaties met wijzigingen in de superblok en structuur dirent (gebeurtenissen van creatie, verwijdering en verplaatsing van mappen). De gepresenteerde mogelijkheden helpen om schaalbaarheidsproblemen op te lossen die ontstaan bij het creëren van recursieve wijzigingen bij zeer grote bestanden via de mechanisme van inotify (wijzigingen in dirent konden voorheen alleen via inotify worden gevolgd, maar
      de efficiëntie onder recursieve monitoring van grote geneste mappen liet veel te wensen over). Nu kan dergelijke monitoring efficiënt worden uitgevoerd via fanotify;
    • In het bestandssysteem Btrfs toegevoegd de mogelijkheid om het compressieniveau in te stellen voor het zstd-algoritme, dat kan worden beschouwd als een optimale compromis tussen de snelle maar inefficiënte lz4 en de langzame maar goed samendrukbare xz. Op dezelfde manier als vroeger het compressieniveau kon worden ingesteld bij het gebruik van zlib voor zstd, is ondersteuning voor de montage-optie "-o compress=zstd:level" toegevoegd. Bij testen zorgde het minimale eerste niveau voor een compressieverhouding van 2.658 met een compressiesnelheid van 438,47 MB/s, een decompressiesnelheid van 910,51 MB/s en een geheugengebruik van 780 MB, terwijl het maximale niveau 15 - 3.126 keer, maar met een compressiesnelheid van 37,30 MB/s, decompressiesnelheid van 878,84 MB/s en geheugengebruik van 2547 MB;
    • Toegevoegd de mogelijkheid om op te starten vanaf een bestandssysteem dat is geplaatst op een device-mapper-apparaat, zonder gebruik te maken van initramfs. Vanaf de huidige kernelrelease kan het device-mapper-apparaat direct worden gebruikt tijdens het opstartproces, bijvoorbeeld als de root FS-partitie. De partitie-instellingen worden gedaan met de opstartparameter "dm-mod.create". Onder de toegestane modules voor opstarten met device-mapper vallen: "crypt", "delay", "linear", "snapshot-origin" en "verity";
    • In het Flash-georiënteerde bestandssysteem F2FS is de F2FS_NOCOW_FL-vlag toegevoegd, waarmee de copy-on-write-modus voor een opgegeven bestand kan worden uitgeschakeld;
    • Het bestandssysteem is verwijderd uit de kernel Exofs, dat een variant is van ext2, aangepast voor gebruik met objectgebaseerde opslagapparaten (OSD). Ook is de ondersteuning voor het SCSI-protocol voor dergelijke objectopslagapparaten verwijderd;
  • Virtualisatie en beveiliging
    • In prctl() is de optie PR_SPEC_DISABLE_NOEXEC toegevoegd voor het beheer van speculatieve uitvoering van instructies voor het gekozen proces. De nieuwe optie maakt het mogelijk om speculatieve uitvoering selectief uit te schakelen voor processen die potentieel kunnen worden aangevallen met een Spectre-aanval. De blokkering geldt tot de eerste exec()-aanroep;
    • Een LSM-module is geïmplementeerd SafeSetID, waarmee systeemservices veilig gebruikers kunnen beheren zonder privileges te verhogen (CAP_SETUID) en zonder root-toegang te verkrijgen. Het toekennen van privileges vindt plaats door het definiëren van regels op basis van een white list van toegestane bindingen in securityfs (in de vorm van "UID1:UID2");
    • Laag-niveau wijzigingen zijn aangebracht die nodig zijn voor de stapeling van beveiligingsmodule laadsystemen (LSM). De kern opstartparameter 'lsm' is geïntroduceerd om te beheren welke modules worden geladen en in welke volgorde;
    • Ondersteuning voor bestandsnamespace is toegevoegd aan de auditsubsystemen;
    • Uitgebreid mogelijkheden van de GCC-plug-in structleak, die potentiële geheugenlekken blokkeert. Initiële waarde van alle variabelen die via een referentie in de stack worden gebruikt, is verzekerd;
  • Netwerk subsysteem
    • Voor sockets geïmplementeerd een nieuwe optie 'SO_BINDTOIFINDEX', vergelijkbaar met
      'SO_BINDTODEVICE', maar accepteert het indexnummer van de netwerkinterface als argument in plaats van de naam van de interface;
    • In de mac80211 stack is de mogelijkheid toegevoegd om meerdere BSSID's (MAC-adressen) aan één apparaat toe te wijzen. Als onderdeel van het project voor de optimalisatie van WiFi-prestaties is het mogelijk gemaakt om ether-tijd te verdelen en het ether-tijd te verdelen tussen meerdere stations (bij gebruik in toegangspuntmodus wordt er minder tijd toegewezen aan langzame draadloze stations, in plaats van een gelijke verdeling van tijd tussen alle stations);
    • Een mechanisme 'devlink health' is toegevoegd, die meldingen geeft bij problemen met het netwerkinterface;
  • Geheugen en systeemdiensten
    • De ondersteuning voor veilige afgifte van signalen, rekening houdend met de mogelijkheid van PID-hergebruik. Bijvoorbeeld, bij het uitvoeren van een kill-oproep kon er oorspronkelijk een situatie ontstaan waarbij de doel-PID onmiddellijk na het verzenden van het signaal kon worden vrijgegeven door beëindiging van het proces en kunnen worden gebruikt door een ander proces, waardoor het signaal naar een ander proces werd verzonden. Om dergelijke situaties te voorkomen is een nieuwe systeemoproep pidfd_send_signal toegevoegd, die bestandsdescriptoren uit /proc/pid gebruikt voor een stabiele koppeling aan het proces. Zelfs als de PID opnieuw wordt gebruikt tijdens de verwerking van de systeemoproep, verandert de bestandsdescriptor niet en kan deze veilig worden gebruikt om een signaal naar het proces te sturen;
    • Toegevoegd de mogelijkheid om apparaten voor permanente geheugenopslag (persistent-memory, bijvoorbeeld NVDIMM) als RAM. Tot nu toe werden soortgelijke apparaten ondersteund als opslagapparaten in de kern, maar nu kunnen ze ook worden gebruikt als extra werkgeheugen. Deze mogelijkheid is gerealiseerd als reactie op de verzoeken van gebruikers die bereid zijn performanceverlies te accepteren en die het voorkeur geven aan de standaard Linux kernel geheugenbeheer API in plaats van bestaande geheugenallocatiesystemen in de gebruikersruimte die bovenop mmap voor het dax-bestand werken;
    • Een nieuwe CPU idle-handler (cpuidle, bepaalt wanneer de CPU in diepe energiebesparingsmodi kan worden geplaatst, hoe dieper de modus — hoe groter de besparing, maar ook hoe langer het kost om uit de modus te komen) — TEO (Timer Events Oriented Governor). Tot nu toe waren er twee aangeboden cpuidle-handlers — 'menu' en 'ladder', die verschillen in heuristiek. De 'menu' handler heeft bekende problemen met het maken van heuristische beslissingen, en om deze op te lossen is besloten een nieuwe handler voor te bereiden. TEO wordt gepositioneerd als een alternatief voor de 'menu' handler, waarmee een hogere prestaties kan worden bereikt zonder het energieniveau te verhogen.
      De nieuwe handler kan worden geactiveerd met de opstartparameter 'cpuidle.governor=teo';
    • In het kader van het werk aan het oplossen van het probleem van het jaar 2038, veroorzaakt door een overflow van het 32-bits type time_t, zijn systeemoproepen opgenomen die voor 32-bits architecturen 64-bits tijdtellercounters bieden. Hierdoor kan de 64-bits time_t structuur nu op alle architecturen worden toegepast. Vergelijkbare wijzigingen zijn ook doorgevoerd in de netwerksubsystemen voor opties timestamp van netwerksockets;
    • In het systeem voor hot patching van de kernel (live patching) toegevoegd de mogelijkheid 'Atomic Replace' voor atomische toepassing van een reeks wijzigingen op één functie. De genoemde mogelijkheid maakt het mogelijk om samengevoegde patches te verspreiden die meerdere wijzigingen tegelijk dekken, in plaats van het vrij ingewikkelde proces van gefaseerde live-patch-implementatie in een strikt bepaalde volgorde. Waar eerdere wijzigingen afhankelijk waren van de toestand van de functie na de vorige wijziging, is het nu mogelijk om meerdere wijzigingen te verspreiden die aan één basisstatus zijn gekoppeld (dat wil zeggen, beheerders kunnen één samengevoegde patch onderhouden ten opzichte van de basiskernel in plaats van een keten van onderling afhankelijke patches);
    • Aangekondigd verouderd de ondersteuning voor het formaat van uitvoerbare bestanden a.out en
      verwijderd de code voor het genereren van core-bestanden in het a.out-formaat, dat in een verwaarloosde toestand verkeert. Het a.out-formaat wordt al lange tijd niet meer gebruikt op systemen met Linux, en de generatie van a.out-bestanden wordt al lange tijd niet meer ondersteund door moderne toolkits in configuraties voor Linux standaard. Bovendien kan de loader voor a.out-bestanden volledig in de gebruikersruimte worden geïmplementeerd;
    • In het verificatiemechanisme voor BPF-programma's is de mogelijkheid toegevoegd om ongebruikte code te identificeren en te verwijderen. Ook zijn er patches opgenomen in de kernel die spinlock-ondersteuning bieden voor het BPF-subsystem, wat extra mogelijkheden biedt voor het beheren van parallelle uitvoering van BPF-programma's;
  • Apparatuur
    • In de Nouveau-stuurprogramma toegevoegd de ondersteuning voor heterogene geheugentoegang, die CPU- en GPU-toegang tot gedeelde gesynchroniseerde geheugenruimten mogelijk maakt. Het systeem voor gedeeld virtueel geheugen (SVM, shared virtual memory) is geïmplementeerd op basis van het HMM-systeem (Heterogeneous memory management), dat de toegang tot het hoofdgeheugen door apparaten met hun eigen geheugeneenheden (MMU, memory management unit) mogelijk maakt. Ook kan HMM worden gebruikt om een gezamenlijk addressruimte tussen GPU en CPU te organiseren, waarin de GPU toegang kan krijgen tot het hoofdgeheugen van het proces. De ondersteuning voor SVM is voorlopig alleen ingeschakeld voor de GPU-familie Pascal, hoewel ondersteuning ook is geboden voor de GPU's Volta en Turing. Bovendien wordt in Nouveau is toegevoegd een nieuwe ioctl geïntroduceerd voor het beheren van de migratie van geheugenruimten van processen naar GPU-geheugen;
    • In de DRM-driver van Intel voor GPU Skylake en nieuwer (gen9+) ingeschakeld Standaard staat de fastboot-modus aan, wat onnodige schakelingen tussen modi tijdens het opstarten uitsluit. Toegevoegd nieuwe apparaatidentificators op basis van de microarchitecturen Coffeelake en Ice Lake. Voor Coffeelake-chips toegevoegd ondersteuning voor GVT (GPU-virtualisatie). Voor virtuele GPU's geïmplementeerd ondersteuning voor VFIO EDID. Voor MIPI/DSI LCD-panelen toegevoegd ondersteuning voor ACPI/PMIC-elementen. Geïmplementeerd nieuwe TV-modi 1080p30/50/60 TV;
    • In de amdgpu-driver is ondersteuning toegevoegd voor de GPU Vega10/20 BACO. Energiebeheer voor Vega 10/20 en koelmiddelbeheer tabellen voor Vega 10 zijn geïmplementeerd. Nieuwe PCI-apparaatidentificators zijn toegevoegd voor de GPU Picasso. Toegevoegd beheersinterface voor geplande afhankelijkheden om wederzijdse blokkeringsproblemen te voorkomen;
    • Toegevoegd DRM/KMS-driver voor versnellende schermbewerkingen ARM Komeda (Mali D71);
    • Ondersteuning toegevoegd voor schermpanelen Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 en Kingdisplay kd097d04;
    • Ondersteuning toegevoegd voor audiocodecs Rockchip RK3328, Cirrus Logic CS4341 en CS35L36, MediaTek MT6358, Qualcomm WCD9335 en Ingenic JZ4725B, evenals audio-platform Mediatek MT8183;
    • Ondersteuning toegevoegd voor NAND-controllers Flash STMicroelectronics FMC2, Amlogic Meson;
    • Ondersteuning toegevoegd voor versnellers voor machinelearning-systemen Habana AI;
    • Ondersteuning toegevoegd voor gigabit Ethernet-controllers NXP ENETC en draadloze interfaces MediaTek MT7603E (PCIe) en MT76x8.

Tegelijkertijd heeft de Latijns-Amerikaanse Vrije Software Stichting gecreëerd
optie volledig vrij kernel 5.1 — Linux-libre 5.1-gnu, ontdaan van firmware- en driver-elementen die onvrije componenten of codebeperkingen bevatten zoals gedefinieerd door de fabrikant. In deze release is het laden van blobs in de drivers mt7603 en goya uitgeschakeld. De code voor het verwijderen van blobs in de drivers en subsystemen wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk en touchscreen_dmi is bijgewerkt. Het verwijderen van blobs in de firmwarebootloader lantiq xrx200 is stopgezet vanwege de verwijdering uit de kernel.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster