Linux kernvrystelling 5.8

Na twee maande van ontwikkeling, Linus Torvalds voorgelê kern vrystelling Linux 5.8. Van die mees noemenswaardige veranderinge: 'n KCSAN ras toestand detector, 'n universele meganisme vir die lewering van kennisgewings aan gebruikers ruimte, hardeware ondersteuning vir inlyn enkripsie, verbeterde sekuriteit meganismes vir ARM64, ondersteuning vir die Russiese Baikal-T1 verwerker, die vermoë om afsonderlik procfs instansies te monteer , implementering van Shadow-sekuriteitsmeganismes vir ARM64 Call Stack en BTI.

Kernel 5.8 het die grootste geword in terme van die aantal veranderinge van alle pitte gedurende die hele bestaan ​​van die projek. Boonop hou die veranderinge nie verband met enige substelsel nie, maar dek verskillende dele van die kern en word hoofsaaklik geassosieer met interne herbewerking en skoonmaak. Die grootste veranderinge word by bestuurders gesien. Die nuwe weergawe het 17606 2081 regstellings van 20 65 ontwikkelaars ingesluit, wat ongeveer 16180% van alle lêers in die kernkodebewaarplek geraak het. Die pleistergrootte is 1043240 MB (die veranderinge het 489854 5.7 lêers geraak, 15033 39 37 reëls kode is bygevoeg, 5.8 16 reëls is uitgevee). Ter vergelyking het die 11-tak 3 4 regstellings en 'n pleistergrootte van XNUMX MB gehad. Ongeveer XNUMX% van alle veranderinge wat in XNUMX aangebring is, hou verband met toestelbestuurders, ongeveer XNUMX% van veranderinge hou verband met die opdatering van kode spesifiek vir hardeware-argitekture, XNUMX% hou verband met die netwerkstapel, XNUMX% hou verband met lêerstelsels en XNUMX% hou verband met interne kernsubstelsels.

Die belangrikste innovasies:

  • Virtualisering en sekuriteit
    • Die laai van kernmodules wat afdelings met kode het waarin die stukkies wat uitvoering en skryf moontlik maak gelyktydig gestel word, word verskaf. Die verandering is geïmplementeer as deel van 'n groter projek om die kern te ontslae te raak van die gebruik van geheuebladsye wat gelyktydige uitvoering en skryf moontlik maak.
    • Dit is nou moontlik om afsonderlike procfs-gevalle te skep, wat die gebruik van veelvuldige procfs-monteerpunte moontlik maak, gemonteer met verskillende opsies, maar wat dieselfde prosesidentifiseerder-naamruimte (pid-naamruimte) weerspieël. Voorheen het alle procfs-monteerpunte slegs een interne voorstelling weerspieël, en enige verandering aan die monteerparameters het alle ander monteerpunte beïnvloed wat met dieselfde proses-ID-naamruimte geassosieer word. Onder die gebiede waarin montering met verskillende opsies in aanvraag kan wees, is die implementering van liggewig-isolasie vir ingebedde stelsels met die vermoë om sekere tipes prosesse en inligtingsnodes in procfs weg te steek.
    • Ondersteuning vir die meganisme is vir die ARM64-platform geïmplementeer
      Shadow-Call Stack, verskaf deur die Clang-samesteller om te beskerm teen die oorskryf van die terugkeeradres van 'n funksie in die geval van 'n stapelbufferoorloop. Die kern van die beskerming is om die terugstuuradres in 'n aparte "skadu"-stapel te stoor nadat beheer na 'n funksie oorgedra is en hierdie adres herwin is voordat die funksie verlaat word.

    • Instruksie-ondersteuning is bygevoeg vir die ARM64-platform ARMv8.5-BTI (Branch Target Indicator) om die uitvoering van stelle instruksies te beskerm waarna nie vertak moet word nie. Blokkering van oorgange na arbitrêre afdelings van kode word geïmplementeer om die skepping van gadgets te voorkom in ontginning wat terugkeer-georiënteerde programmeringstegnieke gebruik (ROP - Return-Oriented Programming; die aanvaller probeer nie om sy kode in die geheue te plaas nie, maar werk op reeds bestaande stukke van masjieninstruksies wat eindig met 'n terugkeerbeheer-instruksie, waaruit 'n ketting oproepe gebou word om die verlangde funksionaliteit te verkry).
    • Bygevoeg hardeware ondersteuning vir inlyn enkripsie van blok toestelle (Inlyn-enkripsie). Inlinep-enkripsietoestelle is tipies in die aandrywer ingebou, maar is logies tussen stelselgeheue en skyf geleë, wat I/O deursigtig enkripteer en dekripteer gebaseer op kerngespesifiseerde sleutels en 'n enkripsiealgoritme.
    • Het die "initrdmem" kern-opdragreël-opsie bygevoeg om jou toe te laat om die fisiese geheue-adres van die initrd te spesifiseer wanneer die aanvanklike selflaaibeeld in RAM geplaas word.
    • Nuwe vermoë bygevoeg: CAP_PERFMON om toegang tot die perf-substelsel te verkry en prestasiemonitering uit te voer. CAP_BPF, wat sekere BPF-bewerkings toelaat (soos die laai van BPF-programme) wat voorheen CAP_SYS_ADMIN-regte vereis het (CAP_SYS_ADMIN-regte word nou verdeel in 'n kombinasie van CAP_BPF, CAP_PERFMON en CAP_NET_ADMIN).
    • bygevoeg 'n nuwe virtio-mem-toestel waarmee jy geheue in gasstelsels kan koppel en warmprop.
    • Geïmplementeerde herroeping van karteringbewerkings in /dev/mem as die toestelbestuurder oorvleuelende geheueareas gebruik.
    • Bygevoeg kwesbaarheid beskerming CROSSTalk/SRBDS, wat jou toelaat om die resultate van sekere instruksies wat op 'n ander SVE-kern uitgevoer is, te herstel.
  • Geheue en stelseldienste
    • In die dokument wat die reëls vir die formatering van die kode definieer, aanvaar aanbevelings vir die gebruik van inklusiewe terminologie. Ontwikkelaars word nie aanbeveel om die kombinasies 'meester / slaaf' en 'swartlys / witlys', sowel as die woord 'slaaf' afsonderlik te gebruik nie. Die aanbevelings het slegs betrekking op nuwe gebruike van hierdie terme. Vermeldings van die gespesifiseerde woorde wat reeds in die kern bestaan, sal onaangeraak bly. In nuwe kode word die gebruik van die gemerkte terme toegelaat indien nodig om die API en ABI wat in gebruikersruimte blootgestel word te ondersteun, sowel as wanneer die kode opgedateer word om bestaande hardeware of protokolle te ondersteun waarvan die spesifikasies die gebruik van sekere terme vereis.
    • Ontfoutingsinstrument ingesluit KCSAN (Kernel Concurrency Sanitizer), ontwerp vir dinamiese opsporing wedren toestande binne die kern. Die gebruik van KCSAN word ondersteun wanneer GCC en Clang ingebou word, en vereis spesiale wysigings tydens samestelling om geheuetoegang na te spoor (breekpunte word gebruik wat geaktiveer word wanneer geheue gelees of gewysig word). Die fokus van KCSAN se ontwikkeling was op vals positiewe voorkoming, skaalbaarheid en gebruiksgemak.
    • Bygevoeg universele meganisme lewering van kennisgewings vanaf die kern na gebruikersruimte. Die meganisme is gebaseer op die standaard pypdrywer en laat jou toe om kennisgewings doeltreffend van die kern af te versprei oor kanale wat in gebruikersruimte oop is. Kennisgewingsontvangspunte is pype wat in 'n spesiale modus oopgemaak word en toelaat dat boodskappe wat vanaf die kern ontvang word, in 'n ringbuffer opgehoop word. Lees word uitgevoer deur die gewone read() funksie. Die kanaaleienaar bepaal watter bronne in die kern gemonitor moet word en kan 'n filter definieer om sekere soorte boodskappe en gebeurtenisse te ignoreer. Van die gebeure word slegs bewerkings met sleutels tans ondersteun, soos die byvoeging/verwydering van sleutels en die verandering van hul eienskappe. Hierdie gebeurtenisse word beplan om in GNOME gebruik te word.
    • Voortgesette ontwikkeling van 'pidfd'-funksionaliteit om PID-hergebruiksituasies te help hanteer (pidfd word geassosieer met 'n spesifieke proses en verander nie, terwyl 'n PID met 'n ander proses geassosieer kan word nadat die huidige proses wat met daardie PID geassosieer word, beëindig is). Die nuwe weergawe voeg ondersteuning by vir die gebruik van pidfd om 'n proses aan naamruimtes te heg (wat toelaat dat pidfd gespesifiseer word wanneer die setns-stelseloproep uitgevoer word). Die gebruik van pidfd laat jou toe om die aanhegting van 'n proses aan verskeie tipes naamruimtes met een oproep te beheer, wat die aantal nodige stelseloproepe aansienlik verminder en aanhegting in atoommodus implementeer (as aanhegting aan een van die naamruimtes misluk, sal die ander nie koppel nie) .
    • Bygevoeg 'n nuwe stelsel oproep faccessat2 (), anders as
      faccessat() 'n bykomende argument met vlae wat aan POSIX-aanbevelings voldoen (voorheen is hierdie vlae in die C-biblioteek nageboots, en die nuwe faccessat2 laat toe dat dit in die kern geïmplementeer word).

    • In Cgroup bygevoeg 'n memory.swap.high-instelling wat gebruik kan word om take wat te veel ruilspasie in beslag neem, te vertraag.
    • Na die asinchroniese I/O-koppelvlak io_uring bygevoeg ondersteuning vir tee () stelsel oproep.
    • Bygevoeg meganisme "BPF iterator, ontwerp om die inhoud van kernstrukture na gebruikersruimte uit te voer.
    • Verskaf die vermoë om 'n ringbuffer vir data-uitruiling tussen BPF-programme te gebruik.
    • In die meganisme paddata, wat ontwerp is om parallelle uitvoering van take in die kern te organiseer, het ondersteuning bygevoeg vir multi-threaded take met lasbalansering.
    • In die pstore-meganisme, waarmee u ontfoutingsinligting oor die oorsaak van die ongeluk kan stoor in geheueareas wat nie verlore gaan tussen herlaai nie, bygevoeg backend vir die stoor van inligting om toestelle te blokkeer.
    • Van die PREEMPT_RT kerntak herskeduleer implementering van plaaslike slotte.
    • Bygevoeg nuwe buffertoewysings-API (AF_XDP), wat daarop gemik is om die skryf van netwerkbestuurders met XDP (eXpress Data Path) ondersteuning te vereenvoudig.
    • Vir die RISC-V-argitektuur is ondersteuning vir ontfouting van kernkomponente met KGDB geïmplementeer.
    • Voor vrystelling 4.8 is die vereistes vir die weergawe van GCC wat gebruik kan word om die kern te bou, verhoog. In een van die volgende vrystellings word beplan om die lat na GCC 4.9 te verhoog.
  • Skyfsubstelsel, I/O en lêerstelsels
    • In Device Mapper bygevoeg nuwe dm-ebs (emuleer blokgrootte) hanteerder, wat gebruik kan word om 'n kleiner logiese blokgrootte na te boots (byvoorbeeld om 512-grepe sektore op 4K sektorgrootte skywe na te boots).
    • Die F2FS-lêerstelsel ondersteun nou kompressie deur die LZO-RLE-algoritme te gebruik.
    • In dm-crypt bygevoeg ondersteuning vir geënkripteerde sleutels.
    • Btrfs het verbeterde hantering van leesbewerkings in direkte I/O-modus. By montering versnel nagaan van verwyderde onderafdelings en gidse wat sonder 'n ouer gelaat word.
    • 'n "nodelete"-parameter is by CIFS gevoeg, wat normale toestemmingskontroles op die bediener toelaat, maar die kliënt verbied om lêers of gidse uit te vee.
    • Ext4 het verbeterde fouthantering ENOSPC wanneer multithreading gebruik word. xattr het ondersteuning bygevoeg vir die gnu.* naamruimte wat in GNU Hurd gebruik word.
    • Vir Ext4 en XFS is ondersteuning vir DAX-bewerkings geaktiveer (direkte toegang tot die lêerstelsel wat die bladsykas omseil sonder om die bloktoestelvlak te gebruik) met betrekking tot individuele lêers en gidse.
    • In stelsel oproep statx() vlag bygevoeg STATX_ATTR_DAX, wat, wanneer gespesifiseer, inligting met behulp van die DAX-enjin ophaal.
    • EXFAT bygevoeg ondersteuning vir verifikasie van opstartarea.
    • In FAT verbeter proaktiewe laai van FS-elemente. Die toets van 'n stadige 2TB USB-stasie het 'n vermindering in toetsvoltooiingstyd van 383 tot 51 sekondes getoon.
  • Netwerk substelsel
    • In die kode vir die beheer van die werking van netwerkbrûe bygevoeg protokol ondersteuning MRP (Media Redundancy Protocol), wat fouttoleransie moontlik maak deur verskeie Ethernet-skakelaars te lus.
    • Na verkeersbeheerstelsel (Tc) bygevoeg nuwe "hek"-aksie, wat dit moontlik maak om tydintervalle vir die verwerking en weggooi van sekere pakkies te definieer.
    • Ondersteuning vir die toets van die gekoppelde netwerkkabel en selfdiagnose van netwerktoestelle is by die kern en die ethtool-hulpmiddel gevoeg.
    • Ondersteuning vir die MPLS (Multiprotocol Label Switching)-algoritme is by die IPv6-stapel gevoeg vir die roetering van pakkies met behulp van multiprotokol-etiketskakeling (MPLS is voorheen vir IPv4 ondersteun).
    • Bygevoeg ondersteuning vir die oordrag van IKE (Internet Key Exchange) en IPSec pakkies oor TCP (RFC 8229) om moontlike UDP-blokkering te omseil.
    • bygevoeg netwerkbloktoestel rnbd, wat jou toelaat om afstandtoegang tot 'n bloktoestel te organiseer deur die RDMA-vervoer (InfiniBand, RoCE, iWARP) en die RTRS-protokol te gebruik.
    • In die TCP-stapel bygevoeg ondersteuning vir reekskompressie in selektiewe erkenning (SACK) reaksies.
    • Vir IPv6 geïmplementeer TCP-LD ondersteuning (RFC 6069, Lang verbindingsonderbrekings).
  • Оборудование
    • Die i915 DRM-bestuurder vir Intel-videokaarte bevat by verstek ondersteuning vir Intel Tiger Lake (GEN12)-skyfies, waarvoor geïmplementeer die vermoë om die SAGV (System Agent Geyserville)-stelsel te gebruik om frekwensie en spanning dinamies aan te pas na gelang van kragverbruik of werkverrigtingvereistes.
    • Die amdgpu-bestuurder het ondersteuning bygevoeg vir die FP16-pixelformaat en die vermoë om met geënkripteerde buffers in videogeheue (TMZ, Trusted Memory Zone) te werk.
    • Bygevoeg ondersteuning vir kragsensors vir AMD Zen- en Zen2-verwerkers, sowel as temperatuursensors vir AMD Ryzen 4000 Renoir. Ondersteuning vir die herwinning van inligting oor kragverbruik deur die koppelvlak word vir AMD Zen en Zen2 verskaf RAPL (Lopende gemiddelde kraglimiet).
    • Ondersteuning vir die NVIDIA-wysigerformaat by die Nouveau-bestuurder gevoeg. Vir gv100 is die vermoë om interlaced scan modes te gebruik geïmplementeer. Bygevoeg vGPU definisie.
    • Bygevoeg ondersteuning vir Adreno A405, A640 en A650 GPU's by die MSM (Qualcomm) bestuurder.
    • Bygevoeg interne raamwerk vir die bestuur van DRM (Direct Rendering Manager) hulpbronne.
    • Bygevoeg ondersteuning vir Xiaomi Redmi Note 7 en Samsung Galaxy S2 slimfone, sowel as Elm/Hana Chromebook skootrekenaars.
    • Bygevoeg drywers vir LCD-panele: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Bygevoeg ondersteuning vir ARM-borde en -platforms Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-e, Check Point
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Bygevoeg ondersteuning vir MIPS verwerker Loongson-2K (afgekort Loongson64). Vir CPU Loongson 3 is ondersteuning vir virtualisering met die KVM-hipervisor bygevoeg.
    • Bygevoeg
      ondersteuning vir die Russiese Baikal-T1-verwerker en die stelsel-op-skyfie wat daarop gebaseer is BE-T1000. Die Baikal-T1-verwerker bevat twee superskalêre P5600 MIPS 32 r5-kerne wat teen 'n frekwensie van 1.2 GHz werk. Die skyfie bevat L2-kas (1 MB), DDR3-1600 ECC geheuebeheerder, 1 10Gb Ethernet-poort, 2 1Gb Ethernet-poorte, PCIe Gen.3 x4-beheerder, 2 SATA 3.0-poorte, USB 2.0, GPIO, UART, SPI, I2C. Die verwerker bied hardeware-ondersteuning vir virtualisering, SIMD-instruksies en 'n geïntegreerde hardeware-kriptografiese versneller wat GOST 28147-89 ondersteun. Die skyfie is ontwikkel met behulp van 'n MIPS32 P5600 Warrior-verwerker-kernblok wat van Imagination Technologies gelisensieer is.

Terselfdertyd, die Latyns-Amerikaanse Free Software Foundation gevorm
opsie heeltemal gratis kern 5.8 - Linux-vrye 5.8-gnu, skoongemaak van firmware en bestuurderelemente wat nie-vrye komponente of kodeafdelings bevat, waarvan die omvang deur die vervaardiger beperk word. Die nuwe vrystelling deaktiveer bloblaai in drywers vir Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Verbeterde Asynchronous Sample Rate Converter, Maxim Geïntegreerde MAX98390 Speaker ZL38060 Tuisverbinder 2 Audio Verbinder, Microsemi Home Process en I86C EEPROM Slaaf. Opgedateerde blob-skoonmaakkode in Adreno GPU, HabanaLabs Goya, x6656 touchscreen, vtXNUMX en btbcm drywers en substelsels.

Bron: opennet.ru

Voeg 'n opmerking