Linuxi versiooni 5.15 väljalase

Pärast kahe kuu arendust esitles Linus Torvalds Linuxi tuuma versiooni 5.15. Kõige silmapaistvamad muudatused on: uus NTFS draiver kirjutamise toega, ksmbd moodul SMB-serveri rakenduseks, DAMON alamsüsteem mälu juurdepääsu jälgimiseks, reaalajas režiimi lukustusprimitiivid, fs-verity toe tugi Btrfs-is, process_mrelease süsteemikõne tundlikkuse hal300 reageerimiseks mälu vähenemise korral, eemalset tõendamist toetav dm-ima moodul.

Uues versioonis on tehtud 13499 parandust 1888 arendajalt, muudatuse suurus on 42 MB (muudatused hõlmasid 10895 faili, lisatud 632522 rida koodi, eemaldatud 299966 rida). Umbes 45% kõikidest 5.15 muudatustest puudutab seadme draivereid, umbes 14% muudatustest on seotud riistvaraarhitektuuride spetsiifilise koodi uuendamisega, 14% on seotud võrgustiku kihiga, 6% failisüsteemidega ja 3% tuuma sisemiste alamsüsteemidega.

Põhilised uuendused:

  • Disski alamsüsteem, sisend/väljund ja failisüsteemid
    • Tuuma on aktsepteerinud uusi NTFS-failisüsteemi versiooni, mille on avanud Paragon Software. Uus draiver toetab kirjutamisrežiimi ja kõiki uusima NTFS 3.1 versiooni funktsioone, sealhulgas laiendatud failiatriidid, ligipääsu loendid (ACL), andmete tihendamise režiim, efektiivne töötamine failide ebasooduskohtade (sparse) ja muutuste taasesitamine logi kaudu, et taastada ihaldatav seisund tõrgete järel.
    • Btrfs failisüsteemis on rakendatud fs-verity mehhanismi tugi, mida kasutatakse üksikute failide terviklikkuse ja autentsuse läbipaistvaks kontrollimiseks, kasutades failide külge seotud krüptograafilisi räsimärke või võtmeid, mis on salvestatud metainfo alasse. Varem oli fs-verity saadaval ainult Ext4 ja F2fs failisüsteemidele.

      Btrfs-s on lisatud ka kasutajaidentifitseerimise kaardistamise tugi mountitud failisüsteemidele (varem toetatud FAT, ext4 ja XFS failisüsteemide puhul). See funktsioon võimaldab siduda teatud kasutaja faile muul partitsioonil kui praeguses süsteemis oleva teise kasutajaga.

      Btrfsi teiste muudatuste seas: kiirus, millega võtmed lisatakse katalooge, et parandada failide loomise jõudlust; võimalus kasutada raid0 ühel seadmel ja raid10 kahel (näiteks massiivi ümberkonfigureerimise käigus); valik „rescue=ibadroots”, et eirata vale ulatuspuu; kiirus tegevuses „send”; lukustamise konfliktide vähendamine nimetamise operatsioonide ajal; võimalus kasutada 4K sektoreid süsteemides, kus mälulehe suurus on 64K.

    • XFS-is on stabiliseeritud failisüsteemi kasutamine pärast 2038. aastat. On rakendatud inode'i edasi lükatud deaktiveerimise mehhanism ja toe edasilükkamiseks ja eemaldamiseks failiattribute. Probleemide vältimiseks on eemaldatud võimalus katkestada ketta kvootide kasutamine juba monteeritud jagunemiste puhul (kvootide sundlik katkestamine on võimalik, kuid seotud arvestust jätkatakse, seega on täielikuks katkestamiseks vajalik uuesti monteerimine).
    • EXT4-s on viidi edus samme, et suurendada delalloc-pufferite kirjutusvõimet ja orvufailide (orphan) töötlemist, mis jätkuvad olemasoluga, kuna need jäävad avatuks, kuid pole seotud kaustaga. Kustutamisoperatsioonide töötlemine on viidud jbd2-käthreadist välja, et vältida metainformatsiooni operatsioonide lukustusi.
    • F2FS-i on lisatud valik «discard_unit=block|segment|section», et siduda discardi operatsioonid (vabanenud blokki märkimine, mida ei ole enam füüsiliselt vajalik hoida) blokeeringuga, sektori, jaotuse või sektsiooniga. Lisatud tugi sisse-/väljumise viivituste jälgimiseks.
    • EROFS-i (Extendable Read-Only File System) on lisatud otse sisendi/väljundi tugi failidele, mis on salvestatud ilma kompressioonita, ning fiemap-tugi.
    • OverlayFS-is on korralikult rakendatud montaažiflagide «immutable», «append-only», «sync» ja «noatime» töötlemine.
    • NFS-i on parendatud olukordade töötlemist, kus NFS-server lõpetas päringutele vastamise. Lisatud on võimalus montaažida juba kasutusel olevast, serverilekuid teise võrguaadressi kaudu kergesti ligipääsetavast.
    • Alustatud on FSCACHE alamkompleksi ümberkirjutamise ettevalmistus.
    • Lisatud on EFI-partitsioonide tugi, kus GPT-tabelite paigutus ei ole standardne.
    • Fanotify mehhanismi on lisatud uus lipp FAN_REPORT_PIDFD, mis võimaldab pidfd-d tagastatavate metainformatsioonide hulka. Pidfd aitab korraldada olukordi, kus PID-id on uuesti kasutusel, et täpsemalt tuvastada protsesse, mis pöörduvad jälgitavate failide poole (pidfd on seotud konkreetse protsessiga ja ei muutu, samas kui PID võib pärast praeguse protsessi lõpetamist olla seotud teise protsessiga, mis on seotud selle PID-ga).
    • Süsteemi kutsesse move_mount() on lisatud võimalus lisada monteerimispunkte olemasolevatesse jagatud gruppidesse, lahendades probleemid protsesside oleku säilitamise ja taastamise osas CRIU tööriistade abil, kui on mitu monteerimisruumi, mida jagatakse isoleeritud konteinerites.
    • Lisatud on kaitse varjatud võistlusolukordade eest, mis võivad potentsiaalselt põhjustada failide kahjustamist vahemälust lugemise ajal, kui failis esinevad tühjad kohad.
    • Toetatatud on kohustuslike (mandatory) faililukkude tugi, mis rakendati süsteemikutsungite blokeerimise kaudu failide muutmiseks. Võimalike võidusõidutingimuste tõttu peeti neid lukke ebaturvaliseks ning need kuulutati mitu aastat tagasi vananenuks.
    • Eemaldatud on LightNVM alamsüsteem, mis võimaldas saada otse ühendust SSD-mäluga, vältides emulatsioonikihi. LightNVM kaotas mõtte pärast NVMe standardite ilmumist, mis eeldavad tsoonimise (ZNS, Zoned Namespace) võimalust.
  • Mälu ja süsteemiteenused
    • Réaliseeritud on DAMON (Data Access MONitor) alamssystem, mis võimaldab jälgida andmete juurdepääsuga seotud tegevust operatiivmälu osas, seondudes valitud protsessiga, mis töötab kasutajaruumi. Alamssystem võimaldab analüüsida, millistele mälu aladele protsess pöördus kogu oma tööaja jooksul, ja millised mälu alad jäid ligipääsmatuks. DAMONi omaduste hulka kuuluvad madal protsessorikoormus, väike mälu tarbimine, kõrge täpsus ning ettearvamatud pidevad kulud, mis ei olene suurusest. Alamssystemi saab kasutada nii tuumaks mälu haldamise optimeerimiseks kui ka tööriistadena kasutajaruumi, et mõista, mida protsess täpselt teeb ja optimeerida mälu kasutamist, näiteks eralduva liialdava mälu vabastamiseks süsteemile.
    • On ära vormistatud süsteemikõne process_mrelease, mis võimaldab kiirendada mälu vabastamise protsessi protsessilt, mis lõpetab oma tegevuse. Tavalistel tingimustel vabastamine ja protsessi lõpetamine ei toimu koheselt ning erinevate põhjuste tõttu võib see viibida, mis takistab kasutajaruumi süsteemide, nagu oomd (mis on saadaval systemd-s) ja lmkd (mida kasutatakse Androidis), varajast reageerimist mälu puudusele. Process_mrelease kõne abil saavad sellised süsteemid täpsemalt algatada mälu tagastamise sunnitud lõpetatud protsessidelt.
    • PREEMPT_RT südamikuvõsast, kus arendatakse reaalajas töötluse toetust, on üle viidud mutex, ww_mutex, rw_semaphore, spinlock ja rwlock blokeerimisprimitivide versioonid, mis põhinevad RT-Mutex subsüsteemil. SLUB slab allocatorisse on lisatud muudatused, mis parendavad tööd PREEMPT_RT režiimis ja vähendavad katkestuste mõju.
    • cgroup'i on lisatud SCHED_IDLE ajakava atribuudi tugi, mis võimaldab selle märgisega varustada samas kõik grupi protsessid, mis kuuluvad kindlasse cgroup'i. See tähendab, et need protsessid käivituvad ainult siis, kui süsteemis ei ole teisi ooteülesandeid. Erinevalt SCHED_IDLE atribuudi seadmisest iga protsessi jaoks eraldi, arvestatakse SCHED_IDLE seondumisel cgroup'iga valimise korral ülesande täitmiseks grupi sees olevate ülesannete suhtelist kaalu.
    • cgroup'i mälukasutuse arvestamise mehhanismi on laiendatud täiendavate tuumandmete struktuuride jälgimise võimalusega, sealhulgas nende jaoks, mis on loodud pollimise, signaalide töötlemise ja nimespasionide jaoks.
    • Toetust on lisatud asümmeetrilise ülesannete määramise ajakavade seondumisele protsessorituumadega arhidektuurides, kus mõned CPU-d toetavad 32-bitiseid ülesandeid, samas kui teised töötavad ainult 64-bitises režiimis (nt ARM). Uus režiim võimaldab 32-bitiste ülesannete planeerimisel arvesse võtta ainult CPU-sid, mis toetavad 32-bitiseid ülesandeid.
    • Asünkroonse sisendi/väljundi io_uringi liideses on lisatud tugi failide avamiseks otse indeksi tabelis fixed-file, ilma failikäsitsemise descriptorit kasutamata, mis võimaldab oluliselt kiirendada teatud tüüpi operatsioone, kuid on vastuolus traditsioonilise unixiseerimise protsessiga failide avamisel.

      io_uringis BIO (Block I/O Layer) alamsüsteemile on rakendatud uus korduskasutuse mehhanism („BIO recycling”), mis võimaldab vähendada sisemälu haldamise kulusid ja suurendada ligikaudu 10% võrra sisend-/väljundoperatsioonide arvu sekundis. io_uringile on lisatud ka toetavad süsteemi kutsed mkdirat(), symlinkat() ja linkat().

    • BPF-programmide jaoks on rakendatud võimalus taotleda ja töödelda ajastuse sündmusi. Lisatud UNIX-soketite jaoks iteraator ning samuti on nüüd võimalik saada ja seadistada soketivalikuid funktsioonile setsockopt. BTF dumperisse on lisatud toetavad tüübi andmed.
    • NUMA-süsteemides, kus on erinevat tüüpi mälu, mis erinevad jõudluse poolest, on vaba ruumi ammendumise korral rakendatud tõrjutavate mälu lehekülgede üleviimine dünaamilisest mälust (DRAM) aeglasemasse püsivasse mällu (Persistent Memory) nende lehekülgede kustutamise asemel. Testid on näidanud, et selline taktika parandab tavaliselt jõudlust sellistes süsteemides. NUMA jaoks on samuti rakendatud mälu lehekülgede eraldamise võimalus protsessile valitud NUMA sõlmedest.
    • ARC-architektuuri jaoks on rakendatud kolme- ja neljatase lehekülgede tabelite toetust, mis tulevikus võimaldab toetada 64-bitiseid ARC-protsessoreid.
    • s390 arhitektuuri jaoks on rakendatud KFENCE mehhanismi rakendamine mälu vigade tuvastamiseks ja KCSAN jooksutootlemise detektori toetus on lisatud.
    • Lisatud on toetus printk() kaudu väljunditavate sõnumite nimekirja indekseerimiseks, mis võimaldab korraga välja tõmmata kõik sellised sõnumid ja jälgida kasutajaruumi muutusi.
    • mmap() funktsioonis on lõpetatud VM_DENYWRITE valiku toetus, ning kernelikood on eemaldatud MAP_DENYWRITE režiimi kasutamisest, vähendades olukordade arvu, mis toovad kaasa faili kirjutamise tõrke ETXTBSY.
    • Jälgimissüsteemi on lisatud uus kontrollide tüüp „Event probes”, mida saab kinnitada olemasolevatele jälgimistulemustele, määrates oma vormingu väljundile.
    • Koodi kokkupanemisel Clangi kompilaatoriga kasutatakse nüüd vaikimisi projekti LLVM sisseehitatud assemblerit.
    • Kernikoodist ebaoluliste kompilatsioonihoiatuste eemaldamise projekti käigus viidi läbi katse, kus vaikimisi aktiveeriti režiim „-Werror”, kus kompilatsioonihoiatused käsitletakse vigadena. 5.15 versiooni ettevalmistamise käigus hakkas Linus aktsepteerima ainult muudatusi, mis ei põhjustanud hoiatuste ilmnemist tuuma kompileerimisel, ning aktiveeris kompileerimise „-Werror” režiimiga, kuid nõustus seejärel, et see otsus on liiga vara ning lükkas „-Werror” vaikimisi aktiveerimise edasi. „-Werror” flagi aktiveerimist kompileerimise ajal juhitakse parameetri WERROR abil, mille vaikimisi väärtus on COMPILE_TEST, s.t. seda rakendatakse hetkel vaid katsetuste kompileerimisel.
  • Virtualiseerimine ja turvalisus
    • Device Mapperis (DM) on lisatud uus dm-ima töötleja, mis rakendab eemalolekute autentimise mehhanismi IMA (Integrity Measurement Architecture) alusel, võimaldades välises teenusel tuvastada tuumaaluste süsteemide seisundit nende autentsuse kinnitamiseks. Praktiliselt võimaldab dm-ima Device Mapperi abil luua salvestusi, mis on seotud väliste pilvesüsteemidega, kus IMA kaudu kontrollitakse DM sihtmärgi käivitatud konfigureerimise usaldusväärsust.
    • prctl() funktsioonis on rakendatud uus variant PR_SPEC_L1D_FLUSH, mille aktiveerimisel hakkab tuum iga konteksti vahetamise korral tühjendama esimese taseme (L1D) vahemälu sisu. See režiim võimaldab kõige olulisemate protsesside puhul rakendada täiendavat kaitset kõrvalkanalite rünnakute eest, mis püüavad määrata vahemälus olevate andmete sisu, mis on põhjustatud jõudluse spekulatiivsest täitmisest CPU-s. PR_SPEC_L1D_FLUSH'i lubamine (vaikimisi mitteaktiveeritud) toob kaasa märkimisväärse jõudluse languse.
    • Realiseeriti võimalus koostada kernelit, lisades GCC lipu «-fzero-call-used-regs=used-gpr», mis tagab, et kõik registrid nullitakse enne funktsioonist tagasiviimist. Antud valik kaitseb teabe leke eest funktsioonidest ja vähendab ROP-gadgetite (Return-Oriented Programming) ehitati sobivate plokkide arvu 20% võrra exploite,
    • Realiseeriti võimalus koostada ARM64 arhitektuuri kerne Hyper-V hüpervisorile klientide kujul.
    • Esitati uus raamistiku draiverite arendamiseks «VDUSE», mis võimaldab rakendada virtuaalseid plokk-seadmeid kasutaja ruumis ja kasutada Virtio transpordina, et pääseda külgnevate süsteemide kaudu.
    • Lisatud Virtio-draiver I2C bussile, mis annab võimaluse emuleerida I2C kontrollereid para-virtuaalsuse režiimis, kasutades eraldi backend'e.
    • Lisatud Virtio-draiver gpio-virtio, mis võimaldab külgnevates süsteemides pääseda host-süsteemi pakutavatele GPIO ridadele.
    • Lisa võimalus piirata juurdepääsu mälu lehtedele seadmete draiveritele, mis toetavad DMA-d süsteemides, kus ei ole I/O MMU-d (memory-management unit).
    • KVM-hüpperis võimaldab statistika kuvamist lineaarsetes ja logaritmilistes histogrammides.
  • Võrgu alamsüsteem
    • Kernelisse on lisatud ksmbd moodul, mis rakendab SMB3 protokolli kasutavat failiserverit. Moodul täiendab kernelis varem saadaval olnud SMB kliendi rakendust ja erinevalt kasutaja ruumis töötavast SMB-serverist on see efektiivsem jõudluse, mälukasutuse ning kerneliga integreerimise osas. Ksmbd esitatakse kui kõrge jõudlusega ja rakendamiseks valmis laienemine Samba jaoks, mida on võimalik tugevdada tööriistade ja raamatukogudega Samba. Ksmbd eripära on parendatud toetus jagatud failide vahemälutehnoloogiale (SMB lepingud) kohalike süsteemide peal, mis võimaldab oluliselt vähendada liiklust. Edasi plaanitakse toetada RDMA („smbdirect”) ja protokolli laiendusi, mis on seotud krüpteerimise ja digitaalsete allkirjade valideerimise usaldusväärsuse suurendamisega.
    • CIFS-i klientis on lõpetatud NTLM ja nõrgemate autentimisalgoritmide, mis põhinevad DES-algoritmil ja mida kasutatakse SMB1-protokollis, toetamine.
    • VLANide jaoks rakendatud võrgu sildade teostuses on rakendatud multicasti toetus.
    • Liidesete koondamiseks kasutatavas bonding-draiveris on lisatud XDP (eXpress Data Path) alamsüsteemi tugi, mis võimaldab manipuleerida võrgu pakettidega enne nende töötlemist Linuxi tuuma võrgu pingest.
    • Mac80211 juhtmestikus on rakendatud 6GHz STA (Special Temporary Authorization) tugi LPI, SP ja VLP režiimides, samuti võimalus seadistada отдельные TWT (Target Wake Time) juurdepääsupunkti režiimis.
    • Lisatud tugi MCTP (Management Component Transport Protocol) protokollile, mida kasutatakse juhtkontrollide ja nendega seotud seadmete (host-protsessorid, perifeersed seadmed jne) vaheliseks suhtlemiseks.
    • MPTCP (MultiPath TCP) integreerimine tuuma jätkub, TCP-protokolli laiendus TCP-ühenduse korraldamiseks, mis võimaldab pakettide saatmist samal ajal mitme marsruudi kaudu, kasutades erinevaid võrgu liideseid, mis on seotud erinevate IP-aadressidega. Uues väljal on lisatud toetus fullmesh režiimi aadressidele.
    • Netfilterisse on lisatud SRv6 (Segment Routing IPv6) protokolli kapseldatud võrguvoogude töötlejad.
    • Lisatud tugi sockmap'ile voogesituse Unix-sokkide jaoks.
  • Seadmed
    • AMDGPU draiverisse on integreeritud APU Cyan Skillfish tugi (Navi 1x GPU-dega). APU Yellow Carpi jaoks on lisatud videokooderite tugi. GPU Aldebarani toe parendamine. Uued GPU Navi 24 "Beige Goby" ja RDNA2 aluseks olevad kaardid on lisatud. Pakutud on täiustatud virtuaalsete ekraanide rakendust (VKMS). On rakendatud AMD Zen 3 kiipide temperatuuri jälgimise tugi.
    • AMDKFD draiverisse (diskreetsetele GPU-dele nagu Polaris) on rakendatud jagatud virtuaalse mälu (SVM, shared virtual memory) haldur, mis põhineb HMM (heterogeense mälu haldus) süsteemil, mis võimaldab kasutada seadmeid, millel on oma mäluhaldusseadmestikud (MMU, memory management unit), mis suudavad pääseda peamälule. HMM-i abil on võimalik korraldada ühine aadressiruum GPU ja CPU vahel, kus GPU saab ligipääsu protsessi peamälule.
    • Intel i915 draiveris on laiendatud TTM videomälu haldamise süsteemi kasutusala ning lisatud GuC (Graphics micro Controller) energiatõhususe juhtimise võimalused. Alustatud on ettevalmistusi Intel ARC Alchemist ja Intel Xe-HP graafikakaardiga toe rakendamiseks.
    • Nouveau draiveris on rakendatud eDP paneelide valgustuse juhtimine DPCD (DisplayPort Configuration Data) abil.
    • MSM draiverisse on lisatud GPU Adreno 7c Gen 3 ja Adreno 680 tugi.
    • Apple M1 kiibile on rakendatud IOMMU draiver.
    • AMD Van Gough APU süsteemide jaoks on lisatud helidraiver.
    • Staging haru on saanud Realtek R8188EU draiveri, mis on asendanud vana versiooni (rtl8188eu) Realtek RTL8188EU 802.11 b/g/n traadita kiipide jaoks.
    • Vastu võetud on ära hakatud draiver ocp_pt, mis arendab Meta (Facebook) poolt välja töötatud PCIe kaarti koos miniatuurse atomikellaga ja GNSS vastuvõtjaga, mida saab kasutada iseseisva täpsete ajasihtide korraldamiseks. serverite täpsete ajasihtide sünkroniseerimiseks.
    • Tugatakse Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle nutitelefone.
    • Toetatud on ARM SoC ja NVIDIA Jetson TX2 NX arenduskits, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, Qualcomm Snapdragon SDM636/SM8150, Renesas R-Car H3e-2G/M3e-2G, Marvell CN913x, ASpeed AST2600 (Facebook Cloudripper, Elbert ja Fuji serveriplatvormid), 4KOpen STiH418-b2264.
    • Toetatud on LCD-paneelid Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek ili9341, E Ink VB3300-KCA, Samsung ATNA33XC20, Samsung DB7430, WideChips WS2401.
    • Lisatud on LiteETH draiver, mis toetab Etherneti kontrollerit, mida kasutatakse LiteX (FPGA jaoks) taotavad SoC.
    • USB-audio draiverisse on lisatud suvand lowlatency, et hallata minimaalsete viivitustega töörežiimi aktiveerimist. Samuti on lisatud suvand quirk_flags, et edastada seadme spetsiifilisi seadeid.

Samaajaliselt on Ladina-Ameerika vabavarafond loonud täiesti vabade tuumade variandi 5.15 — Linux-libre 5.15-gnu, kustutades kõik mittetäielikud elemendid ja draiverid, mis sisaldavad sõltumatuid komponente või koodilõike, mille kohaldatavust piirab tootja. Uues väljalaskes on rakendatud logisõnumi kuvamine puhastamise lõpetamise kohta. Parandatud on mkspec'i kasutamisel pakettide koostamise probleeme ning parendatud on snap-paketihaldust. Mõned hoiatused, mis kuvatakse firmware.h päiste töötlemisel, on eemaldatud. Teatud tüüpi hoiatused ("format-extra-args", kommentaarid, kasutamata funktsioonid ja muutujad) on lubatud kuvamiseks "-Werror" režiimis koostamise ajal. Lisatud on gehc-achc draiveri puhastamine. Draiverite ja alamsüsteemide, nagu adreno, btusb, btintel, brcmfmac, aarch64 qcom, blobide puhastamise kood on uuendatud. Prism54 draiverite puhastamine on lõpetatud (eemaldatud) ja rtl8188eu on asendatud r8188eu-ga.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster