Po dveh mesecih razvoja je Linus Torvalds izdal jedro. Linux 6.7. Med najbolj opaznimi spremembami: integracija datotečnega sistema Bcachefs, konec podpore za arhitekturo Itanium, možnost dela s strojno programsko opremo Nouvea z GSP-R, podpora za šifriranje TLS v NVMe-TCP, možnost uporabe izjem v BPF, podpora za futex v io_uring, optimizacija delovanja razporejevalnika fq (Fair Queuing), podpora za razširitev TCP-AO (TCP Authentication Option) in možnost omejevanja omrežnih povezav v mehanizmu zaščite Landlock, dodan je bil nadzor dostopa do uporabniškega imenskega prostora in io_uring prek AppArmorja.
Nova različica vključuje 18405 popravkov od 2066 razvijalcev, z velikostjo popravka 72 MB (spremembe so vplivale na 13467 datotek, dodanih je bilo 906147 vrstic kode in odstranjenih 341048 vrstic). Prejšnja izdaja je vključevala 15291 popravkov od 2058 razvijalcev, z velikostjo popravka 39 MB. Približno 45 % vseh sprememb v različici 6.7 je povezanih z gonilniki naprav, približno 14 % sprememb je povezanih s posodobitvami kode, specifičnimi za strojno arhitekturo, 13 % je povezanih z omrežnim skladom, 5 % je povezanih z datotečnimi sistemi in 3 % z notranjimi podsistemi jedra.
Glavne novosti v jedru 6.7:
- Diskovni podsistem, V/I in datotečni sistemi
- Jedro vključuje kodo datotečnega sistema Bcachefs, ki poskuša doseči zmogljivost, zanesljivost in skalabilnost XFS, v kombinaciji z elementi napredne funkcionalnosti, ki jo najdemo v Btrfs in ZFS. Bcachefs na primer podpira funkcije, kot so vključitev več naprav v particijo, večplastne postavitve diskov (spodnja plast s pogosto dostopanimi podatki na podlagi hitrih SSD-jev in zgornja plast z manj pogosto dostopanimi podatki s trdih diskov), replikacija (RAID 1/10), predpomnjenje, transparentno stiskanje podatkov (načini LZ4, gzip in ZSTD), rezine stanja (posnetki podatkov), preverjanje integritete z uporabo kontrolnih vsot, možnost shranjevanja kod za odpravljanje napak Reed-Solomon (RAID 5/6) in shranjevanje šifriranih podatkov (z uporabo ChaCha20 in Poly1305). Kar zadeva zmogljivost, Bcachefs prekaša Btrfs in druge datotečne sisteme, ki temeljijo na mehanizmu Copy-on-Write, ter kaže hitrost delovanja blizu Ext4 in XFS.
- Datotečni sistem Btrfs zdaj ponuja poenostavljen način kvot, ki izboljša zmogljivost s sledenjem ekstentov le v podrazdelku, v katerem so ustvarjeni, kar znatno poenostavi izračune in izboljša zmogljivost, vendar ne omogoča upoštevanja ekstentov, ki si jih deli več podrazdelkov.
- Btrfs je dodal novo podatkovno strukturo, »stripe tree«, ki je primerna za logično preslikavo obsega v situacijah, ko so fizične preslikave med napravami nedosledne. Ta struktura se trenutno uporablja v izvedbah RAID 0 in RAID 1 za conirane blokovne naprave. V prihodnosti se načrtuje uporaba te strukture v RAID-u višje ravni, kar bo odpravilo številne težave s trenutno izvedbo.
- Datotečni sistem Ceph podpira preslikavo uporabniških ID-jev nameščenih datotečnih sistemov, kar se uporablja za povezovanje datotek določenega uporabnika na nameščeni tuji particiji z drugim uporabnikom v trenutnem sistemu.
- efivarfs zdaj omogoča določanje uid in gid pri priklopu, da lahko procesi brez root dostopa spreminjajo spremenljivke UEFI.
- V exFAT so bili dodani klici Ioctl za branje in spreminjanje atributov datotečnega sistema. Dodana je bila tudi možnost obdelave imenikov ničelne velikosti.
- F2FS omogoča uporabo blokov velikosti 16K.
- Mehanizem samodejnega priklopa autofs je bil preklopljen na uporabo novega API-ja za priklop particij.
- OverlayFS zdaj ponuja možnosti priklopa "lowerdir+" in "datadir+". Dodana je bila podpora za vgnezdene priklope OverlayFS z xattrs.
- XFS je optimiziral obremenitev procesorja v kodi za dodeljevanje blokov v realnem času. Sočasno branje in operacije FICLONE so zdaj možne.
- Koda EXT2 je bila pretvorjena za uporabo foliov strani.
- Pomnilniške in sistemske storitve
- Podpora za arhitekturo ia64, ki se uporablja v Intelovih procesorjih Itanium, ki so bili ukinjeni leta 2021, je bila ukinjena. Intel je procesorje Itanium predstavil leta 2001, vendar arhitektura ia64 ni mogla konkurirati AMD64, predvsem zaradi večje zmogljivosti AMD64 in bolj gladkega prehoda z 32-bitnih procesorjev x86. Posledično se je Intel osredotočil na procesorje x86-64, pri čemer je Itanium ostal primarni poudarek. strežniki HP Integrity, ki je pred tremi leti prenehal sprejemati naročila. Koda za podporo ia64 je bila odstranjena iz jedra, predvsem zaradi dolgotrajnega pomanjkanja podpore za platformo. Linus Torvalds je izrazil pripravljenost za ponovno vzpostavitev podpore za ia64, vendar le, če lahko vzdrževalec vsaj eno leto dokaže visokokakovostno podporo za platformo zunaj osrednjega jedra.
- Dodan je bil parameter ukazne vrstice jedra »ia32_emulation«. Ta parameter vam omogoča, da ob zagonu omogočite ali onemogočite podporo za 32-bitno emulacijo v jedrih, zgrajenih za arhitekturo x86-64. V praksi vam ta novi parameter omogoča, da zgradite jedro s podporo za združljivost z 32-bitnimi aplikacijami, vendar ta način privzeto onemogočite, da zmanjšate površino za napade jedra, saj je API za združljivost manj preizkušen kot osrednji vmesniki jedra.
- Nadaljevanje migracije sprememb iz Rust-for-branchLinux, povezano z uporabo Rusta kot drugega jezika za razvoj gonilnikov in modulov jedra (podpora za Rust ni privzeto omogočena in ne vključuje Rusta kot obvezne odvisnosti od gradnje jedra). Nova različica prehaja na Rust 1.73 in uvaja niz vezi za delo z delovnimi čakalnimi vrstami.
- Uvedena je bila možnost uporabe mehanizma binfmt_misc, ki dodaja podporo za nove oblike izvedljivih datotek (na primer za zagon prevedenih aplikacij Java ali Python) znotraj ločenih neprivilegiranih imenskih prostorov.
- Krmilnik cpuset cgroup, ki upravlja porabo jeder procesorja med izvajanjem nalog, zdaj ločuje med lokalnimi in oddaljenimi particijami, ki se razlikujejo glede na to, ali je nadrejena cgroup veljavna korenska particija. cpuset vključuje tudi novi nastavitvi »cpuset.cpus.exclusive« in »cpuset.cpus.excluisve.effective« za izključno afiniteto procesorja.
- Podsistem BPF implementira podporo za izjeme, ki se obravnavajo kot takojšen izhod iz programa BPF z možnostjo varnega razpletanja okvirjev sklada. Poleg tega lahko programi BPF zdaj uporabljajo kazalce kptr, vezane na CPU.
- Podsistem io_uring je bil posodobljen za podporo operacijam futex, uvedene pa so bile tudi nove operacije: IORING_OP_WAITID (asinhrona različica waitid), SOCKET_URING_OP_GETSOCKOPT (različica getsockoptand), SOCKET_URING_OP_SETSOCKOPT (različica setsockopt) in IORING_OP_READ_MULTISHOT (več operacij branja, ki se nadaljujejo, dokler ni podatkov ali dokler medpomnilnik ni poln).
- Dodana je implementacija lahkih enojnih FIFO čakalnih vrst, ki zahtevajo spinlock samo za odstranjevanje iz čakalne vrste v kontekstu procesa in ne zahtevajo spinlock za atomsko uvrščanje v čakalno vrsto v nobenem kontekstu.
- Dodan je bil obročni medpomnilnik »objpool« s skalabilno implementacijo visokozmogljive čakalne vrste za dodeljevanje in vračanje objektov.
- Dodane so bile začetne spremembe za implementacijo novega API-ja futex2, ki ima boljšo zmogljivost na sistemih NUMA, podpira velikosti, ki niso 32 bitov, in ga je mogoče uporabiti namesto multipleksiranega sistemskega klica futex().
- Za arhitekture ARM32 in S390x je bila dodana podpora za trenutni nabor (cpuv4) ukazov BPF.
- Arhitektura RISC-V zdaj podpira način preverjanja sklada Shadow-Call, ki je na voljo v Clang 17. Ta način ščiti pred prepisovanjem povratnega naslova funkcije v primeru prekoračitve medpomnilnika sklada. Ta zaščita vključuje shranjevanje povratnega naslova v ločen "senčni" sklad po prenosu nadzora na funkcijo in pridobivanje tega naslova pred izhodom iz funkcije.
- Mehanizem združevanja samih strani jedra (KSM) je bil dodan nov način pametnega skeniranja strani pomnilnika. Ta način sledi neuspešno skeniranim stranem in zmanjša intenzivnost njihovih ponovnih skeniranj. Za omogočanje tega novega načina je bila dodana nastavitev /sys/kernel/mm/ksm/smart_scan.
- Dodan je bil nov ukaz ioctl, PAGEMAP_SCAN. Pri uporabi z userfaultfd() omogoča zaznavanje zapisov v določeno območje pomnilnika. To novo funkcijo je mogoče uporabiti na primer za shranjevanje in obnovitev stanja procesov CRIU ali sistemov proti goljufijam v igri.
- V sistemu za gradnjo, če je prisoten prevajalnik Clang, je gradnja primerov uporabe podsistema perf, napisanih kot programi BPF, privzeto omogočena.
- Stara plast videobuf, ki se je uporabljala za upravljanje medpomnilnikov okvirjev v medijskem podsistemu in jo je pred več kot 10 leti nadomestila nova implementacija videobuf2, je bila odstranjena.
- Virtualizacija in varnost
- Podsistem fscrypt zdaj podpira šifriranje v blokih, manjših od velikosti bloka datotečnega sistema. To je lahko potrebno za mehanizme strojnega šifriranja, ki podpirajo le majhne bloke (na primer, krmilnike UFS, ki podpirajo le velikost bloka 4096, je mogoče uporabljati z datotečnim sistemom 16K).
- Podsistem »iommufd«, ki omogoča upravljanje tabel strani IOMMU (I/O Memory-Management Unit) prek deskriptorjev datotek iz uporabniškega prostora, je bil posodobljen za sledenje umazanim podatkom za operacije DMA, kar je potrebno za prepoznavanje pomnilnika z umazanimi podatki med migracijo procesov.
- Mehanizem Landlock, ki omogoča omejitev interakcije skupine procesov z zunanjim okoljem, zdaj podpira definiranje pravil za nadzor dostopa za vtičnice TCP. Ustvarite lahko na primer pravilo, ki dovoljuje dostop do omrežnih vrat 443 samo za povezave HTTPS.
- Podsistem AppArmor je bil posodobljen z možnostjo nadzora dostopa do mehanizma io_uring in ustvarjanja uporabniških imenskih prostorov, kar omogoča selektiven dostop do teh zmogljivosti le določenim procesom.
- Dodan API za certificiranje virtualni stroji da potrdijo integriteto postopka prenosa.
- Sistemi LoongArch podpirajo virtualizacijo z uporabo hipervizorja KVM.
- Pri uporabi hipervizorja KVM v sistemih RISC-V je bila dodana podpora za razširitev Smstaten. Ta razširitev preprečuje virtualnim strojem dostop do registrov CPE, ki jih hipervizor izrecno ne podpira. Dodana je bila tudi podpora za uporabo razširitve Zicond v gostujočih sistemih, ki omogoča določene pogojne celoštevilske operacije.
- V gostujočih sistemih x86, ki izvajajo 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) z uporabo protokola TCP, je bil posodobljen in zdaj podpira šifriranje kanala za prenos podatkov z uporabo TLS (z uporabo KTLS in procesa v ozadju v uporabniškem prostoru tlshd za pogajanje o povezavi).
- Optimizirana je bila zmogljivost razporejevalnika paketov fq (Fair Queuing), kar je omogočilo povečanje prepustnosti za 5 % pri velikih obremenitvah v testu tcp_rr (TCP Request/Response) in za 13 % pri neomejenem pretoku paketov UDP.
- Protokol TCP zdaj neobvezno podpira časovne žige (TCP TS) z mikrosekundno ločljivostjo (RFC 7323), kar omogoča natančnejšo oceno zakasnitve in ustvarjanje naprednejših modulov za upravljanje preobremenjenosti. Če želite to omogočiti, uporabite ukaz »ip route add 10/8 … features tcp_usec_ts«.
- Sklad TCP zdaj podpira 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 prej dostopne možnosti TCP-MD5, ki temelji na zastarelem algoritmu MD5.
- Dodana je bila nova vrsta virtualnih omrežnih naprav, »netkit«, katere logika prenosa podatkov je definirana s programom BPF.
- KSMBD, implementacija strežnika SMB na ravni jedra, je bila posodobljena tako, da podpira razreševanje imen datotek, ki vsebujejo nadomestne pare sestavljenih znakov.
- NFS je izboljšal pretakanje s storitvami RPC. Dodana je bila podpora za delegiranje pisanja (za NFSv4.1+). NFSD zdaj podpira rutino za omrežno povezavo rpc_status. Izboljšana je bila podpora za odjemalce NFSv4.x pri ponovnem izvozu v knfsd.
- Оборудование
- Jedrni modul Nouveau je bil posodobljen z začetno podporo za vdelano programsko opremo GSP-RM, ki se uporablja v grafičnih procesorjih NVIDIA RTX 20+ za prenos inicializacije in upravljanja grafičnega procesorja na ločen mikrokrmilnik GSP (GPU System Processor). Podpora za GSP-RM omogoča gonilniku Nouveau, da deluje prek vdelane programske opreme namesto neposrednega programiranja interakcij s strojno opremo, kar znatno poenostavi podporo za nove grafične procesorje NVIDIA z uporabo vnaprej določenih klicev za inicializacijo in upravljanje porabe energije.
- Gonilnik AMDGPU zdaj podpira GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 in DML2. Izboljšana je bila podpora za brezhibno nalaganje (brez utripanja pri preklapljanju video načinov).
- Gonilnik i915 dodaja podporo za čipe Intel Meteor Lake in začetno implementacijo Intel LunarLake (Xe 2).
- Dodana podpora za asimetrične prenosne kanale, dodane v 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 naslednje ARM plošče: 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šče RISC-V Milk-V Pioneer in Milk-V Duo.
- Dodana podpora za zvočne vmesnike na prenosnikih HUAWEI s procesorji AMD. Dodana podpora za dodatne zvočnike, nameščene na prenosnikih Dell Oasis 13/14/16. Dodana podpora za vgrajene zvočnike na 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 profesionalna zvočna snemalna vmesnika Focusrite Clarett+ 2Pre in 4Pre.
Hkrati je Latinskoameriška fundacija za prosto programsko opremo ustvarila različico popolnoma brezplačnega jedra 6.7 - Linux-libre 6.7-gnu, očiščen elementov vdelane programske opreme in gonilnikov, ki vsebujejo ne-proste komponente ali dele kode z omejenim obsegom s strani proizvajalca. Izdaja 6.7 vključuje posodobljeno kodo za čiščenje blobov v različnih gonilnikih in podsistemih, kot so amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs in btqca. Koda za čiščenje gonilnikov localtalk in rtl8192u je bila odstranjena zaradi njihove izključitve iz jedra. Nepotrebne komponente za čiščenje gonilnikov xhci-pci, rtl8xxxu in rtw8822b, ki so bile prej pomotoma dodane, so bile odstranjene. Imena blobov v datotekah dts za arhitekturo Aarch64 so bila očiščena. Blobi so bili odstranjeni v novih gonilnikih mt7925, tps6598x, aw87390 in aw88399.
Vir: opennet.ru
