Pärast kahte kuu arendust tutvustas Linus Torvalds Linuxi 6.6 tuuma väljalaset. Peamised muudatused on: uus EEVDF ülesande planeerija; varjutusstacki mehhanism eksploitide kaitseks; fs-verity toetamine OverlayFS-is; kvota ja xattr rakendamine tmpfs-is; online fsck ettevalmistus XFS-is; 'GPL-only' sümbolite ekspordi jälgimise tugevdamine; võrgusoklite toetamine io_uringus; mälude randomiseerimine kmallocis; ReiserFS kuulutatakse vananenuks; Nouveau-s on lisatud primitiivide toe Vulkan-draiverile NVK.
Uues versioonis on 15291 parandust 2058 arendajalt, plaastri suurus on 39 MB (muudatused puudutasid 14844 faili, lisati 553359 rida koodi, eemaldati 284012 rida). Eelmisel väljalasel oli 14674 parandust 2016 arendajalt, plaastri suurus oli 78 MB. Ligikaudu 44% kõigist 6.6 esitatud muudatustest on seotud seadme draiveritega, umbes 17% muudatustest on seotud riistvaraarhitektuurile spetsiifilise koodi värskendamisega, 11% on seotud võrgu stekkiga, 4% -ga failisüsteemide ja 3% -ga tuuma sisemiste süsteemidega.
Peamised uuendused tuumas 6.6:
- Mälu ja süsteemiteenused
- Uus EEVDF (Earliest Eligible Virtual Deadline First) ülesande planeerija on kasutusele võetud, asendades CFS-i (Completely Fair Scheduler), mis oli saadaval alates tuumast 2.6.23. Uus planeerija arvestab järgmise käivitatava protsessi valimisel neid protsesse, mis on saanud vähem protsessorivõimsust või saanud liiga palju protsessoriaega. Esimeses juhus sunnitakse juhtima protsessi, samas kui teisel juhul lükatakse see edasi. Vana CFS-i planeerija kasutas protsesside tuvastamiseks, mis vajasid eritähelepanu, heuristikat ja peene seadistamise tehnikaid, samas kui uus planeerija jälgib neid selgemalt ega vaja peeneid seadistusi. Eeldatakse, et EEVDF vähendab viivitusi ülesannete täitmisel, millega CFS-il olid planeerimises probleeme.
- Tehti muudatusi GPL-only kategooria sisemiste sümbolite töötlemises, et raskendada patenteeritud GPL-kihtide moodulite kasutamist, mis ületavad juurdepääsu tuumateenustele, millele pääsevad ligi ainult GPL-litsentsiga koodid. Funktsioonis symbol_get() on patenteeritud moodulitel keelatud otsida sümboleid, mis on märgistatud kui GPL-only, ja vastupidi, GPL-moodulid ei saa leida patenteeritud moodulite eksporditud sümboleid.
- Lisatud on täiendavad seaded tööqueue'ide (unbound workqueue) jaoks, et suurendada protsessorikuhja taaskasutamise tõhusust suurtes süsteemides, millel on mitu kolmanda taseme (L3) vahemälu. Tuuma koosseisu on lisatud ka tööriist tools/workqueue/wq_dump.py, et kontrollida praegust tööqueue'ide konfiguratsiooni.
- Io_uring alamsüsteemi on lisatud algne tugi operatsioonide ja käskude jaoks, mis on spetsiifilised võrgu soketidele. Lisatud on sysctl io_uring_disabled, et süsteemi tasemel io_uring välja lülitada. Samuti on io_uring'is oluliselt kiirendatud otse sisendi/väljundi (Direct I/O) toimingud asünkroonse režiimi puhul. Muudatuste tulemusel saavutatakse 37% suurem läbilaskevõime ja väiksemad latentsusajad sisendi/väljundi toimingute tegemisel.
- PA-RISC arhitektuurile on rakendatud JIT kompilaator BPF jaoks.
- Seadistusse /sys/devices/system/cpu/smt/control on lisatud toetuse numbrilised parameetrid, mis määravad igale CPU tuumale saadaval olevate lõngade arvu (varasemalt toetas ainult väärtusi "on" ja "off", et lülitada sisse ja välja sümmeetriline mitme lõngaga töötlemine). Uut võimalust saab rakendada teatud PowerPC protsessoritel, mis toetavad kuumplug-in'i ("hotplug SMT"), et valikuliselt aktiveerida SMT teatud tuumadel tööajal.
- Toimuvate muudatuste üleviimine Rust-for-Linux haru, mis puudutab Rusti keele kasutamist teise keelesena draiverite ja kerneli moodulite arendamiseks (Rusti toetus ei ole vaikimisi aktiivne ega too kaasa Rusti lisamist kerneli kohustuslike sõltuvuste hulka). On toimunud üleminek Rusti versioonile 1.71.1 ja bindgen 0.65.1. On rakendatud tüübi 'Zeroable'. Lisatud on protseduuri makrod 'paste!' ja '#[derive(Zeroable)]'. Tagatud on ühilduvus '#[pin_data]'. Lisatud on initsialiseerimisfunktsioonid '{,pin_}init_array_from_fn()' ja meetod '{,pin_}chain'. Module 'types' on laienenud. Unit-testimise raamistikku kunit on lisatud võimalus käivitada testid Rusti dokumentatsioonist.
- Lisatud on alamsüsteem 'eventfs', mis võimaldab oluliselt vähendada mälu tarbimist jälgimise süsteemis, vabastades end tarbetutest struktuuridest, mis on vajalikud jälgimispunktide esitamiseks faili süsteemis. Varem loodi sellised struktuurid kõigi jälgimispunktide jaoks, sõltumata jälgimise kasutamisest. Eventfs-i abil saavad sellised struktuurid luua dünaamiliselt, ainult siis, kui need on vajalikud.
- Perf utiliidi funktsioonid on laiendatud.
- Faili /proc/pid/smaps on lisatud teave, et diagnostika efektiivsuse kohta, kuidas identsete mälu lehtede mehhanism (KSM, Kernel Samepage Merging) töötab.
- Frontswap API, mis võimaldas paigutada vahetusala mälu, millele ei saa otse aadresseerida ja mis ei paku operatiivteavet vaba ruumi olemasolu kohta, on kõrvaldatud. Seda API-d kasutati ainult zswapis, seetõttu on otsustatud otse kasutada seda funktsionaalsust zswapis, vabanedes tarbetutest kihtidest.
- RISC-V arhitektuurile on lisatud tugi jõudluse loendurite juurde pääsemiseks kasutaja ruumist ja võimalus paigutada tuumakraami järelikult alale, mis ületab 4GB.
- Lisatud on algne tugi ARM SME (Scalable Matrix Extension) käskudele.
- LoongArch arhitektuuriga süsteemides on rakendatud KDB, KGDB, kcov, KFENCE ja KASAN silumisriistade kasutamise võimalus.
- Lisatud on tugi failidele, mis võimaldavad tuuma testimist GitLab'i pideva integratsiooni süsteemis, mida kasutatakse graafiliste draiverite arendamisel.
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- OverlayFS failisüsteemile on lisatud tugi fs-verity hashide salvestamiseks laiendatud atribuudis (xattr) overlay.verity, mida saab kasutada failide terviklikkuse ja autentsuse kontrollimiseks OverlayFS alumistes kihtides, kasutades krüptograafilisi hase ja võtmeid. Seeläbi on OverlayFS-is nüüd sisaldatud kõik muudatused, mis on vajalikud Composefsi projekti toimimiseks OverlayFS ja EROFS failisüsteemide pealisehitise vormis.
- XFS failisüsteem on ette valmistatud fsck tööriista rakendamiseks, et kontrollida ja parandada tuvastatud probleeme online-režiimis ilma failisüsteemi eemaldamiseta. Lisaks on XFS-is rakendatud suurte foliantide (folios) kasutamise võimalus leheküljekeskkonnas ning lisatud mõned sellega seotud optimeerimised, mis on märkimisväärselt suurendanud jõudlust teatud koormuste korral.
- tmpfs failisüsteemile on lisatud tugi kasutaja laiendatud atribuutide (user xattrs), otse sisendi/väljundi ja kasutaja- ning grupikvootide jaoks. Kataloogide nihked on stabiliseeritud, lahendades probleemid tmpfs eksportimisega NFS-i kaudu.
- Mountimise haldamise API-s on suurenenud turvalisuse jaoks lisatud lipp FSCONFIG_CMD_CREATE_EXCL, mis keelab superbloki jagamise mitmes mountimispunktis (keelab ühe jaotise kinnitamise mitmele mountimispunktile). Selle lipu sisselülitamiseks on mount utiliidis pakutud valik "--exclusive".
- VFS alamsüsteemi lisati tugi ajutiseks parameetrite muutmiseks juurdepääsu ja muutmise ajaga (atime, mtime). Varem kajastusid ajateated viivitus, mis takistas andmete ajakohasuse jälgimist süsteemides, nagu NFS (viivituse tõttu faili muutuste määramisel võis süsteem ekslikult arvata, et vahemälu andmed on ajakohased). Uus funktsioon on saadaval Btrfs, Ext4, tmpfs ja XFS jaoks.
- Btrfs-is on kohandatud vananenud sisseehitatud haavatavuse kontrollimise mehhanismi, mis lülitatakse sisse ehituse etapis parameetri BTRFS_FS_CHECK_INTEGRITY kaudu. Määratud mehhanism on jäänud toetamata, enam ei testita ja loob täiendava koormuse CPU-le ja mälule. Lisaks on Btrfs-is optimeeritud uue FS kontrollimise (scrub) koodi jõudlust.
- Ext4 failisüsteemis on lisatud perioodilised superbloki uuendamise kontrollid ja mäluseeria operatsioonid on kiirendatud faili lõppu kirjutamisel.
- FUSE alam süsteemi on lisatud btime („sünniaeg“) atribuut, mis määratleb inode'i loomise aja.
- Sümboolsete linkide õigusi ei tohi muuta.
- Lisatud on süssystemi kõne fchmodat2(), mis erineb fchmodat() süsteemikõnest lisanduva argumendi poolest, et määrata lipud. Praegu toetatakse lippe ainult AT_SYMLINK_NOFOLLOW ja AT_EMPTY_PATH, mis võimaldavad libc-funktsioonis fchmodat() realiseerida sümboolsete linkide järgimise keeld ja failikirje kasutamine tühja tee määramisel ilma kõrvalejäämiseta.
- EROFS (Extendable Read-Only File System) failisüsteemis, mis on mõeldud ainult lugemisrežiimis jaotistele, on lisatud Deflate tihendamise algoritmi toetus. Laiendatud atribuutide kiireks leidmiseks on kasutusele võetud tõenäosusstruktuur bloom filter.
- Lisatud on CONFIG_BUFFER_HEAD seade, mis võimaldab koguda tuuma ilma buffer_head struktuuri kasutamata. Buffer_headi kasutamata jätmisel võib kasutada plokiseadmikke ja teatud failisüsteeme, nagu xfs, btrfs, cramfs, erofs ja squashfs.
- Plokiseadmiku draiverisse ublk, mis võimaldab tuvastada spetsiifilist loogikat kasutaja ruumi protsessis, on lisatud tugi tsoonitud salvestusseadmetele (grupi plokkide või sektorite jagamine tsoonideks, kuhu on lubatud vaid järjestikune andmete lisamine kogu plokigruppi uuendades).
- ReiserFS failisüsteemi rakendus on tõstetud toetatavate kategooriast aegunud (Obsolete) sektsiooni. ReiserFS-i toe lõpetamine on planeeritud aastaks 2025. Aegumise põhjuseks on nimetatud ReiserFS-i hoolduse stagnatsiooni, lahendamata 2038 aasta probleemi, katkestuste tagamise võimaluste puudumist ja soov kulutusi vähendada, mis on seotud failisüsteemide uue API toe haldamisega, sealhulgas mappide, iomap-i ja folios-ega.
- NFS-serveris on realiseeritud kirjutamise operatsioonide delegatsioonimehhanism NFSv4 jaoks, mis suurendab failide kirjutamise vahemälu efektiivsust, vähendades liiklust. Toetatakse READ_PLUS operatsiooni, mis on määratletud NFS 4.2-s.
- Ceph faili süsteemi on lisatud tugi fscrypt-ile.
- Virtualiseerimine ja turvalisus
- Lisatud on Shadow Stack mehhanismi rakendus, mis võimaldab paljusid ekspluateerimistakistusi blokeerida, kasutades Intel protsessorite riistvaralisi võimalusi selleks, et kaitsta funktsiooni tagasipöördumise aadressi ülekirjutamise eest pöördumisvea korral. Kaitse põhiolemus seisneb selles, et pärast funktsioonile juhtimise edastamist salvestab protsessor tagasipöördumise aadressi mitte ainult tavapärases vahemälus, vaid ka eraldi 'varjatud' vahemälus, mida ei saa otse muuta. Enne funktsioonist väljuda aadressi tagasi pöördumise aadressi väljatõmbamine varjatud vahemälust ja võrreldav põhivahemälu aadressiga. Aadresside mittetäpsus toob kaasa erandi genereerimise, mis blokeerib olukorrad, kus ekspluateerijal õnnestus aadress peamise vahemälu puhul ülekirjutada. Riistvaraline varjatud vahemälu toetatakse ainult 64-bitistes kogudes, 32-bitistes kogudes kasutatakse aga selle tarkvaralist emulatsiooni.
- Tugineb CFI (Control Flow Integrity) kaitse režiimiga Clang'i kompilaatori toetus, mis takistab normaalsete juhtimisvoogude rikkumisi, mis tulenevad eemaldatud funktsioonide pointerite muutmisest mälu sees.
- RISC-V arhitektuuril on laadimise ajal mälusüdamiku paigutuse randomiseerimine aktiveeritud.
- Süsteemi kutses seccomp() on lisatud lipp SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP, mis võimaldab töötajate protsesside jälgimise sündmusi sünnioonses režiimis töödelda, et suurendada ülesande planeerimise efektiivsust.
- Funktsioonis kmalloc() on slab-cache'ide randomiseerimine tagatud, mis muudab tuvastatud haavatavuste ekspluateerimise keerulisemaks.
- SELinux'i sunnitud juurdepääsu juhtimise süsteemi aktiveerimise võimaluste seast on eemaldatud USA Rahvuse Agentuuri nimetamine. Kuna projekt on juba 20 aastat arenenud kogukonna pädevuse all ning seda hooldavad sõltumatud hooldajad, otsustati liikuda nime "SELinux" kasutamisele "NSA SELinux" asemel kommentaarides ja dokumentatsioonis Kconfigis (näiteks, rikka parameetri SECURITY_SELINUX selgitus on muudetud "NSA SELinux Support"-ist "SELinux Support"-iks).
- Süsteemi kutsesse userfaultfd() on lisatud UFFDIO_POISON operatsioon, mis võimaldab mälulehti määrata kui "mürgiseid" (poisoned), mida saab kasutada rikutud mälulehtede üleviimiseks migreerimise käigus. virtuaalmasinad ühelt süsteemilt teisele.
- VFIO alamsüsteemi on lisatud uus sümboolne liides (/dev/vfio/devices/vfioX), mis haldab VFIO seadmeid, võimaldades kasutajal avada seadme fail otse, ilma et peaks kasutama vananenud grupi liidest /dev/vfio/$groupID.
- V serveril NFS-i toetus vanadele Kerberose krüpteerimistüüpidele, mis kasutavad DES-i ja 3DES-i algoritme, on lõpetatud.
- Hyper-V hüperviisori keskkonnas töötamisel on lisatud tugi AMD SEV-SNP (Secure Nested Paging) ja Intel TDX (Trusted Domain Extensions) tehnoloogia abil kaitstud külalis süsteemide jaoks.
- Kerneli kompileerimisel režiimis "W=1" on kompilaatori vaikeseadeteks kaasatud hoiatused "-Wformat-overflow", "-Wformat-truncation", "-Wstringop-overflow" ja "-Wrestrict". Kõikide kompileerimiste puhul on kaasatud hoiatus "-Wenum-conversion".
- Võrgu alamsüsteem
- AF_XDP (eXpress Data Path) aadresside perekonna rakendust on edasi arendatud võimalusega töötada pakettidega, mis on salvestatud mitmetesse puutidesse (näiteks ühes puutis võib olla paketi pealkiri, teises andmed, või mitme puutide ahelas võivad olla suured jumbo Etherneti kaadrid). AF_XDP sokkide kasutavad programmid saavad nüüd vastu võtta ja edastada pakette otse mitmest puutist.
- BPF alamsüsteemi on lisatud IPv4 ja IPv6 pakettide defragmenteerimise tugi ning voogude filtreerimise võimalus killustatud pakettide jaoks.
- BPF-sse on lisatud uus töötleja update_socket_protocol, mis võimaldab BPF programmides muuta uusimate sokkide taotletud protokolli. Näiteks võib BPF programm sujuvalt asendada TCP protokolli MPTCP-ks (multipath TCP), et optimeerida rakenduse liiklust. Samuti on BPF-sse lisatud toetus pakettide marsruutimise haldamiseks läbi erinevate voogude MPTCP-s.
- Ksmbd mooduli eksperimentaalne arendusstaatus on kõrvaldatud, pakkudes töötavat SMB3 protokolli põhjal töötava failiserveri rakendust. Lisatud on toetus lugemisoperatsioonide ühendamiseks (read compound päringud).
- Seadmed
- DRM-alamsüsteemi (Direct Rendering Manager) on tehtud muudatusi, mis on vajalikud NVK avatud draiveri tõhusaks toimimiseks Vulkan API rakendusega NVIDIA graafikakaartidele. Esialgu oli DRM-draiver Nouveau mõeldud OpenGL rakendamiseks, seega puuduvad selles primitivid, mis on vajalikud Vulkan-draiverite tõhusaks toimimiseks, näiteks sünkroonitud objektide toetamine ja virtuaalse aadressiruumi haldamine.
- AMDGPUs on rakendatud toetust SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 ja GFX 9.4.3. PSP (Platform Security Processor) lähtelaadimisprotsessi kood on ümber kirjutatud. Laienenud on toe tase adaptivsele sünkroonimisele FreeSync (toetatud on Freesync Paneeli Replay V2).
- i915 draiveris jätkub Intel Meteor Lake kiipide toe rakendamine. Parendatud on HDCP (High-bandwidth Digital Content Protection) kopeerimiskaitse tehnoloogia tuge. Kood, mis suudab suhelda ekraaniga, on ümber kirjutatud.
- Kconfigist on eemaldatud mikrokoodi laadimise keelamise valikud koostamisetapis — MICROCODE_INTEL ja MICROCODE_AMD. Südamik koostatakse nüüd alati mikrokoodi laadimise koodiga x86 süsteemide jaoks, kuid tegelikku mikrokoodi laadimist saab keelata, määrates südamiku parameetriks ‘dis_ucode_ldr’.
- Helisüsteemi on lisatud toimetamiseks ja heli seadmete haldamiseks võimalus, mis on ühendatud IIO (Industrial I/O) süsteemi kaudu.
- Lisatud on Intel LunarLake, Intel ArrowLake ja AMD ACP5x heliliideste tugi, samuti Cirrus Logic CS42L43, Realtek RT1017 ja TI TAS2781 koodekid, ja Cirrus Logic CS35L56 ja winic aw88261 võimendid. Lisatud on ASoC AMD Van Gogh tugi.
- Lisatud on USB MIDI 2.0 Gadget draiver, mis simuleerib USB MIDI 2.0 liidese, mis on seotud ALSA UMP rawmidi seadmega.
- Lisatud on Broadcom ASP 2.0 ja Marvell 88Q2XXX Etherneti juhtkontrollerite tugi.
- Lisatud on Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 ja EDT ET028013DMA paneelide tugi, samuti Loongsoni ekraanide juhtkoodide ja Azoteq IQS7222D/IQS7210A/7211A puuteekraanide juhtkoodide tugi.
- Lisatud on ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018 ja AN400 (Amlogic T7) tugi.
- Lisatud on ARM-platvormide tugi Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3 ja Radxa ROCK 4SE jaoks.
Samas LATINOAMERIKA VABA TARKVARA FOND koostas täiesti tasuta versiooni tuumast 6.6 — Linux-libre 6.6-gnu, mis on puhastatud tarkvarakomponentidest ja draiveritest, mis sisaldavad mittevabalt saadaval olevaid komponente või koodi lõike, mille kasutusala on tootja poolt piiratud. Versioonis 6.6 on värskendatud puhastuskoodi erinevates draiverites ja alamüsteemides, näiteks TI gigabit RU etherneti, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-helis ja aw88261 SoC draiverites. DTS-failide blobide nimed on puhastatud Aarch64 arhitektuuri jaoks. Uutes draiverites ivpu, bluetooth-draiverites, puutetundlike ekraanide draiveris ja Qualcomm Venuse V4L2 kodeerija/dekooderi koodis on blobe eemaldatud.
Allikas: opennet.ru
