Linuxi 5.2 kerneli väljalase

Pärast kahekuulist arendustööd Linus Torvalds tutvustatud kerneli väljalase Linux 5.2. Kõige märgatavamate muudatuste hulgas: Ext4 töörežiim ei ole tõstutundlik, eraldi süsteemikutsed failisüsteemi ühendamiseks, GPU Mali 4xx/ 6xx/7xx draiverid, võimalus käsitleda sysctl väärtuste muutusi BPF-programmides, seadme kaardistaja moodul dm-dust, kaitse rünnakute eest MDS, Sound Open Firmware tugi DSP jaoks, BFQ jõudluse optimeerimine, PSI (Pressure Stall Information) alamsüsteemi võimaldamine Androidis kasutamiseks.

Uus versioon sisaldab 15100 1882 parandust XNUMX arendajalt,
paiga suurus - 62 MB (muudatused mõjutasid 30889 faili, lisati 625094 koodirida, kustutati 531864 rida). Umbes 45% kõigist punktis 5.2
muudatused on seotud seadme draiveritega, ligikaudu 21% muudatustest on
suhtumine riistvaraarhitektuurile omase koodi värskendamisse, 12%
seotud võrgupinuga, 3% failisüsteemidega ja 3% sisemisega
kerneli alamsüsteemid. 12.4% kõigist muudatustest valmistas Intel, 6.3% Red Hat, 5.4% Google, 4.0% AMD, 3.1% SUSE, 3% IBM, 2.7% Huawei, 2.7% Linaro, 2.2% ARM , 1.6 % - Oracle.

Kõik uuendused:

  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Lisatud Ext4 jaoks toetama töötada ilma failinimedes tähtede eristamata, mis aktiveeritakse ainult üksikute tühjade kataloogide puhul, kasutades uut atribuuti “+F” (EXT4_CASEFOLD_FL). Kui see atribuut on kataloogis määratud, teostatakse kõik toimingud sees olevate failide ja alamkataloogidega ilma märkide suur- ja väiketähti arvesse võtmata, sealhulgas ignoreeritakse failide otsimisel ja avamisel (näiteks failid Test.txt, test.txt ja test.TXT sellistes kataloogides loetakse samaks). Vaikimisi on failisüsteem jätkuvalt tõstutundlik, välja arvatud atribuudiga chattr +F kataloogid;
    • Ühtsustatud on failinimede UTF-8 märkide töötlemise funktsioonid, mida kasutatakse stringide võrdlemise ja normaliseerimise toimingute tegemisel;
    • XFS lisab infrastruktuuri failisüsteemi seisundi jälgimiseks ja uue ioctl terviseseisundi päringute tegemiseks. Superbloki loendurite võrgus kontrollimiseks on rakendatud eksperimentaalset funktsiooni.
    • Lisatud uus moodul seade-mapper "dm-tolm“, mis võimaldab simuleerida halbade plokkide ilmumist andmekandjale või vigu kettalt lugemisel. Moodul võimaldab võimalike rikete korral lihtsustada rakenduste ja erinevate salvestussüsteemide silumist ja testimist;
    • Läbi viidud Märkimisväärsed BFQ I/O planeerija jõudluse optimeerimised. Suure I/O koormuse tingimustes tehtud optimeerimised lubama Vähendage toimingute, näiteks rakenduste käivitamise aega kuni 80%.
    • Lisatud on rida süsteemikutseid failisüsteemide ühendamiseks: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Need süsteemikutsed võimaldavad teil eraldi töödelda erinevaid ühendamisetappe (töötleda superplokki, hankida teavet failisüsteemi kohta, ühendada, ühendada ühenduspunktiga), mida varem teostati ühise mount() süsteemikutsega. Eraldi kõned võimaldavad teostada keerukamaid ühendamise stsenaariume ja teha eraldi toiminguid, nagu superploki ümberkonfigureerimine, valikute lubamine, ühenduspunkti muutmine ja teise nimeruumi liikumine. Lisaks võimaldab eraldi töötlemine täpselt määrata veakoodide väljastamise põhjused ja määrata mitmekihiliste failisüsteemide jaoks mitu allikat, näiteks ülekatted;
    • Asünkroonse I/O io_uringi liidesesse on lisatud uus operatsioon IORING_OP_SYNC_FILE_RANGE, mis teostab süsteemikutsega samaväärseid toiminguid sync_file_range(), ning rakendas ka võimaluse registreerida eventfd io_uringiga ja saada teateid toimingute lõpetamise kohta;
    • CIFS-failisüsteemi jaoks on lisatud FIEMAP ioctl, mis pakub tõhusat ulatuse vastendamist, samuti režiimide SEEK_DATA ja SEEK_HOLE tuge;
    • FUSE alamsüsteemis pakutud API andmete vahemällu haldamiseks;
    • Btrfs on optimeerinud qgroupsi juurutamist ja parandanud fsynci täitmise kiirust mitme kõva lingiga failide jaoks. Täiustatud on andmete terviklikkuse kontrollimise koodi, mis võtab nüüd enne andmete kettale loputamist arvesse RAM-is oleva teabe võimalikku kahjustamist;
    • CEPH lisas toe hetktõmmiste eksportimiseks NFS-i kaudu;
    • Täiustatud on NFSv4 paigaldamise rakendamist "pehmes" režiimis (kui "pehmes" režiimis serverile juurdepääsul ilmneb tõrge, tagastab väljakutse kohe veakoodi ja "kõvas" režiimis antakse juhtimine alles FS kättesaadavus või ajalõpp taastatakse). Uus väljalase pakub täpsemat ajalõpu käsitlemist, kiiremat krahhi taastamist ja uut "pehmemat" paigaldusvalikut, mis võimaldab teil muuta ajalõpu ilmnemisel tagastatavat veakoodi (ETIMEDOUT);
    • NFS-i klientide oleku jälgimiseks loodud nfsdcld API võimaldab NFS-serveril taaskäivitamisel kliendi olekut õigesti jälgida. Seega saab nfsdcld deemon nüüd toimida nfsdcltracki töötlejana;
    • AFS-i jaoks lisatud failide baidivahemiku lukkude emuleerimine (Baitivahemiku lukustamine);
  • Virtualiseerimine ja turvalisus
    • Tööd on tehtud selle nimel, et kõrvaldada tuumas kohad, mis võimaldavad koodi täitmist kirjutatavatelt peegeldunud mälualadelt, mis võimaldab blokeerida potentsiaalseid auke, mida saaks ründe ajal ära kasutada;
    • Lisatud on uus kerneli käsurea parameeter "mitigations=", mis pakub lihtsustatud viisi teatud tehnikate lubamise kontrollimiseks, et kaitsta CPU-s käskude spekulatiivse täitmisega seotud haavatavuste eest. "mitigations=off" lubamine keelab kõik olemasolevad meetodid ja vaikerežiim "mitigations=auto" lubab kaitset, kuid ei mõjuta hüperlõime kasutamist. Režiim "mitigations=auto,nosmt" keelab lisaks hüperkeermestamise, kui kaitsemeetod seda nõuab.
    • Lisatud elektroonilise digitaalallkirja tugi vastavalt standardile GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), arendatud Vitali Tšikunov Basalt SPO-st. Lisati natiivsele TLS-i juurutamisele AES128-CCM-i tugi. crypto_simd moodulile on lisatud AEAD algoritmide tugi;
    • Kconfigis lisatud eraldi sektsioon "kerneli kõvenemine", kus on valikud tuuma kaitse parandamiseks. Praegu sisaldab uus jaotis ainult GCC kontrolli tõhustavate pistikprogrammide lubamise sätteid;
    • Kerneli kood on peaaegu kohale toimetatud lüliti mittemurduvatest käändelausetest (ilma tagastus- või murdeta iga käändeploki järel). Jääb veel parandada 32 juhtu 2311-st lüliti sellisest kasutamisest, pärast mida on tuuma ehitamisel võimalik kasutada režiimi "-Wimplicit-fallthrough";
    • PowerPC arhitektuuri jaoks on juurutatud riistvaramehhanismide tugi, mis piirab soovimatuid kerneli juurdepääsuteid kasutajaruumi andmetele;
    • Lisatud blokeerimiskood rünnakud MDS (Microarchitectural Data Sampling) klass Inteli protsessorites. Saate kontrollida, kas süsteem on haavatavuste suhtes haavatav, kasutades SysFS-i muutujat “/sys/devices/system/cpu/vulnerabilities/mds”. Saadaval kaks kaitserežiimi: täis, mis nõuab uuendatud mikrokoodi ja möödaviik, mis ei taga täielikult protsessori puhvrite tühjendamist, kui juhtimine viiakse üle kasutajaruumi või külalissüsteemi. Kaitserežiimide juhtimiseks on kernelile lisatud parameeter "mds=", mis võib võtta väärtused "full", "full,nosmt" (+ keelake Hyper-Threads) ja "off";
    • x86-64 süsteemides on IRQ-le, silumismehhanismidele ja erandite töötlejatele lisatud “stack valve-page” kaitse, mille põhiolemus on piiril asuvate mälulehtede asendamine viruga, millele ligi pääsedes genereeritakse erand (lehe viga);
    • Lisatud sysctl säte vm.unprivileged_userfaultfd, mis kontrollib privilegeerimata protsesside võimet kasutada süsteemikutset userfaultfd();
  • Võrgu alamsüsteem
    • Lisatud IPv6 lüüsi tugi IPv4 marsruutidele. Näiteks saate nüüd määrata marsruutimise reeglid nagu "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0";
    • ICMPv6 puhul rakendatakse ioctl-kõnesid icmp_echo_ignore_anycast ja icmp_echo_ignore_multicast, et ignoreerida ICMP ECHO-d anycasti ja
      multisaate aadressid. Lisatud võimalus piirata ICMPv6 pakettide töötlemise intensiivsust;

    • BATMAN (Better Approach To Mobile Adhoc Networking) võrguprotokolli jaoks, mis võimaldab luua detsentraliseeritud võrke, milles iga sõlm on ühendatud naabersõlmede kaudu, lisatud toetus multisaatest unicastile edastamiseks, samuti võimalus juhtida sysf-i kaudu;
    • Eetoolis lisatud uus Fast Link Down parameeter, mis võimaldab vähendada aega, mis kulub 1000BaseT jaoks lingi katkemise sündmuse kohta teabe saamiseks (tavatingimustes on viivitus kuni 750 ms);
    • Ilmus võimalus Foo-Over-UDP tunnelite sidumine kindla aadressi, võrguliidese või pesaga (varem tehti sidumist ainult ühise maskiga);
    • Juhtmevabas virnas kindlustatud käitlejate rakendamise võimalus
      OWE (Opportunistic Wireless Encryption) kasutajaruumis;

    • Netfilteris on nat-ahelatele lisatud inet-aadresside perekonna tugi (näiteks saab nüüd ipv4 ja ipv6 töötlemiseks kasutada ühte tõlkereeglit, eraldamata ipv4 ja ipv6 reegleid);
    • Netlinkis lisatud viis range kõigi teadete ja atribuutide õigsuse rangeks kontrollimiseks, mille puhul ei ole lubatud atribuutide eeldatavat suurust ületada ja täiendavate andmete lisamine teadete lõppu on keelatud;
  • Mälu- ja süsteemiteenused
    • Süsteemikutsele Clone() on lisatud lipp CLONE_PIDFD, kui see on määratud, tagastatakse loodud alamprotsessiga tuvastatud failideskriptor "pidfd" põhiprotsessile. Seda failideskriptorit saab kasutada näiteks signaalide saatmiseks, kartmata sattuda võistlusseisundisse (kohe pärast signaali saatmist võib siht-PID protsessi lõpetamise tõttu vabaneda ja selle hõivab mõni muu protsess);
    • Teise cgroupsi versiooni jaoks on lisatud sügavkülmiku kontrolleri funktsionaalsus, millega saab cgroupis töö peatada ja vabastada ajutiselt osa ressursse (CPU, I/O ja potentsiaalselt isegi mälu) muude toimingute tegemiseks. Haldamine toimub cgroupi puu juhtfailide cgroup.freeze ja cgroup.events kaudu. Kirje 1 failis cgroup.freeze külmutab protsessid praeguses cgroupis ja kõigis alamrühmades. Kuna külmutamine võtab veidi aega, pakutakse täiendavat faili cgroup.events, mille kaudu saate toimingu lõpuleviimise kohta teada;
    • Turvatud igale sõlmele lisatud mäluatribuutide eksport sysf-is, mis võimaldab kasutajaruumist määrata mälupankade töötlemise olemuse heterogeense mäluga süsteemides;
    • Täiustatud on PSI (Pressure Stall Information) alamsüsteemi, mis võimaldab analüüsida teavet erinevate ressursside (CPU, mälu, I/O) vastuvõtmise ooteaja kohta teatud ülesannete või protsesside komplektide jaoks cgroupis. Kasutades PSI-d, saavad kasutajaruumi töötlejad täpsemalt hinnata süsteemi koormuse taset ja aeglustusmustreid võrreldes koormuse keskmisega. Uus versioon pakub tuge tundlikkuslävede seadmiseks ja võimalust kasutada poll()-kutset, et saada teatist, et seatud läve on teatud aja jooksul käivitatud. See funktsioon võimaldab Androidil jälgida mälupuudust varajases staadiumis, tuvastada probleemide allikas ja lõpetada ebaolulised rakendused, põhjustamata kasutajale märgatavaid probleeme. Stressitestimisel näitasid PSI-põhised mälutarbimise jälgimise tööriistad 10 korda vähem valepositiivseid tulemusi võrreldes vmpressure statistikaga;
    • BPF programmide kontrollimise kood on optimeeritud, mis võimaldab suurte programmide puhul kuni 20 korda kiiremini kontrollida. Optimeerimine võimaldas tõsta BPF-programmide suuruse piirangut 4096-lt miljonile juhisele;
    • BPF programmide jaoks antud võimalus pääseda ligi globaalsetele andmetele, mis võimaldab defineerida programmides globaalseid muutujaid ja konstante;
    • Lisatud API, mis võimaldab juhtida sysctl parameetrite muutusi BPF programmidest;
    • MIPS32 arhitektuuri jaoks on rakendatud eBPF virtuaalmasina JIT-kompilaator;
    • 32-bitise PowerPC arhitektuuri jaoks on lisatud KASani (Kernel address Sanitizer) silumistööriista tugi, mis aitab tuvastada vigu mäluga töötamisel;
    • x86-64 süsteemides on eemaldatud piirang olekuväljavõtete paigutamiseks kerneli krahhi ajal (crash-dump) mälualadele, mis on suuremad kui 896 MB;
    • S390 arhitektuuri jaoks on rakendatud tuuma aadressiruumi randomiseerimise (KASLR) tugi ja võimalus kontrollida digitaalallkirju kerneli laadimisel kexec_file_load() kaudu;
    • PA-RISC arhitektuuri jaoks on lisatud tugi kerneli silurile (KGDB), hüppemärkidele ja kprobe'idele;
  • Оборудование
    • Kaasas draiver Lima Mali 400/450 GPU jaoks, mida kasutatakse paljudes vanemates ARM-arhitektuuril põhinevates kiipides. Uuemate Mali GPU-de jaoks on lisatud Panfrosti draiver, mis toetab Midgardi (Mali-T6xx, Mali-T7xx, Mali-T8xx) ja Bifrosti (Mali G3x, G5x, G7x) mikroarhitektuuridel põhinevaid kiipe;
    • Lisatud tugi heliseadmetele, mis kasutavad avatud püsivara Heli avatud püsivara (OFS). Vaatamata avatud draiverite olemasolule jäi helikiipide püsivara kood siiski suletuks ja seda tarniti binaarsel kujul. Projekti Sound Open Firmware töötas välja Intel, et luua helitöötlusega seotud DSP kiipidele avatud püsivara (hiljem liitus arendusega ka Google). Praegu on projekt juba ette valmistanud püsivara avastamist platvormide Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake ja IceLake helikiipide jaoks;
    • Inteli DRM-draiver (i915) lisab kiipide toe
      Elkhartlake (11. põlvkond). Lisatud PCI ID-d Comet Lake'i (Gen9) kiipidele. Icelake'i kiipide tugi on stabiliseeritud, millele on lisatud ka täiendavad PCI-seadmete identifikaatorid.
      Sisse lülitatud
      asünkroonse ümberlülitamise režiim kahe videomälus oleva puhvri vahel (asünkroonne flip) kirjutustoimingute tegemisel läbi mmio, mis suurendas oluliselt mõne 3D-rakenduse jõudlust (näiteks 3DMark Ice Storm testis kasvas jõudlus 300-400%). Lisatud tehnoloogiline tugi HDCP2.2 (High-bandwidth Digital Content Protection) HDMI kaudu edastatavate videosignaalide krüptimiseks;

    • Vega20 GPU amdgpu draiver lisatud tugi RAS-ile (Reliability, Availability, Serviceability) ja eksperimentaalne tugi SMU 11 alamsüsteemile, mis asendas Powerplay tehnoloogia. GPU Vega12 jaoks lisatud BACO režiimi tugi (Bus Active, Chip Off). Lisatud esialgne tugi XGMI-le, kiirele siinile (PCIe 4.0) GPU ühendamiseks. Polaris10 GPU-l põhinevate kaartide puuduvad identifikaatorid on lisatud amdkfd draiverile;
    • Nouveau draiver on lisanud toe plaatidele, mis põhinevad NVIDIA Turing 117 kiibistikul (TU117, kasutatakse GeForce GTX 1650-s). IN
      kconfig lisatud seadistus keelata vananenud funktsioonid, mida libdrmi praegustes versioonides enam ei kasutata;

    • DRM API-le ja amdgpu draiverile on lisatud "ajajoone" sünkroonimisobjektide tugi, mis võimaldab teil teha ilma klassikalise blokeerimiseta.
    • VirtualBoxi virtuaalse GPU vboxvideo draiver on viidud lavastusharust põhistruktuuri;
    • Lisatud kiirendusdraiver GFX SoC ASPEED kiibile;
    • Lisatud on ARM SoC ja Intel Agilexi (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6), Rockchip (Orange Pi) tugi. ) plaadid RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Samal ajal Ladina-Ameerika Vaba Tarkvara Fond moodustatud
võimalus täiesti tasuta kernel 5.2 - Linuxi vaba 5.2-gnu, puhastatud püsivarast ja draiverielementidest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatust piirab tootja. Uus väljalase sisaldab failide üleslaadimist
Heli Ava püsivara. Plekkide laadimine draiverites on keelatud
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp ja ucsi_ccg. ixp4xx, imx-sdma, amdgpu, nouveau ja goya draiverite ja alamsüsteemide plokkide puhastamise koodi, samuti mikrokoodi dokumentatsiooni on värskendatud. Peatas r8822be draiveris plekkide puhastamise selle eemaldamise tõttu.

Allikas: opennet.ru

Lisa kommentaar