Linux kernvrystelling 5.9

Na twee maande van ontwikkeling, Linus Torvalds voorgelê kern vrystelling Linux 5.9. Van die mees noemenswaardige veranderinge: beperking van die invoer van simbole van eie modules na GPL-modules, bespoediging van kontekswisseling bedrywighede met behulp van die FSGSBASE verwerker instruksie, ondersteuning vir kern beeld kompressie met behulp van Zstd, herbewerking van die prioritisering van drade in die kern, ondersteuning vir die PRP (Parallel Redundancy Protocol), bandwydtebewuste skedulering in die spertydskeduleerder, voorkomende verpakking van geheuebladsye, vermoëvlag CAP_CHECKPOINT_RESTOR, close_range() stelseloproep, dm-crypt werkverrigtingverbeterings, kodeverwydering vir 32-bis Xen PV-gaste, nuwe plaatgeheue bestuursmeganisme, opsie "redding" in Btrfs, ondersteuning vir inlyn-enkripsie in ext4 en F2FS.

Die nuwe weergawe bevat 16074 regstellings van 2011-ontwikkelaars,
pleistergrootte - 62 MB (veranderinge het 14548 lêers geraak, 782155 reëls kode is bygevoeg, 314792 reëls is uitgevee). Ongeveer 45% van almal aangebied in 5.9
veranderinge hou verband met toestelbestuurders, ongeveer 15% van veranderinge is
houding teenoor die opdatering van kode spesifiek vir hardeware-argitekture, 13%
verwant aan die netwerkstapel, 3% aan lêerstelsels en 3% aan interne
kern substelsels.

Die belangrikste innovasies:

  • Geheue en stelseldienste
    • Styf getrek beskerming teen die gebruik van GPL-lae vir die koppeling van eie drywers met kernkomponente wat slegs uitgevoer word vir modules onder die GPL-lisensie. Die TAINT_PROPRIETARY_MODULE-vlag word nou geërf in alle modules wat simbole invoer vanaf modules met hierdie vlag. As 'n GPL-module probeer om simbole vanaf 'n nie-GPL-module in te voer, sal daardie GPL-module die TAINT_PROPRIETARY_MODULE-etiket erf en nie toegang tot kernkomponente kan verkry wat slegs vir GPL-gelisensieerde modules beskikbaar is nie, selfs al het die module voorheen simbole vanaf ingevoer die "gplonly" kategorie. Die omgekeerde slot (wat slegs EXPORT_SYMBOL_GPL uitvoer in modules wat EXPORT_SYMBOL_GPL ingevoer het), wat die werk van eie drywers kan breek, word nie geïmplementeer nie (slegs die eie modulevlag word geërf, maar nie die GPL-bindings nie).
    • Bygevoeg kcompactd enjin ondersteuning vir voorafverpak van geheuebladsye in die agtergrond om die aantal groot geheuebladsye wat vir die kern beskikbaar is, te verhoog. Volgens voorlopige skattings kan agtergrondverpakking, ten koste van minimale bokoste, vertragings verminder wanneer groot geheuebladsye (groot bladsy) toegewys word met 70-80 keer in vergelyking met die voorheen gebruikte verpakkingsmeganisme, wat bekendgestel word wanneer die behoefte ontstaan ​​(op aanvraag) ). Om die grense te stel van die eksterne fragmentasie wat kcompactd sal verskaf, is sysctl vm.compaction_proactiveness bygevoeg.
    • Bygevoeg ondersteuning vir kernbeeldkompressie met behulp van algoritme zstandaard (zstd).
    • Ondersteuning vir verwerkerinstruksies is vir x86-stelsels geïmplementeer FSGSBASE, wat jou toelaat om die inhoud van die FS/GS-registers vanuit gebruikersruimte te lees en te verander. In die kern word FSGSBASE gebruik om kontekswisselingsoperasies te bespoedig deur onnodige MSR-skryfbewerkings vir GSBASE uit te skakel, en in gebruikersruimte vermy dit onnodige stelseloproepe om FS/GS te verander.
    • Bygevoeg die "allow_writes"-parameter laat jou toe om veranderinge aan die verwerker se MSR-registers uit gebruikersruimte te verbied en toegang tot die inhoud van hierdie registers te beperk om bewerkings te lees, aangesien die verandering van die MSR tot probleme kan lei. By verstek is skryf nog nie gedeaktiveer nie, en veranderinge aan die MSR word in die log weerspieël, maar in die toekoms word beplan om die verstektoegang na leesalleenmodus oor te skakel.
    • Na die asinchroniese I/O-koppelvlak io_uring Volle ondersteuning bygevoeg vir asynchrone gebufferde leesbewerkings wat nie kerndrade benodig nie. Opname-ondersteuning word in 'n toekomstige vrystelling verwag.
    • In die I/O-skeduleerder-sperdatum geïmplementeer beplanning gebaseer op kapasiteit, toelaat neem korrekte besluite oor asimmetriese stelsels soos ARM-gebaseerde stelsels DinamIQ en big.LITTLE, wat kragtige en minder doeltreffende energiedoeltreffende SVE-kerns in een skyfie kombineer. Die nuwe modus laat jou veral toe om skedule-wanpassings te vermy wanneer 'n stadige SVE-kern nie die regte hulpbronne het om 'n taak betyds te voltooi nie.
    • Die energieverbruiksmodel in die kern (Energy Model framework) is nou beskryf die nie net CPU-kragverbruikgedrag nie, maar dek ook randtoestelle.
    • Die close_range()-stelseloproep is geïmplementeer om 'n proses toe te laat om 'n hele reeks oop lêerbeskrywers gelyktydig toe te maak.
    • Van die implementering van die tekskonsole en die fbcon-bestuurder kode verwyder, wat die vermoë bied om teks terug te blaai (CONFIG_VGACON_SOFT_SCROLLBACK) met meer as die hoeveelheid VGA-teksmodusvideogeheue.
    • Herontwerp algoritme vir die toekenning van prioriteite aan drade binne die kern. Die nuwe opsie bied beter konsekwentheid oor alle kernsubstelsels wanneer prioriteite aan intydse take toegeken word.
    • Bygevoeg sysctl sched_uclamp_util_min_rt_default om SVE-versterking-instellings vir intydse take te beheer (jy kan byvoorbeeld die gedrag van intydse take dadelik verander om krag te bespaar nadat jy na batterykrag of op mobiele stelsels oorgeskakel het).
    • Voorbereidings is getref om ondersteuning vir Transparent Huge Pages-tegnologie in die bladsykas te implementeer.
    • Die fanotify-enjin implementeer nuwe vlae FAN_REPORT_NAME en FAN_REPORT_DIR_FID om ouernaam en unieke FID-inligting aan te meld wanneer skepping, verwydering of bewegingsgebeurtenisse plaasvind vir gidsitems en nie-gidsobjekte.
    • Vir cgroepe geïmplementeer 'n nuwe bladgeheuebeheerder, wat opvallend is vir die verskuiwing van bladrekeningkunde van die geheuebladsyvlak na die kernobjekvlak, wat dit moontlik maak om bladbladsye in verskillende cgroups te deel, in plaas daarvan om aparte bladkase vir elke cgroup toe te ken. Die voorgestelde benadering maak dit moontlik om die doeltreffendheid van die gebruik van blad te verhoog, die grootte van die geheue wat vir blad gebruik word met 30-45% te verminder, die algehele geheueverbruik van die kern aansienlik te verminder en geheuefragmentasie te verminder.
    • In die klanksubstelsel Alsa и USB-stapel, in ooreenstemming met onlangs aangeneem aanbevelings oor die gebruik van inklusiewe terminologie in die Linux-kern; polities inkorrekte terme is skoongemaak. Die kode is skoongemaak van die woorde "slaaf", "meester", "swartlys" en "witlys".
  • Virtualisering en sekuriteit
    • By die bou van die kern met behulp van die Clang samesteller verskyn die vermoë om (CONFIG_INIT_STACK_ALL_ZERO) outomatiese inisialisering te konfigureer na nul van alle veranderlikes wat op die stapel gestoor is (wanneer jy bou, spesifiseer "-ftrivial-auto-var-init=nul").
    • In die secomp-substelsel, wanneer die prosesbeheermodus in gebruikersruimte gebruik word, bygevoeg geleentheid vervanging van lêerbeskrywers in die gemonitorde proses om stelseloproepe wat lei tot die skepping van lêerbeskrywers ten volle na te boots. Die funksionaliteit is in aanvraag in geïsoleerde houerstelsels en sandbox-implementerings vir Chrome.
    • Vir die xtensa- en csky-argitekture is ondersteuning bygevoeg vir die beperking van stelseloproepe deur die seccomp-substelsel te gebruik. Vir xtensa word ondersteuning vir die ouditmeganisme bykomend geïmplementeer.
    • Bygevoeg nuwe vermoëvlag CAP_CHECKPOINT_RESTORE, wat jou toelaat om toegang te verskaf tot vermoëns wat verband hou met die vries en herstel van die toestand van prosesse sonder om bykomende voorregte oor te dra.
    • GCC 11 bied al die funksies wat jy nodig het
      ontfoutingsinstrument KCSAN (Kernel Concurrency Sanitizer), wat ontwerp is om rastoestande binne die kern dinamies op te spoor. KCSAN kan dus nou gebruik word met pitte wat in GCC gebou is.

    • Vir AMD Zen en nuwer SVE-modelle bygevoeg ondersteuning vir P2PDMA-tegnologie, wat jou toelaat om DMA te gebruik vir direkte data-oordrag tussen die geheue van twee toestelle wat aan die PCI-bus gekoppel is.
    • 'n Modus is by dm-crypt gevoeg wat jou toelaat om latensie te verminder deur kriptografiese dataverwerking uit te voer sonder om werkrye te gebruik. Hierdie modus is ook nodig vir korrekte werking met gesoneer blok toestelle (toestelle met areas wat opeenvolgend geskryf moet word, wat die hele groep blokke bywerk). Werk is gedoen om deurset te verhoog en latensie in dm-crypt te verminder.
    • Verwyder kode om 32-bis gaste te ondersteun wat in paravirtualiseringsmodus loop met die Xen-hipervisor. Gebruikers van sulke stelsels moet oorskakel na die gebruik van 64-bis-pitte in gasomgewings of gebruik volledige (HVM) of gekombineerde (PVH) virtualisasiemodusse in plaas van paravirtualisering (PV) om omgewings te laat loop.
  • Skyfsubstelsel, I/O en lêerstelsels
    • Op die Btrfs-lêerstelsel geïmplementeer 'n "redding" bergopsie wat toegang tot alle ander herstelopsies verenig. Ondersteuning vir die "alloc_start" en "subvolrootid" opsies is verwyder, en die "inode_cache" opsie is afgekeur. Prestasie-optimalisasies is gemaak, veral wat die uitvoering van fsync()-bewerkings merkbaar bespoedig. Bygevoeg die vermoë om alternatiewe tipes kontrolesomme anders as CRC32c te gebruik.
    • Bygevoeg die vermoë om inlyn-enkripsie (inlyn-enkripsie) in ext4- en F2FS-lêerstelsels te gebruik, om die "inlinecrypt"-montering opsie moontlik te maak. Inlyn-enkripsiemodus laat jou toe om die enkripsiemeganismes wat in die dryfbeheerder ingebou is, te gebruik, wat invoer/uitvoer deursigtig enkripteer en dekripteer.
    • In XFS beveilig inode-terugstelling (spoel) in 'n heeltemal asinchrone modus wat nie prosesse blokkeer wanneer 'n geheue-opruimbewerking uitgevoer word nie. Het 'n langdurige kwotakwessie opgelos wat veroorsaak het dat sagte limiet en inode limiet waarskuwings verkeerd opgespoor is. Eenvormige implementering van DAX-ondersteuning vir ext4 en xfs.
    • In Ext4 geïmplementeer vooraflaai bloktoekenning bitmaps. Gekombineer met die beperking van skandering van ongeinitialiseerde groepe, het die optimalisering die tyd verminder wat nodig is om baie groot partisies te monteer.
    • In F2FS bygevoeg ioctl F2FS_IOC_SEC_TRIM_FILE, wat jou toelaat om die TRIM/weggooi-opdragte te gebruik om gespesifiseerde data in 'n lêer fisies terug te stel, byvoorbeeld om toegangsleutels uit te vee sonder om oorblywende data op die skyf te laat.
      In F2FS ook bygevoeg nuwe vullisverwyderingsmodus GC_URGENT_LOW, wat meer aggressief werk deur 'n paar tjeks uit te skakel dat hulle in die ledige toestand is voordat die vullisverwyderaar begin word.

    • In bcache is die bucket_size vir omvangs van 16 tot 32 bisse verhoog ter voorbereiding vir die aktivering van gesoneer toestelkase.
    • Die vermoë om inlyn-enkripsie te gebruik gebaseer op ingeboude hardeware-enkripsie wat deur UV-beheerders verskaf word, is by die SCSI-substelsel (Universele flitsberging).
    • 'n Nuwe kern-opdragreëlparameter "debugfs" is bygevoeg, wat jou toelaat om die beskikbaarheid van die pseudo-FS met dieselfde naam te beheer.
    • Die NFSv4.2-kliënt bied ondersteuning vir uitgebreide lêerkenmerke (xattr).
    • In dm-stof bygevoeg koppelvlak om gelyktydig 'n lys van alle geïdentifiseerde slegte blokke op die skyf te vertoon ("dmsetup message dust1 0 listbadblocks").
    • Vir md/raid5 is die parameter /sys/block/md1/md/stripe_size bygevoeg om die STRIPE-blokgrootte te konfigureer.
    • Vir NVMe-bergingstoestelle bygevoeg ondersteuning vir dryfsonering-opdragte (ZNS, NVM Express Zoned Namespace), wat jou toelaat om stoorspasie in sones te verdeel wat groepe blokke uitmaak vir meer volledige beheer oor die plasing van data op die stasie.
  • Netwerk substelsel
    • In Netfilter bygevoeg die vermoë om pakkies te verwerp op die stadium voor die roete-kontrole (die REJECT-uitdrukking kan nou nie net in die INPUT-, FORWARD- en OUTPUT-kettings gebruik word nie, maar ook by die PREROUTING-stadium vir icmp en tcp).
    • In nftables bygevoeg die vermoë om gebeurtenisse wat verband hou met konfigurasieveranderinge te oudit.
    • In nftables in die netlink API bygevoeg ondersteuning vir anonieme kettings, waarvan die naam dinamies deur die kern toegeken word. Wanneer jy 'n reël uitvee wat met 'n anonieme ketting geassosieer word, word die ketting self outomaties uitgevee.
    • BPF voeg ondersteuning by vir iterators om elemente van assosiatiewe skikkings (kaarte) te deurkruis, te filter en te wysig sonder om data na gebruikersruimte te kopieer. Iterators kan gebruik word vir TCP- en UDP-vokkies, wat BPF-programme toelaat om oor lyste van oop voetstukke te herhaal en die inligting wat hulle benodig daaruit te onttrek.
    • Het 'n nuwe tipe BPF-program BPF_PROG_TYPE_SK_LOOKUP bygevoeg, wat geloods word wanneer die kern vir 'n geskikte luistersok vir 'n inkomende verbinding soek. Deur 'n BPF-program soos hierdie te gebruik, kan jy hanteerders skep wat besluite neem oor met watter sok 'n verbinding geassosieer moet word, sonder om deur die bind()-stelseloproep beperk te word. Byvoorbeeld, jy kan 'n enkele sok assosieer met 'n reeks adresse of poorte. Daarbenewens is ondersteuning vir die SO_KEEPALIVE-vlag by bpf_setsockopt() gevoeg en die vermoë om BPF_CGROUP_INET_SOCK_RELEASE-hanteerders te installeer, wat genoem word wanneer die sok vrygestel word, is geïmplementeer.
    • Protokol ondersteuning geïmplementeer PRP (Parallel Redundancy Protocol), wat Ethernet-gebaseerde oorskakeling na 'n rugsteunkanaal moontlik maak, deursigtig vir toepassings, in die geval van mislukking van enige netwerkkomponente.
    • Stapel mac80211 bygevoeg ondersteuning vir vier-fase WPA/WPA2-PSK-kanaalonderhandeling in toegangspuntmodus.
    • Bygevoeg die vermoë om die qdisc (toue dissipline) skeduleerder te skakel om die FQ-PIE (Flow Queue PIE) netwerk tou bestuur algoritme by verstek te gebruik, wat daarop gemik is om die negatiewe impak van intermediêre pakkie buffering op rand netwerk toerusting (bufferbloat) in netwerke met kabelmodems.
    • Nuwe kenmerke is bygevoeg tot MPTCP (MultiPath TCP), uitbreidings van die TCP-protokol vir die organisering van die werking van 'n TCP-verbinding met die aflewering van pakkies gelyktydig langs verskeie roetes deur verskillende netwerkkoppelvlakke wat met verskillende IP-adresse geassosieer word. Bygevoeg ondersteuning vir syn koekie, DATA_FIN, buffer outo-instelling, sok diagnostiek, en REUSEADDR, REUSEPORT en V6ONLY vlae in setsockopt.
    • Vir virtuele roeteringstabelle VRF (Virtual Routing and Forwarding), wat dit moontlik maak om die werking van verskeie roeteringsdomeine op een stelsel te organiseer, is die "streng" modus geïmplementeer. In hierdie modus kan 'n virtuele tabel slegs geassosieer word met 'n roeteringtabel wat nie in ander virtuele tabelle gebruik word nie.
    • Die draadlose bestuurder is ath11k bygevoeg ondersteun 6GHz frekwensie en spektrale skandering.
  • Оборудование
    • Verwyder kode om die UniCore-argitektuur te ondersteun, ontwikkel by die Mikroverwerkersentrum van Peking Universiteit en ingesluit in die Linux-kern in 2011. Hierdie argitektuur word sedert 2014 nie onderhou nie en het geen ondersteuning in GCC nie.
    • Ondersteuning vir RISC-V-argitektuur is geïmplementeer kcov (debugfs-koppelvlak vir die ontleding van kernkodedekking), kmemleak (geheuelekopsporingstelsel), stapelbeskerming, springmerke en tiklose bewerkings (multitasking onafhanklik van timerseine).
    • Vir die PowerPC-argitektuur is ondersteuning vir spinlock-rye geïmplementeer, wat prestasie in slotkonfliksituasies aansienlik verbeter het.
    • Vir ARM- en ARM64-argitekture is die verwerkerfrekwensiereguleringsmeganisme by verstek geaktiveer skeduleer (cpufreq-goewerneur), wat inligting van die taakskeduleerder direk gebruik om 'n besluit te neem oor die verandering van die frekwensie en onmiddellik toegang tot die cpufreq-bestuurders kan kry om die frekwensie vinnig te verander, wat die SVE-bedryfsparameters onmiddellik aanpas by die huidige las.
    • Die i915 DRM-bestuurder vir Intel-grafiese kaarte bevat ondersteuning vir skyfies gebaseer op mikroargitektuur vuurpyl meer en aanvanklike ondersteuning vir diskrete kaarte bygevoeg Intel Xe DG1.
    • Amdgpu-bestuurder het aanvanklike ondersteuning vir AMD GPU's bygevoeg Navi 21 (Navy Flounder) en Navi 22 (Sienna Cichlid). Bygevoeg ondersteuning vir UVD / VCE video enkodering en dekodering versnelling enjins vir die Suidelike Eilande GPU (Radeon HD 7000).
      Het 'n eienskap bygevoeg om die skerm met 90, 180 of 270 grade te draai.

      Interessant genoeg, die bestuurder vir AMD GPU is die grootste drywer in die kern - dit het ongeveer 2.71 miljoen reëls kode, wat ongeveer 10% van die totale kerngrootte is (27.81 miljoen reëls). Terselfdertyd word 1.79 miljoen reëls verantwoord deur outomaties gegenereerde koplêers met data vir GPU-registers, en die C-kode is 366 duisend reëls (ter vergelyking, die Intel i915-bestuurder bevat 209 duisend reëls, en Nouveau - 149 duisend).

    • In Nouveau bestuurder bygevoeg ondersteuning vir raam-vir-raam integriteit kontrolering met behulp van CRC (Sikliese oortolligheidkontroles) in NVIDIA GPU-skermenjins. Die implementering is gebaseer op dokumentasie wat deur NVIDIA verskaf word.
    • Bygevoeg drywers vir LCD-panele: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 en Xingbangda XBD599.
    • Die ALSA klank substelsel ondersteun Intel Silent Stream (deurlopende kragmodus vir eksterne HDMI-toestelle om vertraging uit te skakel wanneer afspeel begin) en nuwe toestel om die verligting van die mikrofoonaktivering en dempknoppies te beheer, en het ook ondersteuning bygevoeg vir nuwe toerusting, insluitend 'n kontroleerder Longson 7A1000.
    • Bygevoegde ondersteuning vir ARM-borde, -toestelle en -platforms: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (gebruik in Sony Xperia 10, 10 Plus, XA2, X2A2 en XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core6, Aspeed EthanolX, vyf nuwe borde gebaseer op NXP i.MX3011, MikroTik RouterBoard 950, Xiaomi Libra, Microsoft Lumia 5, Sony Xperia Z5, MStar, Microchip Sparx3, Intel Keem Bay, Amazon Alpine v2, Renesas RZ/GXNUMXH.

Terselfdertyd, die Latyns-Amerikaanse Free Software Foundation gevorm
opsie heeltemal gratis kern 5.9 - Linux-vrye 5.9-gnu, skoongemaak van firmware en bestuurderelemente wat nie-vrye komponente of kodeafdelings bevat, waarvan die omvang deur die vervaardiger beperk word. Die nuwe weergawe deaktiveer bloblaai in drywers vir WiFi rtw8821c en SoC MediaTek mt8183. Opgedateerde blob-skoonmaakkode in Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) en x86 raakskermbestuurders en substelsels.

Bron: opennet.ru

Voeg 'n opmerking