Linuxi tuuma 6.7 väljaanne

Kaks kuud kestnud arendustööd pärast esitles Linus Torvalds Linuxi ytsema 6.7 väljaannet. Silmapaistvamad muudatused hõlmavad: Bcachefs-failisüsteemi integreerimist, Itaniumi arhitektuuri toe lõpetamist, Nouvea tööd GSP-R püsivarikatega, TLS-krüpteerimise toetust NVMe-TCP-le, võimalust kasutada erandeid BPF-is, futexi toimet io_uringis, fq (Fair Queuing) planeerija jõudluse optimeerimist, TCP-AO (TCP Authentication Option) laienduse toetust ja võimalust piirata võrguühendusi Landlocki kaitsemehhanismis, juurdepääsu juhtimist user namespace ja io_uring kaudu AppArmoris.

Uude versiooni on võetud 18405 parandust 2066 arendajalt, patchi suurus on 72 MB (muudatused puudutasid 13467 faili, lisatud 906147 koodirida, kustutatud 341048 rida). Eelmises väljalasks oli 15291 parandust 2058 arendajalt, patchi suurus oli 39 MB. Umbes 45% kõikidest 6.7 esitatud muudatustest on seotud seadme draiveritega, ligikaudu 14% muudatusetega, mis puudutavad kõvendeagraafid, 13% on seotud võrgu stackiga, 5% -ga failisüsteemidest ja 3% kerneli sisemiste alamsüsteemidega.

Peamised uuendused ytsemas 6.7:

  • Disski alamsüsteem, sisend/väljund ja failisüsteemid
    • Ytsema on lisatud Bcachefs-failisüsteemi kood, mille eesmärk on saavutada jõudlus-, usaldusväärsus- ja skaleeritavustase, mis vastab XFS-ile, koos laiendatud funktsionaalsuse elementidega, mis on olemas Btrfs-is ja ZFS-is. Näiteks toetab Bcachefs selliseid funktsioone nagu mitme seadme lisamine ja kihiline ladustamine (alumine kiht kiirete SSD-de baasil sageli kasutatavatest andmetest ja ülemine kiht vähem nõudlikest andmetest kõvaketastelt), replikatsioon (RAID 1/10), vahemälukasutus, andmete läbipaistvad tihendamisrežiimid (LZ4, gzip ja ZSTD), oleku lõikepunktid (snapshotid), terviklikkuse kontrollimine kontrollsummade kaudu, võimalus säilitada Reed-Salomi vigade parandamine (RAID 5/6), salajase teabe säilitamine (kasutatakse ChaCha20 ja Poly1305). Jõudluselt ületab Bcachefs Btrfs-i ja teisi Copy-on-Write mehanismil põhinevaid failisüsteeme ning demonstreerib jõudlust, mis on lähedane Ext4-ile ja XFS-ile.
    • Btrfssis on lisatud lihtsustatud kvoti režiim, mis võimaldab saavutada kõrgemat jõudlust, jälgides extente ainult selles alamkaustas, kus need on loodud, mis oluline lihtsustab arvutusi ja tõstab jõudlust, kuid ei võimalda arvestada extente, mis jagavad mitmeid alamkaustu.
    • Btrfssis on lisatud uus andmestruktuur "stripe tree", mis sobib loogiliseks kaardistamiseks extente, kui füüsiline kaardistus ei lange mitmes seadmes kokku. Struktuuri kasutatakse praegu RAID 0 ja RAID 1 teostustes jaotatud plokkseadetel. Tulevikus plaanitakse seda struktuuri kasutada ka kõrgema taseme RAID-is, mis lahendab praeguses teostuses teatud probleeme.
    • Ceph-failisüsteemis on rakendatud kasutaja identifikaatorite kaardistamise toega, mis rakendatakse teatud kasutaja failide kaardistamiseks teises süsteemis.
    • Efivarfs-i on lisatud võimalus määrata uid ja gid mountimise ajal, et võimaldada UEFI muutujate muutmist protsesside poolt, mis on käivitatud ilma root-rekkideta.
    • ExFAT-i on lisatud ioctl-kutsed failisüsteemi atribuutide lugemiseks ja muutmiseks. Tühjade kataloogide töötlemine on lisatud.
    • F2FS-is on rakendatud 16K suuruse plokkide kasutamist.
    • Automatiseerimise mehhanism autofs on muudetud kasutama uut partitsioonide mountimise API-d.
    • OverlayFS-is on pakutud mountimise valikud "lowerdir+" ja "datadir+". Lisatud on toimetuse toetamine OverlayFS-i sisestatud mountimisest xattrs-iga.
    • XFS-is on tehtud CPU koormuse optimeerimine reaalajas bloki jaotamise koodis. Tagatud on üheaegsete lugemise ja FICLONE’i toimingute täitmise võimalus.
    • EXT2 kood on muudetud kasutama lehe portfellide (page folios) mehhanismi.
  • Mälu ja süsteemiteenused
    • ia64 arhitektuuri tugi lõpetati, mida kasutati Intel Itaniumi protsessorites, mille müük lõpetati täielikult 2021. aastal. Itaniumi protsessorid esitles Intel 2001. aastal, kuid ia64 arhitektuur ei suutnud võistelda AMD64-ga, peamiselt kõrgema jõudluse tõttu, mille pakkus AMD64 ja sujuvam üleminek 32-bitistelt x86 protsessoritelt. Tulemuseks oli Intel'i huvide suunamine x86-64 protsessorite kasuks, samas kui Itaniumi saatus oli magada. serverid HP Integrity, mille tellimusi on lõpetatud kolm aastat tagasi. Toetuse kood ia64 on eemaldatud tuumast peamiselt seetõttu, et selle platvormi toimetamine on olnud pikka aega puudulik, kuigi Linus Torvalds on väljendanud valmisolekut taastada ia64 toetus tuumas, kuid ainult siis, kui leidub toimetaja, kes näitab selle platvormi kvaliteetset hooldust vähemalt aasta jooksul väljaspool põhituuma.
    • Tuuma käsureale on lisatud parameeter «ia32_emulation», mis võimaldab laadimise ajal aktiveerida ja deaktiveerida 32-bitise režiimi emulatsiooni toetust x86-64 arhitektuuri jaoks kokku pandud tuumades. Praktikas võimaldab uus parameeter kompileerida tuuma, mis toetab ühilduvust 32-bitiste rakendustega, kuid vaikimisi on see režiim välja lülitatud, et vähendada rünnakute vektorit tuumale, kuna ühilduvuse API-d on vähem testitud kui põhituuma liidesed.
    • Jätkub muudatuste ülekandmine Rust-for-Linux harust, mis on seotud Rust keele kasutamisega tuumadriverite ja moodulite arendamiseks (Rust tugi ei ole vaikimisi aktiveeritud ja see ei tekita Rusti olemasolu kohustuslike kokkupaneku sõltuvuste hulgas tuumas). Uues versioonis on teostatud üleminek Rust 1.73 versiooni kasutamisele ning pakutud komplekt konsoolidest töötamiseks tööjärjekordadega (workqueues).
    • Binfmt_misc mehhanismi kasutamise võimalus on antud uute täitmisfaili formaatide toetamiseks (näiteks Java või Pythoniga kompileeritud rakenduste käitamiseks) eraldi privileegideta nimetes (namespace) sees.
    • Cgroup-i kontrollija cpuset, mis võimaldab hallata CPU tuumade kasutamist ülesannete täitmisel, on vahendanud kohaliku ja kaugsektori (remote partition) eristamise, millel on erinevused sõltuvalt sellest, kas vanem cgroup on kehtiv juurkategooria või mitte. Cpusetisse on lisatud ka uued seaded «cpuset.cpus.exclusive» ja «cpuset.cpus.exclusive.effective» eksklusiivseks CPU sidumiseks.
    • BPF süsteemis on rakendatud erandeid, mis töödeldakse kui hädaseisukeeramine BPF-programmist turvalise kuhjaveateadetega alates. Lisaks on BPF-programmides lubatud kasutada CPU sidumisteated kptr aadresse.
    • Io_uring süsteemi on lisatud tugi futex operatsioonidele, samuti on teostatud uued operatsioonid: IORING_OP_WAITID (asünkroonne versioon waitid), SOCKET_URING_OP_GETSOCKOPT (getopt variant), SOCKET_URING_OP_SETSOCKOPT (setsockopt variant) ja IORING_OP_READ_MULTISHOT (korduvad lugemisoperatsioonid, mis ei peatu enne, kui andmed on olemas või puhver on täis).
    • Lisatud on kergekaalulised üheltpoolsete FIFO- järjekordade rakendused, mis nõuavad spinn-locki ainult järjekorrast eemaldamiseks protsessi kontekstis ja ei vajata spinn-locki atomaarseks lisamiseks järjekorda igas kontekstis.
    • Lisatud on 'objpool' ringbuffri rakendus, millel on suure jõudlusega järjekorra skaleeritav teostus objektide jaotamiseks ja tagastamiseks.
    • Lisatud on muudatuste algus uue API futex2 rakendamiseks, mis pakub kõrgemat jõudlust NUMA-süsteemides, toetab erinevaid suurusi kui 32 bitti ning seda saab kasutada futex() mitmeosalisel süsteemikutsul.
    • ARM32 ja S390x arhitektuuride jaoks on lisatud tugi aktuaalsele BPF käskude kogule (cpuv4).
    • RISC-V arhitektuuris on rakendatud Clang 17 olemasoleva Shadow-Call Stack kontrollimise režiimi kasutamise võimalus, et kaitsta funktsioonist tagasipöördumise aadressi rikkumise eest, kui toimub mälumahu ülevool. Kaitse sisuks on tagasipöördumise aadressi säilitamine pärast funktsioonile kontrolli andmist eraldi 'vari' kuhjas ning selle aadressi väljavõtmine enne funktsioonist väljumist.
    • Identsete mälu lehekülgede liitmise mehhanismis (KSM: Kernel Samepage Merging) on lisatud uus nutikas mälulehekülgede skaneerimise režiim, mis jälgib ebaõnnestunud skaneeritud lehekülgi ja vähendab nende uuesti skaneerimise sagedust. Uue režiimi aktiveerimiseks on lisatud seadistus /sys/kernel/mm/ksm/smart_scan.
    • Uus ioctl-käsk PAGEMAP_SCAN on lisatud, mis võimaldab koos userfaultfd() funktsiooniga tuvastada teatud mälu vahemikus kirjutamise fakti. Uut võimalust saab näiteks kasutada süsteemis protsesside CRIU osade seisundi salvestamiseks ja taastamiseks või mängude petmisvastastes süsteemides.
    • Kokkuvõttes, kui Clang kompilaator on saadaval, on vaikimisi lubatud perf süsteemi näidiste kompileerimine, mis on kirjutatud BPF-programmidena.
    • Eemaldatud vana videobuf kiht, mida kasutati meediapod süsteemi raami buffrite haldamiseks ja mis vahetati üle 10 aasta tagasi uue videobuf2 rakenduse vastu.
  • Virtualiseerimine ja turvalisus
    • Fscrypt süsteemi on lisatud võimalus andmeid krüptida plokkides, mille suurus on väiksem, kui tõelise failisüsteemi ploki suurus. See võib olla vajalik riistvaraliste krüpteerimismehhanismide kasutamiseks, mis toetavad ainult väikeseid plokke (näiteks UFS kontrollerid, mis toetavad ainult 4096 suurust plokki, saavad olla kasutuses failisüsteemides, mille ploki suurus on 16K).
    • Iommufd alamsüsteemi on lisatud võimalus hallata IOMMU (sisendi/väljundi mälu haldamise üksus) mälu lehekülgede tabeleid kasutajaruumi failidesse, sealhulgas andmete jälgimine, mis ei ole veel vahemälu eemaldatud (dirty), mis on vajalik mälu tuvastamiseks, milles on kustutamata andmeid protsesside rände ajal.
    • Landlock mehhanismi, mis võimaldab piiritleda protsessigruppide suhtlemist väliskeskkonnaga, on lisatud toetus TCP-soketide juurdepääsu haldamise reeglite määratlemiseks. Näiteks saab luua reegli, mis lubab ainult juurdepääsu võrguportile 443 HTTPS-ühenduste loomise jaoks.
    • AppArmori süsteemi on lisatud võimalus hallata juurdepääsu io_uring mehhanismile ja kasutajate identifikaatorite (user namespaces) loomiseks, võimaldades valikuliselt lubada juurdepääsu nendele funktsioonidele ainult teatud protsessidele.
    • Lisatud API atesteerimisele virtuaalmasinad protsesside laadimise puutumatuse kinnitamiseks.
    • LoongArch süsteemides on realiseeritud virtualiseerimise tugi KVM hüperviisori kasutamisel.
    • KVM hüperviisori kasutamisel RISC-V süsteemides on lisatud Smstateen laienduse tugi, mis blokeerib virtuaalmasina juurdepääsu CPU registeridele, mida hüperviisor selgelt ei toeta. Samuti on lisatud toetus külgtesüsteemide jaoks Zicond laiendusele, mis võimaldab kasutada teatud tingimuslikke täisarvutegevusi.
    • KVM hüperviisori all töötavates x86 arhitektuuriga külgtesüsteemides on lubatud kasutada kuni 4096 virtuaalset CPU-d.
  • Võrgu alamsüsteem
    • NVMe-TCP (NVMe TCP kaudu) draiverisse, mis võimaldab ühendust luua NVMe salvestusseadmetega üle võrgu, on lisatud toetus andmete edastamise kanali krüpteerimiseks TLS-i abil (kasutades KTLS-i ja taustprotsessi tlshd, et luua ühendus).
    • Pakettide planeerija fq (Fair Queuing) jõudlust on optimeeritud, võimaldades suurendada läbilaskevõimet 5% võrra suure koormuse korral tcp_rr (TCP Request/Response) testis ja 13% piiramatu UDP-pakettide voogude korral.
    • TCP protokolli on lisatud valikuline võimalus kasutada ajatempleid (TCP TS) mikrosekundilise täpsusega (RFC 7323), mis võimaldab täpsemalt hinnata viivitusi ja luua arenenumaid ummistushaldusmooduleid. Sisselülitamiseks võib kasutada käsku "ip route add 10/8 … features tcp_usec_ts".
    • TCP-võrgustikku on lisatud tugi TCP-AO (TCP Authentication Option, RFC 5925), mis võimaldab verifitseerida TCP-pealkirju MAC-koodide (Message Authentication Code) abil, kasutades kaasaegseid algoritme HMAC-SHA1 ja CMAC-AES-128, asemel, et kasutada varasemalt saadaval olnud TCP-MD5, mis põhines vananenud MD5 algoritmil.
    • Lisatud uus virtuaalsete võrguseadmete tüüp "netkit", mille andmete edastamise loogika on määratud BPF-programmi abil.
    • KSMBD-le, mis töötab tuumatasemel SMB-serveri rakenduses, on lisatud tugi nimede konverteerimiseks, mis sisaldavad koostisosade sugu.
    • NFS-is on täiustatud RPC-teenuste voogude teostust. Lisatud tugi kirjeldamise volituste delegeerimiseks (NFSv4.1+ jaoks). NFSD-s on lisatud netlink- töötlejat rpc_status. Klientide NFSv4.x toetust on parendatud, kui neid uuesti eksporditakse knfsd-sse.
  • Seadmed
    • Kernel moodulis Nouveau on lisatud algtugi GSP-RM püsivara jaoks, mida kasutatakse NVIDIA RTX 20+ GPU-s, et viia teatud initsialiseerimis- ja haldusoperatsioonid eraldi mikrokontrollerisse GSP (GPU System Processor). GSP-RM posse toetamine võimaldab Nouveau draiveril töötada püsivara kaudu, selle asemel, et otse programmeerida seadme interaktsioonide teostusi, mis lihtsustab oluliselt uute NVIDIA GPU-de toetuse lisamist, kasutades juba olemasolevaid kutseid, et korraldada initsialiseerimist ja energiahallust.
    • AMDGPU draiverisse on lisatud tugi GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 ja DML2. Sujuva ülekande (ilma vilkumiseta videorežiimi vahetamisel) toetust on paremaks muudetud.
    • i915 draiverisse on lisatud tugi Intel Meteor Lake kiipidele ja algtugi Intel LunarLake (Xe 2).
    • Lisatud on asümmeetrilist edastuskanalit tuge, mis on lisatud USB4 v2 spetsifikatsioonidesse (120/40G).
    • Lisatud on ARM SoC-tugi: Qualcomm Snapdragon 720G (kasutatakse Xiaomi nutitelefonides), AMD Pensando Elba, Renesas R8A779F4 (R-Car S4-8), USRobotics USR8200 (kasutatakse ruuterites ja NAS-seadmetes).
    • Lisatud on Fairphone 5 nutitelefoni ja ARM-platvormide toetamine: Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Lisatud on RISC-V platvormide Milk-V Pioneer ja Milk-V Duo tugi.
    • Samuti on lisatud HUAWEI sülearvutite helivaatluste tugi, mis on varustatud AMD CPU-dega. Tugi Dell Oasis 13/14/16 sülearvutite lisakõlaritele. Tugi ASUS K6500ZC sülearvutite sisseehitatud kõlaritele. Tugi HP 255 G8 ja G10 sülearvutite vaigistamisindikaatorile. Tugi helidraiveritele acp6.3. Tugi professionaalsetele helisalvestusliidesele Focusrite Clarett+ 2Pre ja 4Pre.

Samas on Lõuna-Ameerika Free Software Foundation välja töötanud täiesti tasuta tuuma 6.7 — Linux-libre 6.7-gnu, mis on puhastatud seadmestikest ja draiveritest, mis sisaldavad mittevaba komponente või koodilõike, mille kasutusala on tootja poolt piiratud. Versioonis 6.7 on värskendatud blobide puhastamise koodi erinevates draiverites ja alamsüsteemides, nagu amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs ja btqca. Eemaldatud on localtalk ja rtl8192u draiverite puhastamise kood, kuna need on välistatud tuumast. Eemaldatud on vead draiverite xhci-pci, rtl8xxxu ja rtw8822b puhastamises, mis olid eelnevalt lisatud eksides. Erinevate Aarch64 arhitektuuri dts-failide blobide nimede puhastamine on läbi viidud. Uute mt7925, tps6598x, aw87390 ja aw88399 draiverite blobid on eemaldatud.

Allikas: opennet.ru

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