Release van de Linux-kernel 5.3

Na twee maanden ontwikkeling heeft Linus Torvalds gepresenteerd de release van de kernel Linux 5.3. Onder de meest opvallende veranderingen zijn de ondersteuning voor AMD Navi GPU's, Zhaoxi processoren en Intel Speed Select energiebeheertechnologie, de mogelijkheid om umwait-instructies te gebruiken voor wachten zonder gebruik van loops,
de interactieve modus 'utilization clamping' voor asymmetrische CPU's, systeemaanroep pidfd_open, de mogelijkheid om IPv4-adressen uit het subnet 0.0.0.0/8 te gebruiken, de mogelijkheid voor hardwareversnelling van nftables, ondersteuning voor HDR in de DRM-subsystemen, integratie van de ACRN hypervisor.

In de aankondiging De nieuwe release van Linus herinnerde alle ontwikkelaars aan de belangrijkste regel voor kernelontwikkeling — het behouden van de onveranderlijkheid van het gedrag voor de componenten van de gebruikersruimte. Wijzigingen in de kernel mogen op geen enkele manier de reeds functionerende applicaties verstoren en regressies op gebruikersniveau veroorzaken. Daarbij kan het verstoren van het gedrag niet alleen worden veroorzaakt door wijzigingen in de ABI, het verwijderen van verouderde code of het optreden van fouten, maar ook door de indirecte invloed van correct functionerende nuttige verbeteringen. Een duidelijk voorbeeld hiervan was afgestoten nuttige optimalisatie in de Ext4-code, die het aantal schijvenqueries vermindert door vooruitlezing van de inode-tabel uit te schakelen bij kleine invoer/uitvoer verzoeken.

De optimalisatie resulteerde in een verlaagde schijfactiviteit waarbij de entropie voor de random generator getrandom() trager begon op te bouwen en in sommige configuraties konden er bij bepaalde omstandigheden vertragingen tijdens het opstarten worden waargenomen totdat de entropiepool vol was. Aangezien de optimalisatie echt nuttig is, ontstond er onder ontwikkelaars een discussie waarbij werd voorgesteld om het probleem op te lossen door standaard de blokkerende modus van de aanroep getrandom() uit te schakelen met een optionele vlag voor het wachten op entropie, maar een dergelijke wijziging zou de kwaliteit van de willekeurige getallen in de aanloopfase van de opstart beïnvloeden.

In de nieuwe versie zijn 15794 correcties opgenomen van 1974 ontwikkelaars,
de patchgrootte is 92 MB (de wijzigingen hebben betrekking op 13986 bestanden, er zijn 258419 regels code toegevoegd,
599137 regels zijn verwijderd). Ongeveer 39% van alle veranderingen in 5.3
hebben betrekking op apparaatspecificaties, ongeveer 12% van de veranderingen hebben
betrekking op de code-updates specifiek voor hardwarearchitecturen, 11%
gelinkt aan het netwerkstack, 3% aan bestandssystemen en 3% aan interne
kernsubsystemen.

Belangrijkste vernieuwingen:

  • Geheugen en systeemdiensten
    • De ontwikkeling van de functionaliteit 'pidfd' is voortgezet, die helpt bij het beheren van situaties van hergebruik van PID (pidfd is gekoppeld aan een specifiek proces en verandert niet, terwijl PID aan een ander proces kan worden toegewezen na de beëindiging van het huidige proces dat aan deze PID is gekoppeld). Eerder was al toegevoegd aan de kernel
      de systeemaanroep pidfd_send_signal() en de vlag CLONE_PIDFD in de aanroep van clone(), die het mogelijk maakt pidfd te verkrijgen voor gebruik in pidfd_send_signal(). Bij het gebruik van de aanroep clone() met de vlag CLONE_PIDFD konden er problemen ontstaan met servicebeheerders of het dwingen van processen om te beëindigen bij een gebrek aan geheugen op het Android-platform. In dit geval wordt de aanroep fork() of clone() zonder CLONE_PIDFD gebruikt om op te starten.

      In de kernel 5.3 is de systeemaanroep pidfd_open(), die het mogelijk maakt een gecontroleerde pidfd te verkrijgen voor een willekeurig bestaand proces dat niet is aangemaakt via de aanroep clone() met de vlag CLONE_PIDFD. Ook is er ondersteuning toegevoegd voor het poll-en van pidfd met behulp van poll() en epoll(), wat het mogelijk maakt om in procesbeheerders de beëindiging van willekeurige processen te volgen zonder vrees voor een raceconditie in het geval PID wordt toegewezen aan een nieuw proces. Het mechanisme voor het notificeren over de beëindiging van een proces dat aan pidfd is gekoppeld, is vergelijkbaar met het informeren over de beëindiging van een eigen kindproces;

    • Er is ondersteuning voor een lastbegrenzingsmechanisme toegevoegd aan de taakplanner (Utilization clamping), waarmee een minimum- of maximumfrequentiebereik kan worden gehandhaafd, afhankelijk van de actieve taken op de CPU. Het gepresenteerde mechanisme versnelt taken die direct van invloed zijn op de gebruikerservaring, door deze taken ten minste met de onderste grens van de 'gevraagde' frequentie uit te voeren. Laagprioritaire taken, die geen invloed hebben op de werkervaring van de gebruiker, worden uitgevoerd met het gebruik van de bovenlimiet van de 'toegestane' frequentie. De limieten worden ingesteld via de attributen sched_uclamp_util_min en sched_uclamp_util_max in de systeemaanroep sched_setattr().
    • Ondersteuning voor energiebesparingsbeheer technologie is toegevoegd Intel Speed Select, beschikbaar op sommige servers met Intel Xeon-processors. De genoemde technologie maakt het mogelijk om de prestatie- en doorvoersettings van secties voor verschillende CPU-kernen in te stellen, waardoor de prestatie voor taken die op bepaalde kernen worden uitgevoerd, prioriteit kan krijgen, ten koste van de prestatie op andere kernen;
    • Processen in de gebruikersruimte verleend de mogelijkheid om een korte tijd te wachten zonder gebruik te maken van cycli door middel van de umwait-instructie. Deze instructie, samen met de umonitor- en tpause-instructies, zal worden aangeboden in de aanstaande Intel ‘Tremont’-chips en maakt het mogelijk om vertragingen te realiseren die energie-efficiënt zijn en geen invloed hebben op de prestaties van andere threads bij het gebruik van Hyper Threading;
    • Voor de RISC-V-architectuur is ondersteuning voor grote geheugenpagina's (huge pages) toegevoegd;
    • In het traceermechanisme ‘kprobes’ is de mogelijkheid toegevoegd om kernelwijzers naar de gebruikersruimte te de-refereren, wat kan worden toegepast om bijvoorbeeld de inhoud van structuren die aan systeemoproepen worden doorgegeven, te beoordelen. Ook is de mogelijkheid toegevoegd om controles tijdens het opstarten in te stellen.
    • Optie PREEMPT_RT is toegevoegd aan het configuratiebestand voor gebruik in de real-time modus. De code ter ondersteuning van de real-time modus is nog niet aan de kernel toegevoegd, maar de komst van deze optie is een goed teken dat het jarenlang durende verhaal over integratie Realtime-Preempt patches ten einde loopt;
    • Een systeemoproep clone3() is toegevoegd met de implementatie van een meer uitbreidbare variant van de clone()-interface, die het mogelijk maakt om een groter aantal vlaggen op te geven;
    • Een handler bpf_send_signal() is toegevoegd, waarmee BPF-programma's signalen naar willekeurige processen kunnen sturen;
    • Voor perf-gebeurtenissen in de KVM-hypervisor-omgeving is een nieuw mechanisme voor het filteren van gebeurtenissen toegevoegd, waardoor de administrator kan bepalen welke typen gebeurtenissen wel of niet mogen worden gemonitord aan de gastzijde;
    • In het verificatiemechanisme voor eBPF-toepassingen is de mogelijkheid toegevoegd om programma's met lussen te verwerken, mits de uitvoering van de lus beperkt is en niet kan leiden tot het overschrijden van de limiet voor het maximum aantal instructies;
  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Voor het XFS-bestandssysteem is de mogelijkheid voor multi-threaded doorloop van inode geïmplementeerd (bijvoorbeeld bij quota-controle). Nieuwe ioctl BULKSTAT en INUMBERS zijn toegevoegd, die toegang bieden tot functionaliteiten die zijn geïntroduceerd in de vijfde editie van het FS-formaat, zoals de creatietijd van inode en de mogelijkheid om parameters voor BULKSTAT en INUMBERS in te stellen voor elke AG (Allocation Groups);
    • In Ext4 is ondersteuning toegevoegd voor leemtes in mappen (niet toegewezen blokken).
      Er is verwerking mogelijk gemaakt van de 'i'-vlag (immutable) voor geopende bestanden (schrijfbescherming in situaties waarin de vlag was ingesteld op het moment dat het bestand al geopend was);
    • In Btrfs is de snelle implementatie van crc32c op alle architecturen gedefinieerd;
    • In CIFS is de classificatie voor ondersteuning van smbdirect verwijderd als experimentele ontwikkeling. In SMB3 is de mogelijkheid toegevoegd om cryptografische algoritmen in GCM-modus te gebruiken. Nieuwe montage-optie is toegevoegd voor het extraheren van modusparameters uit ACE (Access Control Entry)-records. De prestaties van de open() aanroep zijn geoptimaliseerd;
    • In F2FS is een optie toegevoegd om de garbage collector te beperken wanneer deze werkt in checkpoint=disable modus. Een ioctl is toegevoegd voor het verwijderen van blokbereiken uit F2FS, wat on-the-fly aanpassing van de partitiegrootte mogelijk maakt. Er is de mogelijkheid toegevoegd om een swapbestand in F2FS te plaatsen met directe in-/uitvoer ondersteuning. Voor alle gebruikers is ondersteuning voor het vastzetten van bestanden en het toewijzen van blokken voor dergelijke bestanden toegevoegd;
    • In de interface voor asynchrone in-/uitvoer io_uring is ondersteuning voor asynchrone operaties sendmsg() en recvmsg() toegevoegd;
    • In het UBIFS-bestandssysteem is ondersteuning voor compressie met behulp van het zstd-algoritme en de mogelijkheid voor verificatie van ondertekende FS-afbeeldingen toegevoegd;
    • In het Ceph-bestandssysteem is ondersteuning voor SELinux-beveiligingslabels voor bestanden toegevoegd;
    • Voor NFSv4 is een nieuwe montage-optie 'nconnect=' geïmplementeerd, die het aantal verbonden verbindingen met de server bepaalt. Het verkeer tussen deze verbindingen wordt verdeeld met behulp van load balancing. Bovendien creëert de NFSv4-server nu de map /proc/fs/nfsd/clients met informatie over de huidige clients, inclusief gegevens over de bestanden die ze hebben geopend;
  • Virtualisatie en beveiliging
    • De hypervisor voor ingebedde apparaten is in de kernel opgenomen ACRN, dat is geschreven met het oog op de bereidheid om real-time taken uit te voeren en geschiktheid voor gebruik in kritieke systemen. ACRN garandeert minimale overhead, zorgt voor lage latentie en voldoende reactietijd bij interactie met hardware. Virtualisatie van CPU, I/O, netwerk subsystemen, grafische en geluidoperaties wordt ondersteund. ACRN kan worden gebruikt om meerdere geïsoleerde virtuele machines uit te voeren in elektronische besturingsmodules, dashboards, automotive informatiesystemen, consument IoT-apparaten en andere embedded systemen;
    • In User-mode Linux is toegevoegd de 'time travel' modus, waarmee je de tijd in de UML virtuele omgeving kunt vertragen of versnellen om het debuggen van tijdsgebonden code te vergemakkelijken. Daarnaast is de parameter toegevoegd
      time-travel-start, waarmee de systeemtijd kan worden gestart vanaf een aangegeven moment in het epoch-formaat;
    • Nieuwe kernel commandoregel opties 'init_on_alloc' en 'init_on_free' zijn toegevoegd. Wanneer deze worden opgegeven, wordt het initialiseren van toegewezen en vrijgegeven geheugengebieden (pauken met nullen bij malloc en free) ingeschakeld, waardoor de veiligheid wordt vergroot ten koste van extra overhead voor initialisatie;
    • Een nieuwe driver is toegevoegd virtio-iommu met de implementatie van een paravirtualized apparaat waarmee IOMMU-verzoeken zoals ATTACH, DETACH, MAP en UNMAP kunnen worden verzonden via virtio transport zonder emulatie van paginatabellen in het geheugen;
    • Een nieuwe driver is toegevoegd virtio-pmem, dat toegang biedt tot opslagapparaten die worden weergegeven in de fysieke adresruimte, zoals NVDIMM;
    • De mogelijkheid is geïmplementeerd om cryptografische sleutels te koppelen aan een gebruikers- of netwerknamespace (sleutels zijn niet toegankelijk buiten de gekozen namespace), evenals de bescherming van sleutels met behulp van ACL;
    • In de cryptosubsystem toegevoegd ondersteuning voor een zeer snelle niet-cryptografische hash-algoritme xxhash, wiens snelheid is gebonden aan de geheugensnelheid;
  • Netwerk subsysteem
    • Verwerking van IPv4-adressen in het bereik van 0.0.0.0/8, dat eerder niet beschikbaar was voor gebruik, is mogelijk gemaakt. De introductie van dit subnet zal verdeelt nog eens 16 miljoen IPv4-adressen;
    • In Netfilter voor nftables toegevoegd ondersteuning voor hardware-versnelling mechanismen voor pakketfiltering door het toepassen van de toegevoegde drivers Flow Block APIOp de netwerkaansluitingen kunnen volledige regels tabellen worden uitgevoerd met alle schakels. Inschakeling gebeurt via de koppeling van de vlag NFT_TABLE_F_HW aan de tabel. Eenvoudige metadata van protocollen op niveau 3 en 4 worden ondersteund, samen met acties accept/reject, matching op IP en netwerkpoorten van zender/ontvanger en het protocoltype.
    • Toegevoegd Ingebouwde ondersteuning voor het volgen van verbindingen voor netwerkswitches, zonder dat een emulatorlaag zoals br_netfilter nodig is.
    • In nf_tables toegevoegd ondersteuning voor de module SYNPROXY, die vergelijkbare functionaliteit biedt als iptables, evenals de mogelijkheid om regels te controleren op specifieke opties in de IPv4-header.
    • De mogelijkheid om BPF-programma's aan systeemaanroepen zoals setsockopt() en getsockopt() te koppelen is toegevoegd, wat bijvoorbeeld het mogelijk maakt om eigen toegangsbestuurders aan deze aanroepen te koppelen. Bovendien is er een nieuwe hook toegevoegd waarmee een BPF-programma één keer per RTT (round-trip time, pingtijd) kan worden aangeroepen.
    • Voor IPv4 en IPv6 is toegevoegd een nieuw mechanisme voor het opslaan van routingegevens nexthop, gericht op het vergroten van de schaalbaarheid van routingtabellen. Testen hebben aangetoond dat met het nieuwe systeem een set van 743 duizend routes in slechts 4,3 seconden in de kernel werd geladen.
    • Voor Bluetooth geïmplementeerd functionaliteit die nodig is voor de ondersteuning van LE ping.
  • Apparatuur
    • Toegevoegd ondersteuning voor x86-compatibele processors van het bedrijf Zhaoxin, ontwikkeld als resultaat van een gezamenlijk project van VIA Technologies en de gemeente Shanghai. De ZX CPU-familie is gebaseerd op de x86-64 Isaiah-architectuur, die de ontwikkeling van technologieën voortzet. VIA Centaur;
    • In het DRM-systeem (Direct Rendering Manager) en de grafische stuurprogramma's amdgpu en i915 is ondersteuning toegevoegd voor de analyse, verwerking en verzending van HDR-metadata (high dynamic range) via de HDMI-poort, waardoor HDR-panelen en schermen die extra helderheidsbereiken kunnen weergeven, kunnen worden gebruikt.
    • In de amdgpu-driver is de initiële ondersteuning voor de AMD NAVI GPU (RX5700) toegevoegd, die de basisdriver, codering voor interactie met schermen (DCN2), ondersteuning voor GFX en berekeningen (GFX10) omvat.
      SDMA 5 (System DMA0), energiebeheer en multimedia-encoders/decoders (VCN2). In amdgpu is ook de ondersteuning voor kaarten op basis van de GPU Vega12 en Vega20 verbeterd, waarvoor extra mogelijkheden voor geheugen- en energiebeheer zijn toegevoegd.
    • De amdkfd-stuurprogramma (voor discrete GPU's zoals Fiji, Tonga, Polaris) heeft ondersteuning toegevoegd voor kaarten op basis van de VegaM GPU;
    • In de DRM-stuurprogramma voor Intel videokaarten voor Icelake-chips is geïmplementeerd een nieuwe multisegmentgamma-correctiemodus. Ondersteuning voor output via DisplayPort in YCbCr4:2:0-formaat is toegevoegd. Nieuwe firmware zijn toegevoegd GuC voor SKL, BXT, KBL, GLK en ICL. De mogelijkheid om de schermvoeding in asynchrone modus uit te schakelen is geïmplementeerd. Toegevoegd ondersteuning voor het opslaan en herstellen van de rendercontext voor Ironlake (gen5) en gen4 (Broadwater - Cantiga) chips, waardoor het mogelijk is om de GPU-status vanuit de gebruikersruimte te herstellen tijdens de overgang van de uitvoering van de ene batchoperatie naar de andere;
    • Het Nouveau-stuurprogramma ondersteunt het identificeren van de NVIDIA Turing TU116 chipset;
    • De mogelijkheden van de DRM/KMS-stuurprogramma voor ARM Komeda schermversnellers (Mali D71) zijn uitgebreid, met ondersteuning voor opschaling, splitsen/samensmelten van lagen, draaien, uitgestelde opname, AFBC, SMMU en kleurcodering Y0L2, P010, YUV420_8/10BIT;
    • In het MSM-stuurprogramma is ondersteuning toegevoegd voor de A540 GPU Adreno-serie, die wordt gebruikt in Qualcomm-processors, evenals ondersteuning voor de MSM8998 DSI-controller voor Snapdragon 835;
    • Stuurprogramma's zijn toegevoegd voor de LCD-panelen Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 en VXT VL050-8048NT-C01;
    • Toegevoegd stuurprogramma voor het activeren van decodering versnelling
      video's, beschikbaar in SoC Amlogic Meson;
    • In het v3d-stuurprogramma (voor Broadcom Video Core V GPU, gebruikt in Raspberry Pi) is er een ondersteuning voor planning van compute-shaders;
    • Toegevoegd stuurprogramma voor SPI-toetsenborden en touchpads, gebruikt in moderne Apple MacBook en MacBookPro modellen;
    • Toegevoegd extra bescherming van ioctl-aanroepen die verband houden met de floppy-stuurprogramma, en de stuurprogramma zelf is gemarkeerd als "orphaned",
      wat betekent dat de test ervan is stopgezet. De stuurprogramma blijft in de kernel, maar correcte werking wordt niet gegarandeerd. De stuurprogramma wordt als verouderd beschouwd, omdat het moeilijk is om werkende hardware voor testdoeleinden te vinden - alle actuele externe opslagapparaten gebruiken over het algemeen USB-interface.
    • Toegevoegd cpufreq-stuurprogramma voor Raspberry Pi-bord, dat dynamisch beheer van de wijziging van de processorfrequentie mogelijk maakt;
    • Ondersteuning toegevoegd voor nieuwe ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP's + MMA) en Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), evenals borden:
      • Purism Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV Box (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Tegelijkertijd heeft de Latijns-Amerikaanse Vrije Software Stichting gecreëerd
optie volledig vrij kernel 5.3 — Linux-libre 5.3-gnu, ontdaan van firmware- en stuurprogramma-elementen die niet-vrije componenten of code bevatten waarvan het toepassingsgebied door de fabrikant is beperkt. In de nieuwe versie is het opstarten van blobs in de qcom-, hdcp drm-, allegro-dvt- en meson-vdec-stuurprogramma's uitgeschakeld.
De schoonmaakcode voor blobs in de stuurprogramma's en subsystemen van amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, de geluidsdriver voor skylake, en in de documentatie voor de microcode is bijgewerkt.

Bron: opennet.ru

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