Linux kernvrystelling 5.1

Na twee maande van ontwikkeling, Linus Torvalds voorgelê kern vrystelling Linux 5.1. Van die mees noemenswaardige veranderinge: 'n nuwe koppelvlak vir asinchroniese I/O io_uring, die vermoë om NVDIMM as RAM te gebruik, ondersteuning vir gedeelde virtuele geheue in Nouveau, ondersteuning vir skaalbare monitering van baie groot lêerstelsels via fanotify, die vermoë om Zstd-kompressie te konfigureer vlakke in Btrfs, 'n nuwe cpuidle TEO-hanteerder, implementering van stelseloproepe om die 2038-probleem op te los, die vermoë om vanaf toestelkaarttoestelle sonder initramfs te begin, SafeSetID LSM-module, ondersteuning vir gekombineerde regstreekse pleisters.

Die belangrikste innovasies:

  • Skyfsubstelsel, I/O en lêerstelsels
    • Implementeer 'n nuwe koppelvlak vir asinchroniese I/O - io_uring, wat opvallend is vir sy ondersteuning vir I/O-peiling en die vermoë om met of sonder buffering te werk. Kom ons onthou dat die voorheen voorgestelde asynchrone I/O-meganisme "aio" nie gebufferde I/O ondersteun nie, slegs in O_DIRECT-modus kon werk (sonder om die kas te buffer en te omseil), probleme gehad het met sluiting as gevolg van wag vir metadata-beskikbaarheid, en groot oorhoofse koste getoon as gevolg van die kopiëring van data in die geheue.

      Binne die API
      io_uring-ontwikkelaars het probeer om die tekortkominge van die ou aio-koppelvlak uit te skakel. Deur produktiwiteit io_uring is baie naby aan SPDK en is aansienlik voor libaio wanneer werk met polling geaktiveer. 'n Biblioteek is voorberei vir die gebruik van io_uring in eindtoepassings wat in gebruikersruimte loop bevrydend, wat 'n hoëvlakraamwerk oor die kernkoppelvlak bied;

    • In die gebeurtenis opsporingsmeganisme in die FS fanotify() bygevoeg ondersteuning vir die dop van superblok- en struktuurveranderingsituasies dirent (gebeure van die skep, verwydering en skuif van dopgehou). Die voorgestelde kenmerke help om die skaalbaarheidsprobleme op te los wat ontstaan ​​wanneer rekursiewe veranderingsopsporing in baie groot lêerstelsels geskep word deur die inotify-meganisme te gebruik (dirente veranderinge kon voorheen slegs deur inotify nagespoor word, maar
      prestasie in toestande van rekursiewe dop van groot geneste dopgehou het veel te wense oorgelaat). Nou kan sulke monitering effektief deur fanotify gedoen word;

    • Op die Btrfs-lêerstelsel bygevoeg die vermoë om die kompressievlak vir die zstd-algoritme aan te pas, wat beskou kan word as 'n optimale kompromie tussen die vinnige maar oneffektiewe lz4 en die stadige maar goeie kompressie xz. Na analogie van hoe dit voorheen moontlik was om die kompressievlak in te stel wanneer zlib gebruik word, is ondersteuning vir die “-o compress=zstd:level”-monteeropsie vir zstd bygevoeg. Tydens toetsing het die minimum eerste vlak datakompressie met 2.658 keer verskaf met 'n kompressiespoed van 438.47 MB/s, dekompressiespoed van 910.51 MB/s en geheueverbruik van 780 MB, en die maksimum vlak 15 verskaf 3.126 keer, maar met 'n kompressie spoed van 37.30 MB/s. uitpak 878.84 MB/s en geheueverbruik 2547 MB;
    • Bygevoeg die vermoë om te begin vanaf 'n lêerstelsel wat op die toestelkaart-toestel geleë is, sonder om initramfs te gebruik. Begin met die huidige kernvrystelling, kan toestelkaarttoestelle direk tydens die opstartproses gebruik word, byvoorbeeld as 'n partisie met die wortellêerstelsel. Die partisie word gekonfigureer met die opstartparameter "dm-mod.create". Toestelkaartmodules wat toegelaat word vir laai sluit in: "krip", "vertraging", "lineêr", "kiekie-oorsprong" en "waarheid";
    • Die F2FS_NOCOW_FL-vlag is bygevoeg tot die F2FS-lêerstelsel gerig op Flash drives, wat jou toelaat om kopieer-op-skryf-modus vir 'n gegewe lêer te deaktiveer;
    • Lêerstelsel verwyder uit kern Exofs, wat 'n variant van ext2 is, aangepas om met OSD (Object-based Storage Device) voorwerpbergings te werk. Ondersteuning vir die SCSI-protokol vir sulke voorwerpbergingstoestelle is ook verwyder;
  • Virtualisering en sekuriteit
    • Bygevoeg PR_SPEC_DISABLE_NOEXEC opsie by prctl() om spekulatiewe uitvoering van instruksies vir die geselekteerde proses te beheer. 'n Nuwe opsie laat jou toe om spekulatiewe uitvoering selektief uit te skakel vir prosesse wat moontlik deur 'n Spectre-aanval aangeval kan word. Die slot duur tot die eerste oproep na exec();
    • Geïmplementeerde LSM-module SafeSetID, wat stelseldienste toelaat om gebruikers veilig te bestuur sonder om voorregte te eskaleer (CAP_SETUID) en sonder om wortelvoorregte te verkry. Voorregte word toegeken deur reëls in securityfs te definieer gebaseer op 'n wit lys van geldige bindings (in die vorm "UID1:UID2");
    • Laevlakveranderings bygevoeg wat nodig is vir stapelgebaseerde laai van sekuriteitsmodules (LSM'e). Ingestel die "lsm" kern opstart opsie om te beheer watter modules gelaai word en in watter volgorde;
    • Ondersteuning vir lêernaamruimtes is by die ouditsubstelsel gevoeg;
    • Uitgebreid die vermoëns van die GCC plugin structleak, wat jou toelaat om potensiële lekkasies van geheue inhoud te blokkeer Inisialisering van enige veranderlikes wat in die kode gebruik word deur verwysing toegang op die stapel word verskaf;
  • Netwerk substelsel
    • Vir voetstukke geïmplementeer nuwe opsie "SO_BINDTOIFINDEX" soortgelyk aan
      "SO_BINDTODEVICE", maar neem as argument die indeksnommer van die netwerkkoppelvlak in plaas van die koppelvlaknaam;

    • Die mac80211-stapel het die vermoë bygevoeg om verskeie BSSID's (MAC-adresse) aan een toestel toe te ken. As deel van 'n projek om WiFi-werkverrigting te optimaliseer, het die mac80211-stapel lugtydrekeningkunde bygevoeg en die vermoë om lugtyd tussen veelvuldige stasies te versprei (wanneer dit in toegangspuntmodus werk, word minder transmissietyd aan stadige draadlose stasies toegewys, in plaas daarvan om tyd eweredig onder almal te versprei stasies);
    • Bygevoeg meganisme "devlink gesondheid", wat kennisgewings verskaf wanneer probleme met die netwerkkoppelvlak voorkom;
  • Geheue en stelseldienste
    • Geïmplementeer veilige seinlewering wat PID-hergebruik moontlik maak. Byvoorbeeld, wanneer doodmaak voorheen geroep is, kan 'n situasie ontstaan ​​waar, onmiddellik na die stuur van 'n sein, die teiken-PID vrygestel kan word as gevolg van prosesbeëindiging en deur 'n ander proses beset kan word, en die sein sal uiteindelik na 'n ander proses oorgedra word. Om sulke situasies uit te skakel, is 'n nuwe stelseloproep pidfd_send_signal bygevoeg, wat lêerbeskrywers van /proc/pid gebruik om stabiele prosesbinding te verseker. Selfs al word die PID hergebruik tydens stelseloproepverwerking, sal die lêerbeskrywer nie verander nie en kan dit veilig gebruik word om 'n sein na die proses te stuur;
    • Bygevoeg die vermoë om permanente geheue toestelle te gebruik (byvoorbeeld aanhoudende geheue NVDIMM) as RAM. Tot nou toe het die kern sulke toestelle as bergingstoestelle ondersteun, maar nou kan hulle ook as bykomende RAM gebruik word. Die kenmerk word geïmplementeer in reaksie op die wense van gebruikers wat bereid is om 'n prestasievertraging te verdra en die inheemse Linux-kerngeheuebestuur-API wil gebruik in plaas daarvan om bestaande gebruikerspasie-geheuetoewysingstelsels te gebruik wat bo-op mmap vir die dax loop. lêer;
    • 'n Nuwe SVE-ledige hanteerder bygevoeg (cpuidle, besluit wanneer die SVE in diep kragbesparingsmodusse geplaas kan word; hoe dieper die modus, hoe groter is die besparing, maar ook hoe langer neem dit om die modus te verlaat) - TEO (Timer Events Oriented Governor) ). Tot nou toe is twee cpuidle-hanteerders voorgestel - "menu" en "ladder", wat verskil in heuristiek. Die "menu" hanteerder het bekende probleme met die neem van heuristiese besluite, om uit te skakel wat besluit is om 'n nuwe hanteerder voor te berei. TEO is geposisioneer as 'n alternatief vir die "kieslys"-hanteerder, wat hoër werkverrigting moontlik maak terwyl dieselfde vlak van kragverbruik gehandhaaf word.
      Jy kan die nuwe hanteerder aktiveer deur die opstartparameter “cpuidle.governor=teo” te gebruik;

    • As deel van die werk om uit te skakel probleme van 2038, wat veroorsaak word deur 'n oorloop van die 32-bis time_t tipe, sluit stelseloproepe in wat 32-bis tydtellers vir 64-bis argitekture bied. As gevolg hiervan kan die 64-bis time_t struktuur nou op alle argitekture gebruik word. Soortgelyke veranderinge is ook in die netwerksubstelsel vir opsies geïmplementeer tydstempel netwerksokke;
    • In die warm pleisterstelsel vir die kern (live patching) bygevoeg "Atomic Replace"-funksie om 'n reeks veranderinge op 'n enkele funksie atoom toe te pas. Hierdie kenmerk laat jou toe om opsomming kolle te versprei wat verskeie veranderinge gelyktydig dek, in plaas van die proses van stadium-vir-stadium toepassing van lewendige kolle in 'n streng gedefinieerde volgorde, wat redelik moeilik is om te onderhou. Terwyl elke daaropvolgende verandering voorheen gebaseer moes word op die toestand van die funksie na die laaste verandering, is dit nou moontlik om verskeie veranderinge wat aan een aanvanklike toestand gekoppel is op een slag te versprei (d.w.s. instandhouers kan eerder een gekonsolideerde pleister in stand hou relatief tot die basiskern van 'n ketting kolle wat van mekaar afhanklik is );
    • Aangekondig verouderde ondersteuning vir die a.out-uitvoerbare lêerformaat en
      verwyder kode vir die generering van kernlêers in a.out-formaat, wat in 'n verlate toestand is. Die a.out-formaat is vir 'n lang tyd nie op Linux-stelsels gebruik nie, en die generering van a.out-lêers word lankal nie deur moderne gereedskap in verstek Linux-konfigurasies ondersteun nie. Daarbenewens kan die laaier vir a.out-lêers geheel en al in gebruikersruimte geïmplementeer word;

    • Die vermoë om ongebruikte kode te identifiseer en te verwyder, is by die BPF-programverifikasiemeganisme gevoeg. Die kern bevat ook kolle met spinlock-ondersteuning vir die BPF-substelsel, wat addisionele vermoëns bied vir die bestuur van die parallelle uitvoering van BPF-programme;
  • Оборудование
    • In Nouveau bestuurder bygevoeg ondersteuning vir heterogene geheuebestuur, wat die SVE en GPU toegang gee tot algemene gesinchroniseerde geheue-areas. Die gedeelde virtuele geheuestelsel (SVM, gedeelde virtuele geheue) word geïmplementeer op die basis van die HMM (Heterogene geheuebestuur) substelsel, wat die gebruik van toestelle met hul eie geheuebestuurseenhede (MMU, geheuebestuurseenheid) toelaat, wat toegang het hoofgeheue. In die besonder, met behulp van HMM, kan jy 'n gedeelde adresruimte tussen die GPU en SVE organiseer, waarin die GPU toegang tot die hoofgeheue van die proses kan kry. SVM-ondersteuning is tans net geaktiveer vir Pascal-familie GPU's, hoewel ondersteuning ook vir Volta en Turing GPU's verskaf word. Boonop in Nouveau bygevoeg nuwe ioctl om die migrasie van prosesgeheue-areas na GPU-geheue te beheer;
    • In Intel DRM-bestuurder vir GPU Skylake en later (gen9+) ingesluit Fastboot-modus skakel by verstek onnodige modusveranderinge tydens selflaai uit. Bygevoeg новые toestel identifiseerders gebaseer op Coffelake en Ice Lake mikroargitekture. Vir Coffelake skyfies bygevoeg GVT ondersteuning (GPU-virtualisering). Vir virtuele GPU's geïmplementeer VFIO EDID ondersteuning. Vir LCD-panele MIPI/DSI bygevoeg ondersteuning vir ACPI/PMIC-elemente. Geïmplementeer nuwe TV-modusse 1080p30/50/60 TV;
    • Ondersteuning vir Vega10/20 BACO GPU by die amdgpu-bestuurder gevoeg. Het Vega 10/20-kragbestuur- en Vega 10-verkoelerbeheertabelle geïmplementeer. Nuwe PCI-toestelidentifiseerders vir Picasso GPU's bygevoeg. Bygevoeg koppelvlak vir die bestuur van skeduleerbare afhanklikhede om dooiepunte te vermy;
    • Bygevoeg DRM/KMS-bestuurder vir skermversnellers ARM Komeda (Mali D71);
    • Bygevoeg ondersteuning vir Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 en Kingdisplay kd097d04 skerm panele;
    • Bygevoeg ondersteuning vir Rockchip RK3328, Cirrus Logic CS4341 en CS35L36, MediaTek MT6358, Qualcomm WCD9335 en Ingenic JZ4725B oudio-kodeks, sowel as Mediatek MT8183 klankplatform;
    • Bygevoeg ondersteuning vir NAND-beheerders Flash STMicroelectronics FMC2, Amlogic Meson;
    • Bygevoeg versneller ondersteuning vir Habana AI hardeware stelsels;
    • Bygevoeg ondersteuning vir NXP ENETC gigabit Ethernet-beheerders en MediaTek MT7603E (PCIe) en MT76x8 draadlose koppelvlakke.

Terselfdertyd, die Latyns-Amerikaanse Free Software Foundation gevorm
opsie heeltemal gratis kern 5.1 - Linux-vrye 5.1-gnu, skoongemaak van firmware en bestuurderelemente wat nie-vrye komponente of kodeafdelings bevat, waarvan die omvang deur die vervaardiger beperk word. In die nuwe weergawe is blob-laai gedeaktiveer in die mt7603- en goya-bestuurders. Opgedateerde blob-skoonmaakkode in drywers en substelsels wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk en touchscreen_dmi. Blob-skoonmaak in die lantiq xrx200-firmware-laaier is gestop weens die verwydering daarvan uit die kern.

Bron: opennet.ru

Voeg 'n opmerking