Release van Linux 5.6-kernel

Na twee maanden ontwikkeling heeft Linus Torvalds gepresenteerd de release van de kernel Linux 5.6Onder de meest opvallende veranderingen vallen de integratie van de WireGuard VPN-interface, ondersteuning voor USB4, tijdruimtes, de mogelijkheid om TCP overload handlers te creëren met behulp van BPF, initiële ondersteuning voor MultiPath TCP, het oplossen van het 2038-probleem in de kernel, en het "bootconfig" mechanisme, evenals het bestandssysteem ZoneFS.

In de nieuwe versie zijn 13702 correcties opgenomen van 1810 ontwikkelaars.
De patchgrootte bedraagt 40 MB (de wijzigingen hebben 11577 bestanden aangetast, met 610012 nieuwe regels code,
en 294828 regels verwijderd). Ongeveer 45% van alle wijzigingen in 5.6
wijzigingen zijn gerelateerd aan apparaatsdrivers, ongeveer 15% van de wijzigingen hebben
betreffen code-updates die specifiek zijn voor hardwarearchitecturen, 12%
behouden zich met de netwerstack, 4% met bestandssystemen en 3% met interne
kernsubsystemen.

Belangrijkste vernieuwingen:

  • Netwerk subsysteem
    • Toegevoegd de implementatie van de VPN-interface WireGuard, die is gebaseerd op moderne versleutelingsmethodes (ChaCha20, Poly1305, Curve25519, BLAKE2s), eenvoudig in gebruik is, geen complicaties kent, goed heeft gepresteerd in verschillende grote implementaties en zeer hoge prestaties levert (3,9 keer beter dan OpenVPN wat betreft bandbreedte). WireGuard maakt gebruik van een routingconcept op basis van versleutelingssleutels, wat inhoudt dat aan elke netwerkinterface een privé-sleutel is gekoppeld en openbare sleutels worden gebruikt voor het verbinden. Het uitwisselen van openbare sleutels om een verbinding tot stand te brengen gebeurt op een manier die lijkt op SSH. De benodigde cryptografische primitieve voor WireGuard zijn zijn overgebracht uit de bibliotheek Zinc in de standaard Crypto API en opgenomen in de kernel 5.5.
    • Is gestart de integratie van componenten die nodig zijn voor de ondersteuning van MPTCP (MultiPath TCP), een uitbreiding van het TCP-protocol voor het organiseren van de TCP-verbinding met het tegelijkertijd afleveren van pakketten over verschillende routes via verschillende netwerkinterfaces, gekoppeld aan verschillende IP-adressen. Voor netwerkapplicaties lijkt deze geaggregeerde verbinding op een normale TCP-verbinding, terwijl de logica voor het splitsen van stromen door MPTCP wordt uitgevoerd. Multipath TCP kan worden gebruikt voor zowel het vergroten van de bandbreedte als voor het verhogen van de betrouwbaarheid. Bijvoorbeeld, MPTCP kan worden gebruikt voor het overdragen van gegevens op een smartphone door tegelijkertijd WiFi- en 4G-verbindingen te gebruiken of om kosten te besparen door een server aan te sluiten met behulp van meerdere goedkope verbindingen in plaats van één dure.
    • Toegevoegd ondersteuning van de verwerkingsdiscipline van netqueue sch_ets (Enhanced Transmission Selection, IEEE 802.1Qaz), die de mogelijkheid biedt om de bandbreedte tussen verschillende verkeersklassen te verdelen. Als de belasting op een bepaalde verkeersklasse onder de toegewezen bandbreedte ligt, stelt ETS andere verkeersklassen in staat om de beschikbare (ongebruikte) bandbreedte te gebruiken. Qdisc sch_ets wordt ingesteld als een PRIO-discipline en gebruikt verkeersklassen om strikte en gedeelde bandbreedtebeperkingen te bepalen. ETS werkt als een combinatie van disciplines PRIO en DRR — bij bestaande streng beperkte verkeersklassen wordt PRIO gebruikt, maar als er geen verkeer in de wachtrij is, werkt het als DRR.
    • Een nieuw type BPF-programma is toegevoegd BPF_PROG_TYPE_STRUCT_OPS, waarmee het mogelijk wordt om kernelfunctiehandlers via BPF te implementeren. Deze functionaliteit kan nu al worden gebruikt voor de implementatie van TCP-overloadcontrole-algoritmen in de vorm van BPF-programma's. Als voorbeeld aangeboden Een BPF-programma met de implementatie van het algoritme DCTCP.
    • Is geaccepteerd in de kernel wijzigingen, waarbij de gereedschapsset ethtool van ioctl() naar gebruik van de netlink-interface. De nieuwe interface vereenvoudigt het toevoegen van uitbreidingen, verbetert de foutafhandeling, maakt het mogelijk om meldingen te verzenden bij statuswijzigingen, vereenvoudigt de interactie tussen de kernel en de gebruikersruimte en vermindert het aantal te synchroniseren benoembare lijsten.
    • De implementatie van het algoritme voor netwerkqueuebeheer FQ-PIE (Flow Queue PIE) is toegevoegd, gericht op het verminderen van de negatieve impact van tussentijdse pakketbuffering op randnetwerkapparatuur (bufferbloat). FQ-PIE toont hoge efficiëntie bij gebruik in systemen met kabelmodems.
  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • Voor het Btrfs-bestandssysteem toegevoegd is de asynchrone uitvoering van de DISCARD-operatie (het markeren van vrijgegeven blokken die fysiek niet meer hoeven te worden opgeslagen) geïmplementeerd. Oorspronkelijk werden DISCARD-operaties synchronisch uitgevoerd, wat kon leiden tot prestatieproblemen vanwege het wachten op de voltooiing van de bijbehorende opdrachten van de opslag. De asynchrone uitvoering maakt het mogelijk om niet te wachten op de voltooiing van DISCARD door de opslag en deze operatie op de achtergrond uit te voeren.
    • In XFS is gewerkt aan code cleaning, where old 32-bit time counters (type time_t replaced with time64_t) were used, leading to the year 2038 problem. Errors and memory corruption that arose on 32-bit platforms have been eliminated. The code has been revamped to work with extended attributes.
    • in the ext4 file system correcties en kleine verbeteringen aangebracht. performance optimizations related to inode locking during read and write operations. The performance of direct I/O rewriting has been improved. For easier problem diagnosis, the first and last error codes are preserved in the superblock.
    • In the F2FS file system geïmplementeerd the ability to store data in a compressed form. Compression can be enabled for an individual file or directory using the command "chattr +c file" or "chattr +c dir; touch dir/file". To compress an entire partition, the option "-o compress_extension=ext" can be used in the mount utility.
    • The file system accepted into the kernel is ZoneFS, simplifying low-level operations with zoned storage devices. Zoned storage devices refer to those on hard magnetic disks or NVMe SSDs, where the storage space is divided into zones that comprise groups of blocks or sectors, where only sequential data addition is permitted, updating the entire group of blocks in the process. The ZoneFS file system, developed by Western Digital, links each zone in the storage device with a separate file, which can be used for raw data storage without manipulation at the sector and block level, enabling applications to use the file API instead of direct access to the block device via ioctl.
    • In NFS, mounting partitions over UDP is disabled by default. Support has been added for the capability specified in the NFS 4.2 specification for direct file copying between servers. A new mounting option "softreval" has been introduced, allowing the use of cached attribute values in case of server failure. For example, with this option, after server unavailability, it remains possible to navigate through paths in the NFS partition and access information that has settled in the cache.
    • Beoordeeld optimalisatie van de prestaties van het fs-veritymechanisme, dat wordt gebruikt voor integriteitscontrole en authenticatie van individuele bestanden. De leessnelheid is verbeterd door het gebruik van een Merkle-hashboom. De prestaties van FS_IOC_ENABLE_VERITY zijn geoptimaliseerd in omstandigheden waar er geen gegevens in de cache zijn (proactief lezen van pagina's met gegevens is toegepast).
  • Virtualisatie en beveiliging
    • De mogelijkheid om de SELinux-module tijdens het draaien uit te schakelen, is verouderd verklaard, en in de toekomst zal het unloaden van een reeds geactiveerde SELinux verboden zijn. Om SELinux uit te schakelen, moet de parameter "selinux=0" aan de kernel-opdrachtregel worden doorgegeven.
    • Toegevoegd ondersteuning voor tijdnamespace (time namespaces) is toegevoegd, waarmee de status van de systeemklokken (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME) aan een container kan worden gebonden, waardoor de container zijn eigen tijd kan gebruiken en bij migratie van de container naar een andere host de waarden van CLOCK_MONOTONIC en CLOCK_BOOTTIME onveranderd blijven (de tijd na opstarten rekening houdend met of zonder slaapmodus).
    • De geblokkeerde pool /dev/random is verwijderd. Het gedrag van /dev/random is aangepast aan dat van /dev/urandom om te voorkomen dat de entropie na initialisatie van de pool blokkeert.
    • Een driver is toegevoegd aan de kernel waarmee gastsystemen die draaien onder VirtualBox mappen kunnen monteren die worden geëxporteerd door de hostomgeving (VirtualBox Shared Folder).
    • Er is een set patches toegevoegd aan het BPF-subsysteem (BPF dispatcher), waarbij gebruik wordt gemaakt van het Retpoline-mechanisme ter bescherming tegen Spectre V2-aanvallen, wat de efficiëntie van het aanroepen van BPF-programma's verbetert bij de bijbehorende gebeurtenissen (bijvoorbeeld, dit maakt het mogelijk om het oproepen van XDP-handlers te versnellen bij de binnenkomst van een netwerkpakket).
    • Een driver is toegevoegd ter ondersteuning van de in APU AMD ingebouwde TEE (Trusted Execution Environment).
  • Geheugen en systeemdiensten
    • In BPF is ondersteuning voor globale functies toegevoegd. De ontwikkeling wordt uitgevoerd in het kader van een initiatief om ondersteuning voor functiebibliotheken toe te voegen die in BPF-programma's kunnen worden aangesloten. De volgende stap is de ondersteuning voor dynamische extensies, waarmee globale functies kunnen worden geladen, inclusief voor het vervangen van bestaande globale functies tijdens hun gebruik. In het BPF-subsysteem is ook ondersteuning toegevoegd voor een variant van de map-operatie (gebruikt voor het opslaan van permanente gegevens), die batchverwerking ondersteunt.
    • Toegevoegd Het apparaat «cpu_cooling» maakt het mogelijk om een oververhitte CPU af te koelen door deze voor korte periodes in een idle-toestand te zetten.
    • Systeemoproep toegevoegd openat2(), waarmee een set extra vlaggen wordt aangeboden om de bestandspaden te beperken (verbod op het doorkruisen van mountpoints, symbolische links, magic links (/proc/PID/fd), componenten «.. /»).
    • Voor heterogene systemen op basis van de big.LITTLE-architectuur, die krachtige en minder krachtige energiezuinige CPU-kernen in één chip combineren, wordt ervoor gezorgd dat de uclamp_min-parameter wordt ingesteld bij het uitvoeren van realtime-taken (dat verschenen is in kernel 5.3, de methode voor het verankeren van de belasting). De genoemde parameter garandeert dat de taak door de scheduler op een CPU-kern wordt geplaatst die voldoende prestaties heeft.
    • De kernel is ontdaan van het probleem van het jaar 2038. De laatste resterende handlers zijn vervangen, waarin voor de epoch-teller een 32-bits (signed int) type time_t werd gebruikt, dat, rekening houdend met de startdatum van 1970, in 2038 moet overstromen.
    • De verbetering van de interface voor asynchrone invoer/uitvoer is voortgezet io_uring, arguing that the ruling discriminates against providers and violates geleverd met ondersteuning voor nieuwe bewerkingen: IORING_OP_FALLOCATE (reserveren van lege gebieden), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (openen en sluiten van bestanden),
      IORING_OP_FILES_UPDATE (toevoegen en verwijderen van bestanden uit de snelle toegangslijst),
      IORING_OP_STATX (opvragen van informatie over een bestand),
      IORING_OP_READ,
      IORING_OP_WRITE (vereenvoudigde versies van IORING_OP_READV en IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynchrone varianten van de aanroepen posix_fadvise en madvise), IORING_OP_SEND,
      IORING_OP_RECV (verzenden en ontvangen van netwerkgegevens),
      IORING_OP_EPOLL_CTL (uitvoeren van bewerkingen op epoll-bestandshandles).
    • Systeemoproep toegevoegd pidfd_getfd(), waarmee een proces een bestandshandle van een geopend bestand uit een ander proces kan extraheren.
    • Geïmplementeerd de «bootconfig»-methode, waarmee naast commandoregelopties de werkparameters van de kernel via een configuratiebestand kunnen worden gedefinieerd. Voor het toevoegen van dergelijke bestanden aan het initramfs-image is er een bootconfig-util aangeboden. Deze mogelijkheid kan bijvoorbeeld worden gebruikt om kprobes tijdens het opstarten in te stellen.
    • Hervormd wachtmechanisme voor het schrijven en lezen van gegevens in niet-genaamde kanalen (pipe). Deze wijziging heeft het uitvoeren van taken versneld, zoals het parallel verzamelen van grote projecten. Deze optimalisatie kan echter leiden tot een raceconditie in GNU make door een fout in versie 4.2.1, die is opgelost in versie 4.3.
    • In prctl() is de vlag PR_SET_IO_FLUSHER toegevoegd, die kan worden toegepast om processen te markeren die zich bezighouden met geheugenontlasting, voor welke geen beperkingen moeten gelden in situaties van geheugen gebrek in het systeem.
    • Gebaseerd op het geheugentoewijzingssysteem ION dat in Android wordt toegepast, is een subsysteem geïmplementeerd. dma-buf heaps, waarmee het beheer van DMA-buffers voor het delen van geheugengebieden door stuurprogramma's, applicaties en verschillende subsystemen mogelijk is.
  • Hardware-architecturen
    • Ondersteuning voor de E0PD-extensie is toegevoegd, verschenen in ARMv8.5 en die bescherming biedt tegen aanvallen gerelateerd aan speculatieve uitvoering van instructies in de CPU. Bescherming op basis van E0PD resulteert in lagere overheadkosten dan KPTI (Kernel Page Table Isolation).
    • Voor systemen op basis van de ARMv8.5-architectuur is ondersteuning voor de RNG-instructie toegevoegd, die toegang biedt tot een hardwarematige pseudowillekeurige getallengenerator. In de kernel wordt de RNG-instructie gebruikt voor het genereren van entropie bij de initiatie van de door de kernel aangeboden pseudowillekeurige getallengenerator.
    • Ondersteuning voor MPX (Memory Protection Extensions), die aan de kernel is toegevoegd, is verwijderd. 3.19 en waarmee controle op aanwijzers voor het naleven van geheugengrenzen kan worden georganiseerd. Deze technologie heeft geen brede verspreiding gevonden in compilers en is uit GCC verwijderd.
    • Voor de RISC-V-architectuur is ondersteuning voor de KASan (Kernel address sanitizer) debugtool geïmplementeerd, die helpt bij het identificeren van fouten in het werken met geheugen.
  • Apparatuur
    • Ondersteuning is gerealiseerd voor de specificatie USB 4.0, die is gebaseerd op de Thunderbolt 3-protocol en een doorvoersnelheid tot 40 Gbit/s biedt, met behoud van achterwaartse compatibiliteit met USB 2.0 en USB 3.2. Analoom aan Thunderbolt biedt de USB 4.0-interface de mogelijkheid om verschillende protocollen over één kabel met een Type-C aansluiting te tunnelen., inclusief PCIe, Display Port en USB 3.x, evenals software-implementaties van protocollen, bijvoorbeeld voor het opzetten van netwerklinks tussen hosts. De implementatie is gebaseerd op de bestaande Linux-kerneldriver voor Thunderbolt en past deze aan voor gebruik met hosts en apparaten die compatibel zijn met USB4. Wijzigingen voegen ook ondersteuning toe voor Thunderbolt 3-apparaten in de software-implementatie van de verbindingsmanager (Connection Manager), die verantwoordelijk is voor het creëren van tunnels voor de verbinding van meerdere apparaten via één poort.
    • In de amdgpu-driver toegevoegd is de initiële ondersteuning voor HDCP 2.x (High-bandwidth Digital Content Protection) toegevoegd. Ondersteuning voor de AMD Pollock ASIC-chip, gebaseerd op Raven 2, is toegevoegd. De mogelijkheid om de GPU opnieuw in te stellen voor de Renoir- en Navi-families is geïmplementeerd.
    • In de DRM-driver voor Intel grafische kaarten toegevoegd is de ondersteuning voor DSI VDSC voor chips op basis van de microarchitectuur Ice Lake en Tiger Lake toegevoegd, is LMEM mmap (device local memory) geïmplementeerd, is de parsing van VBT (Video BIOS Table) verbeterd, en is de ondersteuning voor HDCP 2.2 voor Coffee Lake-chips geïmplementeerd.
    • Het werk aan de unificatie van de amdkfd-driver (voor discrete GPU's zoals Fiji, Tonga, Polaris) met de amdgpu-driver is voortgezet.
    • De k10temp-driver is herzien, waarbij ondersteuning is toegevoegd voor het weergeven van spannings- en stroomparameters voor de AMD Zen CPU, evenals uitgebreide informatie van de temperatuursensoren die worden gebruikt in de Zen en Zen 2 CPU's.
    • In de nouveau-driver toegevoegd is ondersteuning toegevoegd voor de geverifieerde opstartmodus van de firmware voor NVIDIA GPU's op basis van de Turing-microarchitectuur (GeForce RTX 2000), wat het mogelijk maakte om 3D-versnellingsondersteuning voor deze kaarten in te schakelen (officiële firmware met digitale handtekening van NVIDIA is vereist). Ondersteuning voor de TU10x grafische engine is toegevoegd. Problemen met HD Audio zijn opgelost.
    • Ondersteuning voor gegevenscompressie tijdens overdracht via DisplayPort MST (Multi-Stream Transport) is toegevoegd.
    • Er is een nieuwe driver toegevoegd:ath11kvoor draadloze Qualcomm-chips met ondersteuning voor 802.11ax.
      De driver is gebaseerd op de mac80211-stack en ondersteunt de modi access point, workstation en Mesh-netwerk.
    • Via sysfs is toegang verleend tot leesbare metingen van temperatuursensoren die worden gebruikt in moderne harde schijven en SSD's.
    • Toegevoegd er zijn belangrijke wijzigingen aangebracht in het ALSA-geluidsysteem, gericht op het verwijderen van code het probleem van het jaar 2038 (overstappen van het gebruik van het 32-bits type time_t in de interfaces snd_pcm_mmap_status en snd_pcm_mmap_control). Ondersteuning voor nieuwe audiocodecs is toegevoegd,
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.
    • Toegevoegd drivers voor LCD-panelen Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.
    • Toegevoegd ondersteuning voor ARM-platforms en Gen1 Amazon Echo (OMAP3630-gebaseerd), 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-lezer,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX en 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. Ondersteuning voor PCIe-controller toegevoegd, gebruikt in Raspberry Pi 4.

Tegelijkertijd Latijns-Amerikaanse Stichting voor Vrije Software gecreëerd
optie volledig vrij kernel 5.6 — Linux-libre 5.6-gnu, ontdaan van elementen van firmware en drivers die niet-vrije componenten of code bevatten, waarvan het gebruik beperkt is door de fabrikant. In deze nieuwe release is het laden van blobs in drivers voor AMD TEE, ATH11K en Mediatek SCP uitgeschakeld. De schoonmaakcode voor blobs in de drivers en subsystemen AMD PSP, amdgpu en nouveau 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