Linux 5.6 kernel-release

Na twee maanden ontwikkeling, Linus Torvalds ingediend kernel-release Linux 5.6. Een van de meest opvallende veranderingen: integratie van de WireGuard VPN-interface, ondersteuning voor USB4, naamruimten voor tijd, de mogelijkheid om TCP-congestie-handlers te maken met behulp van BPF, initiële ondersteuning voor MultiPath TCP, het wegnemen van de kernel van het 2038-probleem, het “bootconfig”-mechanisme , ZoneFS.

De nieuwe versie bevat 13702 oplossingen van 1810 ontwikkelaars,
patchgrootte - 40 MB (wijzigingen hadden invloed op 11577 bestanden, 610012 regels code toegevoegd,
294828 rijen verwijderd). Ongeveer 45% van alle gepresenteerd in 5.6
wijzigingen hebben betrekking op apparaatstuurprogramma's; bij ongeveer 15% van de wijzigingen is dit het geval
houding ten opzichte van het updaten van code die specifiek is voor hardware-architecturen, 12%
geassocieerd met de netwerkstack, 4% met bestandssystemen en 3% met interne
kernel-subsystemen.

De belangrijkste innovaties:

  • Netwerksubsysteem
    • Toegevoegd implementatie van een VPN-interface WireGuard, dat is geïmplementeerd op basis van moderne encryptiemethoden (ChaCha20, Poly1305, Curve25519, BLAKE2s), is eenvoudig in gebruik, vrij van complicaties, heeft zichzelf bewezen in een aantal grote implementaties en levert zeer hoge prestaties (3,9 keer sneller dan OpenVPN qua van de doorvoer). WireGuard maakt gebruik van het concept van encryptiesleutelroutering, waarbij aan elke netwerkinterface een privésleutel wordt gekoppeld en deze wordt gebruikt om de openbare sleutels te binden. Publieke sleutels worden uitgewisseld om een ​​verbinding tot stand te brengen, vergelijkbaar met SSH. Cryptografische primitieven vereist om WireGuard te laten werken waren overgebracht van de bibliotheek zink als onderdeel van de standaard Crypto API en inbegrepen tot in de kern 5.5.
    • Gestart integratie van componenten die nodig zijn ter ondersteuning van MPTCP (MultiPath TCP), een uitbreiding van het TCP-protocol voor het organiseren van de werking van een TCP-verbinding met de gelijktijdige levering van pakketten langs verschillende routes via verschillende netwerkinterfaces die zijn gekoppeld aan verschillende IP-adressen. Voor netwerktoepassingen ziet zo'n geaggregeerde verbinding eruit als een gewone TCP-verbinding, en wordt alle stroomscheidingslogica uitgevoerd door MPTCP. Multipath TCP kan worden gebruikt om zowel de doorvoer als de betrouwbaarheid te vergroten. MPTCP kan bijvoorbeeld worden gebruikt om de datatransmissie op een smartphone te organiseren via gelijktijdige WiFi- en 4G-verbindingen, of om de kosten te verlagen door een server te verbinden via meerdere goedkope verbindingen in plaats van één dure.
    • Toegevoegd ondersteuning voor de netwerkwachtrijverwerkingsdiscipline sch_ets (Verbeterde transmissieselectie, IEEE 802.1Qaz), dat de mogelijkheid biedt om bandbreedte te verdelen tussen verschillende soorten verkeer. Als de belasting van een bepaalde verkeersklasse onder de toegewezen bandbreedte ligt, staat ETS andere verkeersklassen toe de beschikbare (ongebruikte) bandbreedte te gebruiken. Qdisc sch_ets is geconfigureerd als een PRIO-discipline en gebruikt verkeersklassen om strikte en gedeelde bandbreedtelimieten te definiëren. ETS werkt als een combinatie van disciplines VOORAFGAAND и DRR — bij strikt beperkte verkeersklassen wordt PRIO gebruikt, maar als er geen verkeer in de wachtrij staat, werkt het als DRR.
    • Een nieuw type BPF-programma's toegevoegd BPF_PROG_TYPE_STRUCT_OPS, waarmee u kernelfunctiehandlers via BPF kunt implementeren. Momenteel kan deze functie al worden gebruikt om TCP-congestiecontrole-algoritmen te implementeren in de vorm van BPF-programma's. Als voorbeeld voorgesteld BPF-programma met algoritme-implementatie DCTCP.
    • Geaccepteerd tot in de kern veranderingen, vertaalhulpmiddelen ethtool met ioctl() om te gebruiken netlink-interface. De nieuwe interface maakt het gemakkelijker om extensies toe te voegen, verbetert de foutafhandeling, maakt het verzenden van meldingen mogelijk wanneer de status verandert, vereenvoudigt de interactie tussen de kernel en de gebruikersruimte en vermindert het aantal benoemde lijsten dat moet worden gesynchroniseerd.
    • Implementatie toegevoegd van het FQ-PIE (Flow Queue PIE) algoritme voor netwerkwachtrijbeheer, gericht op het verminderen van de negatieve impact van tussentijdse pakketbuffering op randnetwerkapparatuur (bufferbloat). FQ-PIE vertoont een hoge efficiëntie bij gebruik in systemen met kabelmodems.
  • Schijfsubsysteem, I/O en bestandssystemen
    • Voor Btrfs-bestandssysteem toegevoegd asynchrone implementatie van de DISCARD-bewerking (het markeren van bevrijde blokken die niet langer fysiek hoeven te worden opgeslagen). Aanvankelijk werden DISCARD-bewerkingen synchroon uitgevoerd, wat tot prestatieverlies kon leiden omdat de schijven wachtten tot de overeenkomstige opdrachten waren voltooid. Met asynchrone implementatie hoeft u niet te wachten tot de schijf DISCARD heeft voltooid en deze bewerking op de achtergrond uit te voeren.
    • In XFS voerde uit Het opruimen van code die oude 32-bit tijdtellers gebruikte (het type time_t werd vervangen door time64_t), wat leidde tot het 2038-probleem. Er zijn fouten en geheugenbeschadiging opgelost die optraden op 32-bits platforms. De code is herwerkt om met uitgebreide attributen te werken.
    • Naar ext4 bestandssysteem ingevoerde Prestatieoptimalisaties met betrekking tot het omgaan met inode-vergrendeling tijdens lees- en schrijfbewerkingen. Verbeterde herschrijfprestaties in Direct I/O-modus. Om de diagnose van problemen te vereenvoudigen, worden de eerste en laatste foutcodes in het superblok opgeslagen.
    • Op het F2FS-bestandssysteem geïmplementeerd mogelijkheid om gegevens in gecomprimeerde vorm op te slaan. Voor een individueel bestand of map kan compressie worden ingeschakeld met behulp van de opdracht "chattr +c file" of "chattr +c dir; raak map/bestand aan". Om de hele partitie te comprimeren, kunt u de optie “-o compress_extension=ext” in het mount-hulpprogramma gebruiken.
    • De kernel bevat een bestandssysteem ZoneFS, wat het werken op laag niveau met gezoneerde opslagapparaten vereenvoudigt. Met gezoneerde schijven worden apparaten op harde magnetische schijven of NVMe SSD's bedoeld, waarbij de opslagruimte is verdeeld in zones die groepen blokken of sectoren vormen, waarin alleen opeenvolgende toevoeging van gegevens is toegestaan, waarbij de hele groep blokken wordt bijgewerkt. FS ZoneFS is ontwikkeld door Western Digital en koppelt elke zone in de schijf aan een afzonderlijk bestand dat kan worden gebruikt om gegevens in onbewerkte modus op te slaan zonder manipulatie op sector- en blokniveau, d.w.z. Hiermee kunnen toepassingen de bestands-API gebruiken in plaats van rechtstreeks toegang te krijgen tot het blokapparaat met behulp van een ioctl.
    • In NFS is het koppelen van partities via UDP standaard uitgeschakeld. Ondersteuning toegevoegd voor de mogelijkheid om bestanden rechtstreeks tussen servers te kopiëren, gedefinieerd in de NFS 4.2-specificatie. Een nieuwe mount-optie "softreval" toegevoegd, waarmee attribuutwaarden in de cache kunnen worden gebruikt in geval van een serverstoring. Als u deze optie bijvoorbeeld opgeeft, blijft het mogelijk om, nadat de server niet beschikbaar is, langs de paden in de NFS-partitie te bewegen en toegang te krijgen tot informatie die in de cache is opgeslagen.
    • Voerde uit optimalisatie van de prestaties van het fs-verity-mechanisme, dat wordt gebruikt om de integriteit en authenticatie van individuele bestanden te bewaken. Verhoogde sequentiële leessnelheid dankzij het gebruik van een Merkle-hashboom. De prestaties van FS_IOC_ENABLE_VERITY zijn geoptimaliseerd als er geen gegevens in de cache staan ​​(preventief lezen van pagina's met gegevens is toegepast).
  • Virtualisatie en beveiliging
    • De mogelijkheid om de SELinux-module uit te schakelen terwijl deze actief is, is verouderd, en het verwijderen van een reeds geactiveerde SELinux zal in de toekomst verboden zijn. Om SELinux uit te schakelen moet je de parameter "selinux=0" doorgeven op de kernelopdrachtregel.
    • Toegevoegd ondersteuning voor naamruimten voor tijd (tijdnaamruimten), waardoor u de status van de systeemklok aan de container kunt binden (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), gebruik uw eigen tijd in de container en zorg er bij het migreren van de container naar een andere host voor dat de CLOCK_MONOTONIC- en CLOCK_BOOTTIME-waarden ongewijzigd blijven (houd rekening met de tijd na het laden, met of zonder rekening te houden met de slaapmodus ).

    • De blokkeringspool /dev/random is verwijderd. Het gedrag van /dev/random is vergelijkbaar met /dev/urandom in termen van het voorkomen van entropieblokkering na initialisatie van de pool.
    • De kernkernel bevat een stuurprogramma waarmee gastsystemen waarop VirtualBox draait, mappen kunnen koppelen die door de hostomgeving zijn geëxporteerd (VirtualBox Shared Folder).
    • Er is een reeks patches toegevoegd aan het BPF-subsysteem (BPF-coördinator), wanneer u het Retpoline-mechanisme gebruikt om te beschermen tegen Spectre V2-klasse-aanvallen, kunt u de efficiëntie verhogen van het aanroepen van BPF-programma's wanneer daaraan gekoppelde gebeurtenissen optreden (het maakt het bijvoorbeeld mogelijk om het aanroepen van XDP-handlers te versnellen wanneer een netwerkpakket arriveert).
    • Stuurprogramma toegevoegd ter ondersteuning van TEE (Trusted Execution Environment) ingebouwd in AMD APU's.
  • Geheugen- en systeemservices
    • BPF heeft ondersteuning voor globale functies toegevoegd. De ontwikkeling wordt uitgevoerd als onderdeel van een initiatief om ondersteuning toe te voegen voor bibliotheken met functies die kunnen worden opgenomen in BPF-programma's. De volgende stap zal zijn het ondersteunen van dynamische uitbreidingen waarmee globale functies kunnen worden geladen, inclusief het vervangen van bestaande globale functies terwijl ze in gebruik zijn. Het BPF-subsysteem voegt ook ondersteuning toe voor een variant van de kaartbewerking (gebruikt om persistente gegevens op te slaan), die uitvoering in batchmodus ondersteunt.
    • Toegevoegd door Met het apparaat “cpu_cooling” kunt u een oververhitte CPU afkoelen door deze gedurende korte perioden in de inactieve toestand te plaatsen.
    • Systeemoproep toegevoegd openat2(), dat een reeks extra vlaggen biedt om de resolutie van het bestandspad te beperken (verbod op het kruisen van koppelpunten, symbolische links, magische links (/proc/PID/fd), “../” componenten).
    • Voor heterogene systemen gebaseerd op de big.LITTLE-architectuur, waarbij krachtige en minder efficiënte, energiezuinige CPU-kernen in één chip worden gecombineerd, wordt de parameter uclamp_min ingesteld bij het uitvoeren van realtime taken (naar voren gekomen in kernel 5.3 is er een mechanisme om de lading vast te zetten). Deze parameter zorgt ervoor dat de taak door de planner op een CPU-kern wordt geplaatst die voldoende prestaties levert.
    • De kernel is bevrijd van problemen van 2038. Vervangen de laatst overgebleven handlers, die het 32-bits (signed int) type time_t gebruikten voor de epochale tijdteller, die, rekening houdend met het rapport uit 1970, in 2038 zou moeten overstromen.
    • Voortdurende verbetering van de asynchrone I/O-interface io_uringwaarin beveiligd ondersteuning voor nieuwe operaties: IORING_OP_FALLOCATE (reservering van lege gebieden), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (bestanden openen en sluiten),
      IORING_OP_FILES_UPDATE (bestanden toevoegen aan en verwijderen uit de snelle toegangslijst),
      IORING_OP_STATX (verzoek om bestandsinformatie),
      IORING_OP_READ,
      IORING_OP_WRITE (vereenvoudigde analogen van IORING_OP_READV en IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynchrone varianten van oproepen posix_fadvise en madvise), IORING_OP_SEND,
      IORING_OP_RECV (netwerkgegevens verzenden en ontvangen),
      IORING_OP_EPOLL_CTL (voer bewerkingen uit op epoll-bestandsdescriptors).

    • Systeemoproep toegevoegd pidfd_getfd(), waardoor een proces een bestandsdescriptor voor een geopend bestand uit een ander proces kan ophalen.
    • Geïmplementeerd het “bootconfig”-mechanisme, waarmee, naast opdrachtregelopties, de parameters van de kernel kunnen worden bepaald via een instellingenbestand. Om dergelijke bestanden aan de initramfs-image toe te voegen, wordt het hulpprogramma bootconfig voorgesteld. Deze functie kan bijvoorbeeld worden gebruikt om kprobes tijdens het opstarten te configureren.
    • Opnieuw ontworpen een mechanisme om te wachten op het schrijven en lezen van gegevens in naamloze pijpen. De verandering maakte het mogelijk om taken zoals de parallelle montage van grote projecten te versnellen. Optimalisatie kan echter leiden tot een race condition in GNU make vanwege een bug in release 4.2.1, die is opgelost in versie 4.3.
    • De vlag PR_SET_IO_FLUSHER is toegevoegd aan prctl(), die kan worden gebruikt om geheugenvrije processen te markeren waarvoor geen limieten gelden als het systeem geen geheugen meer heeft.
    • Gebaseerd op het ION-geheugendistributiesysteem dat in Android wordt gebruikt, is een subsysteem geïmplementeerd dma-buf-heaps, waarmee u de toewijzing van DMA-buffers kunt regelen voor het delen van geheugengebieden tussen stuurprogramma's, applicaties en verschillende subsystemen.
  • Hardware-architecturen
    • Ondersteuning toegevoegd voor de E0PD-extensie, die verscheen in ARMv8.5 en bescherming biedt tegen aanvallen gerelateerd aan speculatieve uitvoering van instructies op de CPU. Op E0PD gebaseerde bescherming resulteert in lagere overhead dan KPTI-bescherming (Kernel Page Table Isolation).
    • Voor systemen gebaseerd op de ARMv8.5-architectuur is ondersteuning voor de RNG-instructie toegevoegd, die toegang biedt tot een hardwaregenerator voor pseudo-willekeurige getallen. In de kernel wordt de RNG-instructie gebruikt om entropie te genereren bij het initialiseren van de door de kernel geleverde generator van pseudo-willekeurige getallen.
    • Ondersteuning verwijderd voor MPX (Memory Protection Extensions) toegevoegd aan de kernel 3.19 en stelt u in staat de controle van verwijzingen te organiseren om ervoor te zorgen dat de grenzen van geheugengebieden worden gerespecteerd. Deze technologie werd niet veel gebruikt in compilers en werd uit GCC verwijderd.
    • Voor de RISC-V-architectuur is ondersteuning voor de KASan-foutopsporingstool (Kernel Address Sanitizer) geïmplementeerd, die helpt bij het identificeren van fouten bij het werken met geheugen.
  • Uitrusting
    • Specificatieondersteuning geïmplementeerd USB 4.0, dat is gebaseerd op het Thunderbolt 3-protocol en een doorvoersnelheid tot 40 Gbps biedt, terwijl de achterwaartse compatibiliteit met USB 2.0 en USB 3.2 behouden blijft. Naar analogie met Bliksemflits Met de USB 4.0-interface kunt u verschillende protocollen tunnelen via één enkele kabel met een connector Type-C, inclusief PCIe, Display Port en USB 3.x, evenals software-implementaties van protocollen, bijvoorbeeld voor het organiseren van netwerkverbindingen tussen hosts. De implementatie bouwt voort op de Thunderbolt-driver die al in de Linux-kernel zit en past deze aan om te werken met USB4-compatibele hosts en apparaten. De veranderingen voegen ook ondersteuning voor Thunderbolt 3-apparaten toe aan de software-implementatie van Connection Manager, die verantwoordelijk is voor het creëren van tunnels voor het verbinden van meerdere apparaten via één enkele connector.
    • In amdgpu-stuurprogramma toegevoegd initiële ondersteuning voor HDCP 2.x (High-bandwidth Digital Content Protection) kopieerbeveiligingstechnologie. Ondersteuning toegevoegd voor de AMD Pollock ASIC-chip op basis van Raven 2. De mogelijkheid geïmplementeerd om de GPU te resetten voor de Renoir- en Navi-families.
    • DRM-stuurprogramma voor Intel-videokaarten toegevoegd DSI VDSC-ondersteuning voor chips gebaseerd op Ice Lake- en Tiger Lake-microarchitectuur, LMEM mmap (device local memory) is geïmplementeerd, VBT-parsing (Video BIOS Table) is verbeterd en HDCP 2.2-ondersteuning is geïmplementeerd voor Coffee Lake-chips.
    • Er werd verder gewerkt aan het verenigen van de amdkfd-stuurprogrammacode (voor afzonderlijke GPU's, zoals Fiji, Tonga, Polaris) met het amdgpu-stuurprogramma.
    • Het k10temp-stuurprogramma is herwerkt en biedt ondersteuning voor het weergeven van spannings- en stroomparameters voor AMD Zen CPU's, evenals uitgebreide informatie van temperatuursensoren die worden gebruikt in Zen- en Zen 2-CPU's.
    • In de nouveau-driver toegevoegd ondersteuning voor geverifieerde firmware-laadmodus voor NVIDIA GPU's gebaseerd op de Turing-microarchitectuur (GeForce RTX 2000), die het mogelijk maakte om ondersteuning voor 3D-versnelling voor deze kaarten mogelijk te maken (het downloaden van officiële firmware met een digitale handtekening van NVIDIA is vereist). Ondersteuning toegevoegd voor de TU10x grafische engine. Problemen met HD Audio zijn opgelost.
    • Ondersteuning toegevoegd voor datacompressie bij verzending via DisplayPort MST (Multi-Stream Transport).
    • Nieuwe bestuurder toegevoegd "ath11k» voor draadloze Qualcomm-chips die 802.11ax ondersteunen.
      De driver is gebaseerd op de mac80211-stack en ondersteunt toegangspunt-, werkstation- en mesh-netwerkknooppuntmodi.

    • Via sysfs wordt toegang geboden tot leesbare temperatuursensormetingen die worden gebruikt op moderne harde schijven en SSD's.
    • Bijgedragen belangrijke wijzigingen aan het ALSA-geluidssysteem, gericht op het verwijderen van de code problemen van 2038 (waarbij het gebruik van het 32-bit time_t-type in de snd_pcm_mmap_status en snd_pcm_mmap_control interfaces wordt vermeden). Ondersteuning toegevoegd voor nieuwe audiocodecs
      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,
      Scherpe LS020B1DD01D.

    • Toegevoegd ondersteuning voor ARM-boards en Gen1-platforms 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-drager, 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 toegevoegd voor de PCIe-controller die wordt gebruikt in Raspberry Pi 4.

Tegelijkertijd de Latin American Free Software Foundation gevormd
вариант volledig gratis kernel 5.6 - Linux-libre 5.6-gnu, ontdaan van firmware- en driverelementen die niet-vrije componenten of codesecties bevatten, waarvan de reikwijdte wordt beperkt door de fabrikant. De nieuwe release schakelt het laden van blobs uit in stuurprogramma's voor AMD TEE, ATH11K en Mediatek SCP. Bijgewerkte blob-opschooncode in AMD PSP-, amdgpu- en nouveau-stuurprogramma's en subsystemen.

Bron: opennet.ru

Voeg een reactie