Izdaja jedra Linuxa 6.7

Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 6.7. Med najbolj opaznimi spremembami: integracija datotečnega sistema Bcachefs, ukinitev podpore za arhitekturo Itanium, zmožnost Nouvea za delo z vdelano programsko opremo GSP-R, podpora za šifriranje TLS v NVMe-TCP, možnost uporabe izjem v BPF, podpora za futex v io_uring, optimizacija zmogljivosti razporejevalnika fq (Fair Queuing), podpora za razširitev TCP-AO (TCP Authentication Option) in možnost omejevanja omrežnih povezav v varnostnem mehanizmu Landlock, dodan nadzor dostopa do uporabniškega imenskega prostora in io_uring preko AppArmorja.

Nova različica vključuje 18405 popravkov 2066 razvijalcev, velikost popravka je 72 MB (spremembe so vplivale na 13467 datotek, dodanih je bilo 906147 vrstic kode, izbrisanih je bilo 341048 vrstic). Zadnja izdaja je imela 15291 popravkov od 2058 razvijalcev, velikost popravka je bila 39 MB. Približno 45 % vseh sprememb, uvedenih v 6.7, je povezanih z gonilniki naprav, približno 14 % sprememb je povezanih s posodabljanjem kode, specifične za arhitekture strojne opreme, 13 % je povezanih z omrežnim skladom, 5 % je povezanih z datotečnimi sistemi in 3 % so povezani z notranjimi podsistemi jedra.

Glavne novosti v jedru 6.7:

  • Diskovni podsistem, V/I in datotečni sistemi
    • Jedro sprejme kodo datotečnega sistema Bcachefs, ki poskuša doseči zmogljivost, zanesljivost in razširljivost XFS v kombinaciji z elementi napredne funkcionalnosti, ki jih najdemo v Btrfs in ZFS. Bcachefs na primer podpira funkcije, kot so vključitev več naprav v particijo, večplastne postavitve pogonov (spodnja plast s pogosto uporabljenimi podatki na podlagi hitrih SSD-jev in zgornja plast z manj uporabljenimi podatki s trdih diskov), podvajanje (RAID 1/10), predpomnjenje, pregledno stiskanje podatkov (načini LZ4, gzip in ZSTD), rezine stanja (posnetki), preverjanje celovitosti z uporabo kontrolnih vsot, možnost shranjevanja Reed-Solomonovih kod za odpravljanje napak (RAID 5/6), shranjevanje informacij v šifrirani obliki (uporabljata se ChaCha20 in Poly1305). Kar zadeva zmogljivost, je Bcachefs pred Btrfs in drugimi datotečnimi sistemi, ki temeljijo na mehanizmu Copy-on-Write, in izkazuje hitrost delovanja blizu Ext4 in XFS.
    • Datotečni sistem Btrfs uvaja poenostavljen način kvote, ki omogoča doseganje višje zmogljivosti s sledenjem ekstentom samo v podparticiji, v kateri so ustvarjeni, kar znatno poenostavi izračune in izboljša zmogljivost, vendar vam ne omogoča upoštevanja ekstentov, ki so v skupni rabi v več podparticije.
    • Btrfs je dodal novo podatkovno strukturo "stripe tree", primerno za logično preslikavo obsega v situacijah, ko se fizična preslikava ne ujema med napravami. Struktura se trenutno uporablja v izvedbah RAID0 in RAID1 za conske blokovne naprave. V prihodnosti nameravajo to strukturo uporabiti v RAID-ih višjega nivoja, kar bo rešilo številne težave, ki obstajajo v trenutni izvedbi.
    • Datotečni sistem Ceph izvaja podporo za preslikavo uporabniških ID-jev nameščenih datotečnih sistemov, ki se uporabljajo za ujemanje datotek določenega uporabnika na nameščeni tuji particiji z drugim uporabnikom v trenutnem sistemu.
    • Dodana možnost podajanja uid in gid ob namestitvi v efivarfs, da omogoči nekorenskim procesom spreminjanje spremenljivk UEFI.
    • Dodani klici ioctl v exFAT za branje in spreminjanje atributov FS. Dodana obravnava imenikov ničelne velikosti.
    • F2FS izvaja možnost uporabe 16K blokov.
    • Mehanizem za samodejno namestitev autofs je bil preklopljen na uporabo novega API-ja za namestitev particije.
    • OverlayFS ponuja možnosti priklopa "lowerdir+" in "datadir+". Dodana podpora za ugnezdeno namestitev OverlayFS z xattrs.
    • XFS je optimiziral obremenitev procesorja v kodi za dodeljevanje blokov v realnem času. Zagotovljena je možnost hkratnega izvajanja operacij branja in FICLONE.
    • Koda EXT2 je bila pretvorjena za uporabo folij strani.
  • Pomnilniške in sistemske storitve
    • Podpora za arhitekturo ia64, ki se uporablja v procesorjih Intel Itanium, ki so bili v celoti opuščeni leta 2021, je bila ukinjena. Procesorje Itanium je Intel predstavil leta 2001, vendar arhitektura ia64 ni uspela konkurirati AMD64, predvsem zaradi višje zmogljivosti AMD64 in bolj gladkega prehoda iz 32-bitnih procesorjev x86. Posledično so se Intelovi interesi preusmerili v prid procesorjem x86-64, Itanium pa so ostali strežniki HP Integrity, katerih naročila so pred tremi leti ustavili. Koda za podporo ia64 je bila umaknjena iz jedra predvsem zaradi dolgoletnega pomanjkanja podpore za to platformo, medtem ko je Linus Torvalds izrazil pripravljenost vrniti podporo ia64 v jedro, vendar le, če obstaja vzdrževalec, ki lahko dokaže visoko kakovost podpora za to platformo zunaj glavnega jedra vsaj eno leto.
    • Dodan ukazni parameter jedrne vrstice »ia32_emulation«, ki vam omogoča, da omogočite ali onemogočite podporo za emulacijo 32-bitnega načina v jedrih, zgrajenih za arhitekturo x86-64, v fazi zagona. S praktične strani vam nova možnost omogoča, da sestavite jedro s podporo za združljivost z 32-bitnimi aplikacijami, vendar privzeto onemogočite ta način, da zmanjšate vektor napada na jedro, saj je združljivostni API manj preizkušen kot glavno jedro vmesniki.
    • Nadaljevanje selitve sprememb iz veje Rust-for-Linux v zvezi z uporabo jezika Rust kot drugega jezika za razvoj gonilnikov in modulov jedra (podpora za Rust privzeto ni aktivna in ne vodi k vključitvi Rusta med zahtevane odvisnosti sestava za jedro). Nova različica omogoča prehod na uporabo izdaje Rust 1.73 in ponuja nabor povezav za delo z delovnimi čakalnimi vrstami.
    • Možno je uporabiti mehanizem binfmt_misc za dodajanje podpore za nove formate izvedljivih datotek (na primer za zagon prevedenih aplikacij Java ali Python) znotraj ločenih neprivilegiranih imenskih prostorov.
    • Cpuset krmilnika cgroup, ki vam omogoča nadzor nad uporabo jeder CPE pri izvajanju naloge, zagotavlja delitev na lokalno in oddaljeno particioniranje, ki se razlikujeta glede na to, ali je nadrejena cgroup pravi korenski odsek ali ne. Novi nastavitvi »cpuset.cpus.exclusive« in »cpuset.cpus.excluisve.effective« sta bili dodani tudi v cpuset za izključno vezavo CPU.
    • Podsistem BPF izvaja podporo za izjeme, ki se obdelajo kot izhod v sili iz programa BPF z možnostjo varnega odvijanja okvirjev sklada. Poleg tega programi BPF omogočajo uporabo kazalcev kptr v povezavi s CPE.
    • Podsistemu io_uring je bila dodana podpora za operacije s futexom in implementirane so bile nove operacije: IORING_OP_WAITID (asinhrona različica waitid), SOCKET_URING_OP_GETSOCKOPT (možnost getsockoptand), SOCKET_URING_OP_SETSOCKOPT (možnost setsockopt) in IORING_OP_READ_MULTISHOT (operacije več branja, ki se ne ustavijo, dokler obstajajo podatki ali medpomnilnik ni poln).
    • Dodana izvedba lahkih čakalnih vrst FIFO z enojno povezavo, ki zahtevajo spinlock samo za odstranitev iz čakalne vrste v kontekstu procesa in opustijo spinlock za atomske dodatke v čakalno vrsto v katerem koli kontekstu.
    • Dodan je obročni medpomnilnik "objpool" s prilagodljivo izvedbo visoko zmogljive čakalne vrste za dodeljevanje in vračanje objektov.
    • Začetni del sprememb je bil dodan za implementacijo novega API-ja futex2, ki ima boljšo zmogljivost v sistemih NUMA, podpira velikosti, ki niso 32 bitov, in se lahko uporablja namesto multipleksiranega sistemskega klica futex().
    • Za arhitekturi ARM32 in S390x je bila dodana podpora za trenutni niz (cpuv4) navodil BPF.
    • Za arhitekturo RISC-V je mogoče uporabiti način preverjanja sklada senčnih klicev, ki je na voljo v Clang 17, zasnovan za zaščito pred prepisovanjem povratnega naslova iz funkcije v primeru prekoračitve medpomnilnika v skladu. Bistvo zaščite je shraniti povratni naslov v ločenem "senčnem" skladu po prenosu nadzora na funkcijo in pridobiti ta naslov pred izhodom iz funkcije.
    • Mehanizmu za združevanje enakih pomnilniških strani (KSM: Kernel Samepage Merging) je dodan nov način pametnega skeniranja pomnilniških strani, ki sledi neuspešno skeniranim stranem in zmanjša intenzivnost njihovega ponovnega skeniranja. Za omogočanje novega načina je bila dodana nastavitev /sys/kernel/mm/ksm/smart_scan.
    • Dodan nov ukaz ioctl PAGEMAP_SCAN, ki vam ob uporabi z userfaultfd() omogoča ugotavljanje dejstev pisanja v določen obseg pomnilnika. Novo funkcijo je na primer mogoče uporabiti v sistemu za shranjevanje in obnovitev stanja procesov CRIU ali v sistemih za preprečevanje goljufanja v igri.
    • V sistemu za sestavljanje, če je na voljo prevajalnik Clang, je privzeto omogočeno sestavljanje primerov uporabe podsistema perf, napisanih kot programi BPF.
    • Stara plast videobuf, ki je bila uporabljena za upravljanje medpomnilnikov okvirjev v medijskem podsistemu in je bila pred več kot 10 leti nadomeščena z novo izvedbo videobuf2, je bila odstranjena.
  • Virtualizacija in varnost
    • V podsistem fscrypt je bila dodana možnost šifriranja podatkov v blokih, ki so manjši od velikosti bloka v datotečnem sistemu. To je morda potrebno za omogočanje mehanizmov šifriranja strojne opreme, ki podpirajo le majhne bloke (na primer krmilnike UFS, ki podpirajo samo velikost bloka 4096, je mogoče uporabiti z datotečnim sistemom z velikostjo bloka 16K).
    • Podsistem “iommufd”, ki vam omogoča upravljanje tabel pomnilniških strani IOMMU (I/O Memory-Management Unit) prek deskriptorjev datotek iz uporabniškega prostora, je dodal sledenje podatkov, ki še niso bili spraznjeni iz predpomnilnika (umazani) za DMA operacij, kar je potrebno za določanje pomnilnika z nespranimi podatki med selitvijo procesa.
    • Podpora za definiranje pravil za nadzor dostopa za vtičnice TCP je bila dodana mehanizmu Landlock, ki vam omogoča omejitev interakcije skupine procesov z zunanjim okoljem. Ustvarite lahko na primer pravilo, ki omogoča samo dostop do omrežnih vrat 443 za vzpostavitev povezav HTTPS.
    • Podsistem AppArmor je dodal možnost nadzora dostopa do mehanizma io_uring in ustvarjanja uporabniških imenskih prostorov, kar vam omogoča, da selektivno omogočite dostop do teh zmogljivosti le določenim procesom.
    • Dodan API za potrjevanje navideznega stroja za preverjanje celovitosti zagonskega postopka navideznega stroja.
    • Sistemi LoongArch podpirajo virtualizacijo s hipervizorjem KVM.
    • Pri uporabi hipervizorja KVM v sistemih RISC-V se je pojavila podpora za razširitev Smstateen, ki virtualnemu stroju blokira dostop do registrov CPU, ki jih hipervizor izrecno ne podpira. Dodana je tudi podpora za uporabo razširitve Zicond v gostujočih sistemih, ki omogoča uporabo nekaterih pogojnih celoštevilskih operacij.
    • V gostujočih sistemih, ki temeljijo na x86 in delujejo pod KVM, je dovoljenih do 4096 virtualnih procesorjev.
  • Omrežni podsistem
    • Gonilnik NVMe-TCP (NVMe over TCP), ki omogoča dostop do pogonov NVMe prek omrežja (NVM Express over Fabrics) s protokolom TCP, ima dodano podporo za šifriranje kanala za prenos podatkov s TLS (z uporabo KTLS in procesa v ozadju). v uporabniškem prostoru tlshd za pogajanja o povezavi).
    • Optimizirano je bilo delovanje razporejevalnika paketov fq (Fair Queuing), kar je omogočilo povečanje prepustnosti za 5 % pri velikih obremenitvah pri testu tcp_rr (TCP Request/Response) in za 13 % pri neomejenem pretoku UDP paketov.
    • TCP doda izbirno zmožnost časovnega žiga z mikrosekundno natančnostjo (TCP TS) (RFC 7323), ki omogoča natančnejšo oceno zakasnitve in naprednejše module za nadzor zastojev. Če ga želite omogočiti, lahko uporabite ukaz “ip route add 10/8 ... features tcp_usec_ts”.
    • Skladu TCP je dodana podpora za razširitev TCP-AO (TCP Authentication Option, RFC 5925), ki omogoča preverjanje glav TCP z uporabo kod MAC (Message Authentication Code), z uporabo sodobnejših algoritmov HMAC-SHA1 in CMAC-AES- 128 namesto predhodno razpoložljive možnosti TCP-MD5, ki temelji na podedovanem algoritmu MD5.
    • Dodana je nova vrsta virtualnih omrežnih naprav »netkit«, pri katerih je logika prenosa podatkov nastavljena s programom BPF.
    • KSMBD, implementacija strežnika SMB na ravni jedra, ima dodano podporo za razreševanje imen datotek, ki vsebujejo nadomestne pare sestavljenih znakov.
    • NFS je izboljšal izvajanje niti s storitvami RPC. Dodana podpora za delegiranje pisanja (za NFSv4.1+). NFSD je dodal podporo za upravljalnik omrežne povezave rpc_status. Izboljšana podpora za odjemalce NFSv4.x pri ponovnem izvozu v knfsd.
  • Оборудование
    • Začetna podpora za vdelano programsko opremo GSP-RM je bila dodana modulu jedra Nouveau, ki se uporablja v grafičnem procesorju NVIDIA RTX 20+ za premik operacij inicializacije in nadzora grafične procesorske enote na stran ločenega mikrokrmilnika GSP (sistemski procesor GPU). Podpora GSP-RM omogoča gonilniku Nouveau, da deluje prek klicev vdelane programske opreme, namesto da neposredno programira interakcije strojne opreme, zaradi česar je dodajanje podpore za nove grafične procesorje NVIDIA veliko lažje z uporabo vnaprej izdelanih klicev za inicializacijo in upravljanje porabe energije.
    • Gonilnik AMDGPU podpira GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 in DML2. Izboljšana podpora za brezhibno nalaganje (brez utripanja pri preklopu video načina).
    • Gonilnik i915 dodaja podporo za čipe Intel Meteor Lake in doda začetno izvedbo Intel LunarLake (Xe 2).
    • Dodana podpora za asimetrične prenosne kanale, dodana specifikaciji USB4 v2 (120/40G).
    • Dodana podpora za ARM SoC: Qualcomm Snapdragon 720G (uporablja se v pametnih telefonih Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (uporablja se v usmerjevalnikih in NAS).
    • Dodana podpora za pametni telefon Fairphone 5 in plošče ARM Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Dodana podpora za plošči RISC-V Milk-V Pioneer in Milk-V Duo.
    • Dodana podpora za zvočne vmesnike prenosnikov HUAWEI, opremljenih s procesorji AMD. Dodana podpora za dodatne zvočnike, nameščene na prenosnikih Dell Oasis 13/14/16. Dodana podpora za vgrajene zvočnike ASUS K6500ZC. Dodana podpora za indikator izklopa zvoka na prenosnikih HP 255 G8 in G10. Dodana podpora za zvočne gonilnike acp6.3. Dodana podpora za profesionalne snemalne vmesnike Focusrite Clarett+ 2Pre in 4Pre.

Istočasno je Latinskoameriška fundacija za prosto programsko opremo oblikovala različico popolnoma brezplačnega jedra 6.7 - Linux-libre 6.7-gnu, očiščeno elementov vdelane programske opreme in gonilnikov, ki vsebujejo neproste komponente ali odseke kode, katerih obseg je omejen. s strani proizvajalca. V izdaji 6.7 je bila koda za čiščenje madežev posodobljena v različnih gonilnikih in podsistemih, na primer v gonilnikih amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs in btqca. Koda za čiščenje gonilnikov localtalk in rtl8192u je bila odstranjena zaradi njune izključitve iz jedra. Odstranjene nepotrebne komponente za čiščenje gonilnikov xhci-pci, rtl8xxxu in rtw8822b, ki so bile predhodno dodane pomotoma. Očiščena imena blob v datotekah dts za arhitekturo Aarch64. Odstranjene madeži v novih gonilnikih mt7925, tps6598x, aw87390 in aw88399.

Vir: opennet.ru

Dodaj komentar