Linux 5.1 branduolio leidimas

Po dviejų mėnesių kūrimo Linusas Torvaldsas pristatė branduolio išleidimas Linux 5.1. Tarp ryškiausių pakeitimų: nauja asinchroninio įvesties/išvesties io_uring sąsaja, galimybė naudoti NVDIMM kaip RAM, bendrinamos virtualios atminties palaikymas Nouveau, labai didelių failų sistemų mastelio stebėjimo palaikymas per fanotify, galimybė konfigūruoti Zstd glaudinimą. lygiai Btrfs, naujas cpuidle TEO tvarkytuvas, sistemos iškvietimų įgyvendinimas 2038 problemai išspręsti, galimybė paleisti iš įrenginių-mapper įrenginių be initramfs, SafeSetID LSM modulis, kombinuotų gyvų pataisų palaikymas.

pagrindinis naujoves:

  • Disko posistemis, I/O ir failų sistemos
    • Įdiegta nauja asinchroninio įvesties / išvesties sąsaja - io_uring, kuri pasižymi I/O apklausų palaikymu ir galimybe dirbti su buferiu arba be jo. Prisiminkime, kad anksčiau pasiūlytas asinchroninis įvesties/išvesties mechanizmas „aio“ nepalaikė buferinio įvesties/išvesties, galėjo veikti tik O_DIRECT režimu (be buferio ir neapeinant talpyklos), turėjo problemų su užraktu, nes laukė metaduomenų pasiekiamumo ir buvo didelės pridėtinės išlaidos dėl duomenų kopijavimo į atmintį.

      API viduje
      io_uring kūrėjai bandė pašalinti senosios aio sąsajos trūkumus. Autorius pasirodymas io_uring yra labai arti SPDK ir gerokai lenkia libaio, kai dirba su įjungta apklausa. Parengta biblioteka, skirta naudoti io_uring galutiniose programose, veikiančiose vartotojo erdvėje išlaisvinantis, kuri suteikia aukšto lygio sistemą per branduolio sąsają;

    • Įvykių sekimo mechanizme FS fanotify() pridėta Superblokų ir struktūros keitimo situacijų stebėjimo palaikymas dirent (katalogų kūrimo, trynimo ir perkėlimo įvykiai). Pateiktos funkcijos padeda išspręsti mastelio problemas, kylančias kuriant rekursinį pokyčių sekimą labai didelėse failų sistemose naudojant inotify mechanizmą (tiesioginius pakeitimus anksčiau buvo galima sekti tik per inotify, bet
      našumas rekursyvaus didelių įdėtų katalogų stebėjimo sąlygomis paliko daug norimų rezultatų). Dabar tokį stebėjimą galima veiksmingai atlikti naudojant fanotify;

    • Btrfs failų sistemoje pridėta galimybė pritaikyti zstd algoritmo glaudinimo lygį, kuris gali būti laikomas optimaliu kompromisu tarp greito, bet neveiksmingo lz4 ir lėto, bet gero glaudinimo xz. Analogiškai su tuo, kaip anksčiau buvo galima nustatyti suspaudimo lygį naudojant zlib, zstd buvo pridėta „-o compress=zstd:level“ prijungimo parinkties palaikymas. Bandymo metu minimalus pirmasis lygis užtikrino duomenų suglaudinimą 2.658 karto, kai suspaudimo greitis 438.47 MB/s, išskleidimo greitis 910.51 MB/s ir atminties suvartojimas 780 MB, o maksimalus lygis 15 – 3.126 karto, bet su suspaudimu. greitis 37.30 MB/s išpakuojant 878.84 MB/s ir atminties sąnaudos 2547 MB;
    • Pridėta galimybė paleisti iš failų sistemos, esančios įrenginio atvaizdavimo įrenginyje, nenaudojant initramfs. Pradedant nuo dabartinio branduolio leidimo, įrenginio atvaizdavimo įrenginiai gali būti tiesiogiai naudojami įkrovos metu, pavyzdžiui, kaip skaidinys su šakninių failų sistema. Skyrius sukonfigūruojamas naudojant įkrovos parametrą „dm-mod.create“. Įrenginio atvaizdavimo moduliai, kuriuos leidžiama įkelti, apima: „kriptą“, „delsą“, „linijinį“, „snapshot-origin“ ir „tiksumą“;
    • F2FS_NOCOW_FL vėliavėlė buvo pridėta prie F2FS failų sistemos, orientuotos į „Flash“ diskus, kuri leidžia išjungti nurodyto failo kopijavimo ir rašymo režimą;
    • Failų sistema pašalinta iš branduolio Exofs, kuris yra ext2 variantas, pritaikytas darbui su OSD (Object-based Storage Device) objektų saugyklomis. Taip pat pašalintas tokių objektų saugojimo įrenginių SCSI protokolo palaikymas;
  • Virtualizacija ir saugumas
    • Pridėta PR_SPEC_DISABLE_NOEXEC parinktis prie prctl(), kad būtų galima kontroliuoti spekuliatyvų pasirinkto proceso instrukcijų vykdymą. Nauja parinktis leidžia pasirinktinai išjungti spekuliacinį procesų, kuriuos gali užpulti Spectre ataka, vykdymą. Užraktas galioja iki pirmojo exec();
    • Įdiegtas LSM modulis SafeSetID, kuri leidžia sistemos tarnyboms saugiai valdyti vartotojus nedidinant privilegijų (CAP_SETUID) ir neįgyjant root teisių. Privilegijos suteikiamos apibrėžiant taisykles securityfs, remiantis baltuoju galiojančių įrišimų sąrašu (forma „UID1:UID2“);
    • Pridėta žemo lygio pakeitimų, reikalingų saugos modulių (LSM) įkėlimui. Pristatyta „lsm“ branduolio įkrovos parinktis, skirta valdyti, kurie moduliai įkeliami ir kokia tvarka;
    • Į audito posistemį įtrauktas failų vardų erdvių palaikymas;
    • Išplėstas GCC įskiepio structleak, leidžiančio blokuoti galimus atminties turinio nutekėjimus, galimybes Suteikiama bet kokių kintamųjų, kurie naudojami kode, inicijavimas per nuorodos prieigą prie kamino;
  • Tinklo posistemis
    • Dėl lizdų įgyvendinta nauja parinktis „SO_BINDTOIFINDEX“, panaši į
      "SO_BINDTODEVICE", bet kaip argumentą imant tinklo sąsajos indekso numerį, o ne sąsajos pavadinimą;

    • „Mac80211“ krūva pridėjo galimybę vienam įrenginiui priskirti kelis BSSID (MAC adresus). Vykdant projektą, skirtą optimizuoti „WiFi“ našumą, „mac80211“ paketas papildė eterio laiko apskaitą ir galimybę paskirstyti transliavimo laiką tarp kelių stočių (kai veikia prieigos taško režimu, lėtoms belaidėms stotims skiriama mažiau perdavimo laiko, o ne tolygiai paskirstant laiką visoms stotys);
    • Pridėtas mechanizmas "devlink sveikata“, kuri teikia pranešimus, kai kyla problemų dėl tinklo sąsajos;
  • Atminties ir sistemos paslaugos
    • Įgyvendinta saugus signalo pristatymas, leidžiantis pakartotinai naudoti PID. Pavyzdžiui, anksčiau skambinant kill, gali susidaryti situacija, kai iškart po signalo išsiuntimo tikslinis PID gali būti atlaisvintas dėl proceso nutraukimo ir užimtas kito proceso, o signalas galiausiai būtų perduotas kitam procesui. Siekiant pašalinti tokias situacijas, buvo pridėtas naujas sistemos iškvietimas pidfd_send_signal, kuris naudoja failų deskriptorius iš /proc/pid, kad užtikrintų stabilų proceso susiejimą. Net jei PID pakartotinai naudojamas sistemos skambučio apdorojimo metu, failo aprašas nepasikeis ir gali būti saugiai naudojamas signalui siųsti procesui;
    • Pridėta galimybė naudoti nuolatinės atminties įrenginius (pavyzdžiui, nuolatinę atmintį). NVDIMM) kaip RAM. Iki šiol branduolys tokius įrenginius palaikė kaip saugojimo įrenginius, tačiau dabar juos galima naudoti ir kaip papildomą RAM. Ši funkcija įdiegta atsižvelgiant į vartotojų, kurie nori susitaikyti su našumo vėlavimu ir nori naudoti savąją Linux branduolio atminties valdymo API, o ne naudoti esamas vartotojo erdvės atminties paskirstymo sistemas, veikiančias ant dax skirtos mmap, pageidavimus. failas;
    • Pridėta nauja procesoriaus tuščiosios eigos tvarkyklė (cpuidle, nusprendžia, kada procesorių galima perjungti į gilesnius energijos taupymo režimus; kuo gilesnis režimas, tuo daugiau sutaupoma, bet ir ilgiau užtrunka išeiti iš režimo) - TEO (į laikmačio įvykius orientuotas valdytojas ). Iki šiol buvo siūlomos dvi cpuidle tvarkyklės - „meniu“ ir „kopėčios“, kurios skiriasi euristika. „Meniu“ tvarkytojas turi žinomų euristinių sprendimų priėmimo problemų, kurioms pašalinti buvo nuspręsta paruošti naują tvarkyklę. TEO yra „meniu“ tvarkyklės alternatyva, leidžianti užtikrinti didesnį našumą išlaikant tą patį energijos suvartojimo lygį.
      Naują tvarkyklę galite suaktyvinti naudodami įkrovos parametrą „cpuidle.governor=teo“;

    • Kaip darbo dalis pašalinti 2038 metų problemos, kurį sukelia 32 bitų time_t tipo perpildymas, apima sistemos iškvietimus, siūlančius 32 bitų laiko skaitiklius 64 bitų architektūroms. Dėl to 64 bitų time_t struktūra dabar gali būti naudojama visose architektūrose. Panašūs pakeitimai buvo įgyvendinti ir parinkčių tinklo posistemyje timestamp tinklo lizdai;
    • Į karštąją šerdies pataisymo sistemą (tiesioginis pataisymas) pridėta „Atomic Replace“ funkcija, skirta atomiškai pritaikyti pakeitimų seriją vienai funkcijai. Ši funkcija leidžia platinti apibendrintus pataisymus, apimančius kelis pakeitimus vienu metu, o ne etapinį tiesioginių pataisų taikymo procesą griežtai nustatyta tvarka, kurią gana sunku prižiūrėti. Nors anksčiau kiekvienas paskesnis pakeitimas turėjo būti pagrįstas funkcijos būsena po paskutinio pakeitimo, dabar galima vienu metu išplatinti kelis pakeitimus, susietus su viena pradine būsena (t. y. prižiūrėtojai gali išlaikyti vieną konsoliduotą pataisą, palyginti su baziniu branduoliu. pleistrų grandinės, kurios priklauso viena nuo kitos );
    • Paskelbta nebenaudojamas a.out vykdomojo failo formato palaikymas ir
      pašalintas kodas, skirtas generuoti pagrindinius failus a.out formatu, kuris yra apleistos būsenos. „A.out“ formatas ilgą laiką nebuvo naudojamas „Linux“ sistemose, o a.out failų generavimas jau seniai nepalaikomas šiuolaikiniais įrankiais numatytosiose „Linux“ konfigūracijose. Be to, a.out failų įkroviklis gali būti visiškai įdiegtas vartotojo erdvėje;

    • Galimybė identifikuoti ir pašalinti nenaudojamą kodą buvo įtraukta į BPF programos tikrinimo mechanizmą. Branduolys taip pat apima pataisas su spinlock palaikymu BPF posistemiui, suteikdamas papildomų galimybių valdyti lygiagretų BPF programų vykdymą;
  • įranga
    • Nouveau vairuotojas pridėta heterogeninio atminties valdymo palaikymas, leidžiantis CPU ir GPU pasiekti bendras sinchronizuotos atminties sritis. Bendrosios virtualiosios atminties sistema (SVM, bendroji virtualioji atmintis) yra įgyvendinta HMM (Heterogeneous memory management) posistemio pagrindu, kuris leidžia naudoti įrenginius su savo atminties valdymo blokais (MMU, atminties valdymo blokas), kurie gali pasiekti Pagrindinė ATMINTIS. Visų pirma, naudodami HMM, galite organizuoti bendrą adresų erdvę tarp GPU ir procesoriaus, kuriame GPU gali pasiekti pagrindinę proceso atmintį. SVM palaikymas šiuo metu įgalintas tik Pascal šeimos GPU, nors palaikymas taip pat teikiamas Volta ir Turing GPU. Be to, Nouveau pridėta naujas ioctl, skirtas valdyti proceso atminties sričių perkėlimą į GPU atmintį;
    • Intel DRM tvarkyklėje, skirta GPU Skylake ir naujesnėms (gen9+) įjungtas Pagal numatytuosius nustatymus greitojo paleidimo režimas pašalina nereikalingus režimo pakeitimus įkrovos metu. Pridėta новые įrenginių identifikatoriai, pagrįsti Coffelake ir Ice Lake mikroarchitektūromis. Coffelake traškučiams pridėta GVT palaikymas (GPU virtualizacija). Virtualiems GPU įgyvendinta VFIO EDID palaikymas. Skystųjų kristalų skydams MIPI/DSI pridėta ACPI/PMIC elementų palaikymas. Įgyvendinta nauji TV režimai 1080p30/50/60 TV;
    • Pridėtas Vega10/20 BACO GPU palaikymas prie amdgpu tvarkyklės. Įdiegtos Vega 10/20 maitinimo valdymo ir Vega 10 aušintuvo valdymo lentelės. Pridėta naujų PCI įrenginių identifikatorių, skirtų Picasso GPU. Pridėta sąsaja, skirta suplanuotoms priklausomybėms valdyti, siekiant išvengti aklavietės;
    • Pridėta DRM/KMS tvarkyklė, skirta ekrano spartintuvams ARM Komeda (Malis D71);
    • Pridėtas Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 ir Kingdisplay kd097d04 ekrano plokščių palaikymas;
    • Pridėtas palaikymas Rockchip RK3328, Cirrus Logic CS4341 ir CS35L36, MediaTek MT6358, Qualcomm WCD9335 ir Ingenic JZ4725B garso kodekams, taip pat Mediatek MT8183 garso platformai;
    • Pridėtas NAND valdiklių palaikymas Flash STMicroelectronics FMC2, Amlogic Meson;
    • Pridėtas greitintuvo palaikymas Habana AI aparatinės įrangos sistemoms;
    • Pridėtas NXP ENETC Gigabit Ethernet valdiklių ir MediaTek MT7603E (PCIe) ir MT76x8 belaidės sąsajos palaikymas.

Tuo pačiu metu Lotynų Amerikos laisvosios programinės įrangos fondas susiformavo
pasirinkimas visiškai nemokamas branduolys 5.1 - „Linux“ nemokama 5.1 gnu versija, išvalyta nuo programinės aparatinės įrangos ir tvarkyklės elementų, kuriuose yra nelaisvų komponentų arba kodo skyrių, kurių apimtį riboja gamintojas. Naujoje versijoje blob įkėlimas išjungtas mt7603 ir goya tvarkyklėse. Atnaujintas blob valymo kodas tvarkyklėse ir posistemėse wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk ir touchscreen_dmi. Dėmių valymas lantiq xrx200 programinės aparatinės įrangos įkroviklyje buvo sustabdytas, nes jis buvo pašalintas iš branduolio.

Šaltinis: opennet.ru

Добавить комментарий