Linuxi 6.6 tuuma väljalase

Kaks kuud kestnud arendustööd pärast esitles Linus Torvalds Linux 6.6 tuuma väljaannet. Kõige märgatavamate muudatuste seas: uus EEVDF ülesande ajastaja; varjatud hiljem refundimise mehhanism kaitseks eksploitide eest; fs-verity toe lisamine OverlayFS-ile; kvotide ja xattr rakendamine tmpfs-is; online fsck ettevalmistamine XFS-is; tugevdatud GPL-only sümbolite ekspordi jälgimist; võrgu soklite toe lisamine io_uring-ile; mälurandomiseerimine kmalloc-is; ReiserFS deklareerimine vananenuks; Nouveau-sse on lisatud primitiivid Vulkan-draiverile NVK.

Uude versioon on lisatud 15,291 parandust 2,058 arendajalt, patchi suurus on 39 MB (muudatused puudutasid 14,844 faili, lisatud on 553,359 koodirida, eemaldatud 284,012 rida). Eelmisel väljaandel oli 14,674 parandust 2,016 arendajalt, patchi suurus oli 78 MB. Umbes 44% kõikidest 6.6-s esitatud muudatustest on seotud seadmedraiveritega, umbes 17% muudatustest on seotud arhitektuurispetsiifilise koodi uuendamisega, 11% on seotud võrgu stackiga, 4% failisüsteemidega ja 3% tuuma sisemiste süsteemidega.

Peamised uuendused tuumas 6.6:

  • Mälu ja süsteemiteenused
    • Uus EEVDF (Earliest Eligible Virtual Deadline First) ülesande ajastaja on rakendatud, mis asendab alates tuuma 2.6.23 tarnitud CFS (Completely Fair Scheduler) ajastajat. Uus ajastaja arvestab järgmise protsessi valimisel väljaandmisolekuga protsesside puhul, kes ei ole saanud piisavalt protsessori ressursse või on ebamugavalt palju protsessori aega saanud. Esimesel juhul sunnitakse juhtimine üle andma, samas kui teisel juhul lükatakse see edasi. Vana CFS ajastaja kasutas protsesside tuvastamiseks, mis vajavad erilist tähelepanu, heuristikat ja peeneid seadistusi, samas kui uus ajastaja jälgib neid selgemalt ja ei vaja peeneid seadistusi. EEVDF-lt oodatakse, et see vähendab viivitusi ülesannete täitmisel, millega CFS-il on olnud ajastamise probleeme.
    • Muudatused on sisse viidud kategooria „GPL-only“ sisemiste sümbolite töötlemisse, mille eesmärk on keerukamaks muuta patenteeritud GPL-kihtidega moodulite kasutamine, et ringi minna tuumasaidi juurdepääsupiirangutele, mis lubavad juurdepääsu ainult GPL-litsentsiga koodile. Funktsioonis symbol_get() on patenteeritud moodulite jaoks keelatud otsida sümboleid, mis on tähistatud kui GPL-only, ja vastupidi, GPL-moodulid ei saa leida sümboleid, mida eksportivad patenteeritud moodulid.
    • Töökogude (unbound workqueue) täiendavad seaded on lisatud, et suurendada protsessori vahemälu taaskasutamise efektiivsust suurtes süsteemides, kus on mitu kolmanda taseme (L3) vahemälu. Samuti on tuuma lisatud tööriist tools/workqueue/wq_dump.py, et kontrollida praegust töökogude konfiguratsiooni.
    • Alamsüsteemi io_uring on lisatud algtoetust operatsioonidele ja käskudele, mis on spetsiifilised võrgusokkidele. Lisatud on sysctl io_uring_disabled, et keelata io_uring kogu süsteemi tasemel. Samuti on io_uringis märkimisväärselt kiirendatud otse sisend/väljund (Direct I/O) asünkroonses režiimis. Pärast muudatuste tegemist saavutatakse 37% võrreldes jõudlus ja latentsuse vähenemine sisend/väljundoperatsioonide teostamisel.
    • Arhitektuurile PA-RISC on rakendatud BPF-i JIT-kompilaator.
    • Seadistusse /sys/devices/system/cpu/smt/control on lisatud toetus numbrilistele parameetritele, mis määravad CPU iga südamiku jaoks saadaval olevate lõime arvu (varem toetasid ainult väärtused „on“ ja „off“ süsimultaanse lõimumise toe lubamiseks ja keelamiseks). Uut funktsiooni saab rakendada mõnel PowerPC protsessoril, mis toetavad süsimultaanse lõimumise kuuma ühendamise režiimi (hotplug SMT), et valikuliselt lubada SMT konkreetsel südamikul töö ajal.
    • Jätkuvad muudatused Rust-for-Linux haru edastamiseks, mis on seotud Rusti keele kasutamisega teise keelesena draiverite ja tuumikumoodulite arendamisel (Rusti tugi ei ole vaikimisi aktiveeritud ja ei too kaasa Rusti arvu kohustuslike koostesõltuvuste hulka tuumas). Üleminek Rusti versioonide 1.71.1 ja bindgen 0.65.1 kasutusele on teostatud. Rakendatud on 'Zeroable' tüüp. Lisatud protseduurilised makrod 'paste!' ja '#[derive(Zeroable)]'. Tagatud on ühilduvus '#[pin_data]'. Lisatud funktsioonid initsialiseerimiseks '{,pin_}init_array_from_fn()' ja meetod '{,pin_}chain'. Laiendatud on 'types' mooduli võimalusi. Kunit testimisraamistikule on lisatud võimalus käivitada teste Rusti dokumentatsioonist.
    • Lisatud on alamsüsteem 'eventfs', mis vähendab oluliselt mälutarbimist jälgimissegmendis, eemaldades liigsete struktuuride säilitamise, mis on vajalik jälgimispunktide esitamiseks failisüsteemis. Varem loodi sarnased struktuurid kõigi jälgimispunktide jaoks, sõltumata jälgimise kasutamisest. Eventfs abil saavad sellised struktuurid olla dünaamiliselt loodud ainult vajadusel.
    • Perf utiliidi võimalusi on laiendatud.
    • Faili /proc/pid/smaps on lisatud teavet identsete mälulehekülgede (KSM, Kernel Samepage Merging) ühinemismehhanismi tõhususe diagnoosimise kohta.
    • Eemaldatud on Frontswap API, mis võimaldas paigutada vahetusruumi osa mällu, mida ei saa otse adresseerida ja mis ei edasta operatiivseid teateid vaba ruumi olemasolu kohta. Seda API-d kasutati ainult zswapi puhul, seega otsustati otse kasutada selle funktsionaalsust zswapis, vabanedes tarbetutest kihtidest.
    • RISC-V arhitektuuri jaoks on lisatud tugi jõudlusarvutite lugemisele kasutaja ruumist ning võimalus paigutada tuumi dump pärast süsteemi krahhi vahemikku üle 4GB.
    • Lisatud on algtugi ARM SME (scalable matrix extension) käsutustele.
    • Rakendatud on võimalus kasutada KDB, KGDB, kcov, KFENCE ja KASAN silumisseadmeid LoongArch arhitektuuri süsteemides.
    • Lisatud on tugi tuumafailide testimiseks GitLabi pideva integreerimise süsteemis, mida kasutatakse graafikadraiverite arendamisel.
  • Diskisüsteem, sisend/väljund ja failisüsteemid
    • OverlayFSi failisüsteemi on lisatud tugi fs-verity hashide salvestamiseks laiendatud atribuudis (xattr) overlay.verity, mida saab kasutada failide terviklikkuse ja autentsuse kontrollimiseks OverlayFSi alumistes kihtides krüptograafiliste hashide ja võtmete abil. Seega on OverlayFSis nüüd kõik muudatused, mis on vajalikud Composefsi projekti jaoks, et töötada OverlayFSi ja EROFSi failisüsteemide pealsetena.
    • XFSi failisüsteemi on ettevalmistatud fsck tööriista rakendamise võimalus, et kontrollida ja parandada tuvastatud probleeme online-režiimis ilma failisüsteemi demonteerimata. Lisaks on XFSis rakendatud suurte fooliote (folios) kasutamise võimalus lehevahetuskeskkonnas ning lisatud mõned sellega seotud optimeerimised, mis on oluliselt tõstnud jõudlust teatud koormuste puhul.
    • tmpfsi failisüsteemi on lisatud tugi kasutaja laiendatud atribuutide (user xattrs) kasutamiseks, otseandmete sisestuseks ja kasutaja ja grupiga seotud kvotade jaoks. Kataloogide nihked on stabiliseeritud, mis lahendas tmpfsi probleemide eksportimise NFSi kaudu.
    • Montimise haldus-API-sse on lisatud FSCONFIG_CMD_CREATE_EXCL lipp, et suurendada turvalisust, mis keelab superblokki jagada mitmes montaažipunktis (keelab ühe partitsiooni ühendamise mitme montaažipunktiga). Mount tööriistas on selle lipu lubamiseks pakutud valik "--exclusive".
    • VFSi alam süsteemi on lisatud võimalus muuta juurdepääsu ja muutmise aegu (atime, mtime) jooksvalt. Varasemalt peegeldusid ajad viivitusega, mis takistas andmete värskuse jälgimist sarnastes süsteemides nagu NFS (viivituse tõttu muutuste määramisel failis võis süsteem valeandmeid pidada käepäraseks). Uus funktsioon on saadaval Btrfsi, Ext4, tmpfsi ja XFSi jaoks.
    • Btrfis on vahepealssüsteemitehnoloogia kontrollimise mehhanism, mis lülitatakse sisse kogumise etapis BTRFS_FS_CHECK_INTEGRITY parameetri kaudu, kuulutatud aegunuks. Antud mehhanism ei ole enam hooldatav, ei ole enam testitud ning tekitab lisakoormust CPU-le ja mälule. Lisaks on Btrfis optimeeritud uue failisüsteemi kontrollimise (scrub) koodi jõudlust.
    • Ext4 failussüsteemis on lisatud perioodilised superbloki uuendamise kontrollid ning mälu eraldamise operatsioonid kiiruselt paranenud, kui andmed kirjutatakse faili lõppu.
    • FUSE alamsüsteemi on lisatud btime („sünniaeg“) atribuudi tugi, mis määrab inode'i loomise aja.
    • Sümboolsete linkide õiguste muutmine on keelatud.
    • On lisatud süsteemikutsung fchmodat2(), mis erineb fchmodat() süsteemikutsest täiendava argumendiga lipu määramiseks. Praegu toetatakse ainult AT_SYMLINK_NOFOLLOW ja AT_EMPTY_PATH lippude, mis võimaldavad libc-funktsioonis fchmodat() sümboolsete linkide dereferentseerimise piirangut ja failide descriptoride kasutamist tühja tee näitamisel.
    • EROFS (Extendable Read-Only File System) failussüsteemis, mis on mõeldud lugemiseks ainult avatud osade jaoks, on lisatud Deflate kompressiooni algoritmi tugi. Laiendatud atribuutide kiireks otsimiseks on kasutusele võetud tõenäosuslik struktuur bloom filter.
    • CONFIG_BUFFER_HEAD seadistus on lisatud, mis võimaldab pakkuda kernelit ilma buffer_head struktuuri kasutamiseta. Kui kompileerida ilma buffer_head, võib kasutada blokiseadmeid ja mõned failussüsteemid, nagu xfs, btrfs, cramfs, erofs ja squashfs.
    • Blokiseadmete draiverisse ublk, mis võimaldab viia spetsiifilised loogikad kasutajaruumi protsessi, on lisatud tsoonitud salvestusseadmete tugi (blokkide või sektorite rühmade jaotamine tsoonideks, kuhu on lubatud ainult järjestikune andmete lisamine koos kogu blokkide grupi uuendamisega).
    • ReiserFS failussüsteemi implementatsioon on muudetud toetatavate kategooriast vananenud (Obsolete) kategooriasse. ReiserFS toe lõpetamine on planeeritud 2025. aastaks. ReiserFS vananenud kategooriasse üleviimise põhjuseks on nimetatud selle failussüsteemi hoolduse stagnatsiooni, 2038. aasta probleemi lahendamata jätmine, tõrgeteta tagamise võimaluste nappus ja soov vähendada üldiste failussüsteemide muudatuste hoolduskulusid, mis on seotud uue API toetamisega mountimiseks, iomap'iks ja foliantideks (folios).
    • NFS-serveris on rakendatud salvestusoperatsioonide delegeerimise mehhanism NFSv4 jaoks, mis parandab failide salvestamise vahemällu salvestamise efektiivsust ja vähendab liiklust. On lisatud toetamine operatsioonile READ_PLUS, mis on määratluse saanud NFS 4.2-s.
    • Ceph faili süsteemis on lisatud tugi fscryptile.
  • Virtualiseerimine ja turvalisus
    • Lisatud Shadow Stack’i mehhanismi rakendamine, mis võimaldab blokeerida paljude eksploitide töö, kasutades Intel'i protsessorite riistvaralist võimekust funktsiooni tagasituleku aadressi ülekirjutamise kaitseks, kui mälupuhvri ülevool toimub. Kaitse olemus on selles, et pärast funktsioonile kontrolli andmist salvestab protsessor tagasituleku aadressi mitte ainult tavapärases mälupuhvrisse, vaid ka eraldi "varjatud" mälupuhvrisse, mida ei saa otse muuta. Funktsioonist väljudes ekstraktsioon toimub varjatud mälupuhvrisse ja võrreldakse tavalise mälupuhvri tagasituleku aadressiga. Aadresside mittevastavus põhjustab erandi genereerimise, mis blokeerib olukorrad, kus eksploit on suutnud aadressi tavalises mälupuhvrisse ülekirjutada. Riistvaraline varjatud mälupuhver toetab ainult 64-bitiseid versioone, samas kui 32-bitistes versioonides rakendatakse selle tarkvaralist emuleerimist.
    • Lisatud toetus Clangi kompilatsiooni režiimile, mis võimaldab CFI (Control Flow Integrity) kaitset, mis blokeerib normaalse kontrollvoo rikkumised, mis tulenevad eksploitide kasutamisest, mis muudavad mälus hoitavaid funktsioonide pointere.
    • RISC-V arhitektuuri jaoks on lubatud mälus tuuma asukoha randomiseerimine laadimise ajal.
    • Süsteemi kutsumisse seccomp() on lisatud lipp SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP, mis võimaldab jälgitavate protsesside sündmuste käsitlemist sünkroonses režiimis, et saavutada tõhusam töö ülesannete ajastajas.
    • Funktsioonis kmalloc() on tagatud slab-kääride randomiseerimine, mis raskendab tuuma haavatavuste ärakasutamist.
    • SELinux’i sundjuurdepääsusüsteemi aktiveerimisega seotud valikutest on eemaldatud USA Rahvusliku Julgeoleku Agentuuri mainimine. Kuna projekt on juba 20 aastat arenenud kogukonna toel ja seda toetavad sõltumatud hooldajad, otsustati dokumentatsioonis ja Kconfigis (nt. seadistusparameetri SECURITY_SELINUX seletuses on muudatused «NSA SELinux Support» asemel «SELinux Support».) kasutada nime "SELinux".
    • Süsteemi kutsumisse userfaultfd() on lisatud operatsioon UFFDIO_POISON, mis võimaldab märgistada mälu lehed "mürgisteks" (poisoned), mida saab kasutada kahjustatud mälulehtede edastamiseks migreerimise ajal virtuaalmasinate ühelt süsteemilt teisele.
    • VFIO-süsteemi on lisatud uus sümboolne liides (/dev/vfio/devices/vfioX), et hallata VFIO seadmeid, võimaldades kasutajal otse seadme fail avada ilma vananenud rühma liidese (/dev/vfio/$groupID) kasutamiseta.
    • Uues serveris NFS on lõpetanud vananenud Kerberose krüptimistüüpide toetamise, mis kasutavad DES ja 3DES algoritme.
    • Hyper-V hüpervisiitori keskkonnas käivitamisel on lisatud toetust külalissüsteemide jaoks, mida kaitseb AMD SEV-SNP (Secure Nested Paging) ja Intel TDX (Trusted Domain Extensions) tehnoloogia.
    • Ytarsi kompilaatori jaoks on vaikimisi lubatud „W=1” režiimis hoiatuste „-Wformat-overflow”, „-Wformat-truncation”, „-Wstringop-overflow” ja „-Wrestrict” kasutamine. Iga koostise puhul on lubatud hoiatus „-Wenum-conversion”.
  • Võrgusüsteem
    • AF_XDP (eXpress Data Path) aadressipere teostust on laiendatud pakettide töötlemise võimalusega, mis on salvestatud mitmesse puhverisse (näiteks võib ühes puhveres olla paketi päis ja teises andmed, või suurte jumbo-rahade Etherneti rakendamiseks on mitu puhvrit). AF_XDP soketite kasutavad programmid saavad nüüd vastu võtta ja edastada pakette kohe mitmest puhvrist.
    • BPF-süsteemi on lisatud IPv4 ja IPv6 pakettide defragmentimise tugi ning võimalus filtrida fragmenteeritud pakette.
    • BPF-s on lisatud uus töötleja update_socket_protocol, mis võimaldab BPF programmidel muutuda soovitud protokolle uutes soketites. Näiteks võib BPF programm sujuvalt asendada TCP protokolli MPTCP (multipath TCP) -ga, et optimeerida rakenduse liiklust. BPF-sse on lisatud ka pakettide marsruutimise juhtimise tugi erinevate voogude kaudu MPTCP-s.
    • ksmbd moodulilt on eemaldatud eksperimentaalse arenduse märgis, pakkudes töötavat kernelitasandi failiserverit, mis põhineb SMB3 protokollil. Lisatud on toetust lugemisoperatsioonide ühinemisele (read compound) päringute jaoks.
  • Varustus
    • DRM-süsteemi (Direct Rendering Manager) on tehtud muudatusi, mis on vajalikud NVK avatud draiveri tõhusaks tööks NVIDIA graafikakaartide Vulkan API rakendusega. Esialgne DRM draiver Nouveau oli mõeldud OpenGL rakendamiseks, mistõttu puuduvad sellest primitiivid, mis on vajalikud Vulkan draiverite tõhusaks toimimiseks, näiteks sünkroonitud objektide tugi ja virtuaalse aadressiruumi juhtimine.
    • AMDGPU draiveris toetab 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) püsivara laadimise kood on ümber kirjutatud. FreeSync tehnoloogia toetamist on laiendatud (lisatud toetus Freesync Panel Replay V2).
    • i915 draiveris jätkub Intel Meteor Lake kiipide toe rakendamine. HDCP (High-bandwidth Digital Content Protection) kopeerimise kaitse toimet on parendatud. Ekraaniga suhtlemise kood on ümber kirjutatud.
    • Kconfigist on eemaldatud võimalused mikrokoodi laadimise väljalülitamiseks ehitusetapis — MICROCODE_INTEL ja MICROCODE_AMD. Südamik koostatakse nüüd alati mikrokoodi laadimise koodiga x86 süsteemide jaoks, kuid mikrokoodi tõeliseks laadimiseks võib kasutada südamiku parameetrit 'dis_ucode_ldr'.
    • Helialale on lisatud võimalus hallata heliseadmeid, mis on ühendatud IIO (Industrial I/O) alamhääli kaudu.
    • Toetatud on Intel LunarLake, Intel ArrowLake ja AMD ACP5x heliliidesed, Cirrus Logic CS42L43, Realtek RT1017 ja TI TAS2781 koodekid, samuti Cirrus Logic CS35L56 ja winic aw88261 võimendid. AMD Van Gogh ASoC toetus on lisatud.
    • Lisa USB MIDI 2.0 Gadget draiver, mis emuleerib USB MIDI 2.0 liidest, seotud ALSA UMP rawmidi seadmega.
    • Toetatud on Broadcom ASP 2.0 ja Marvell 88Q2XXX Ethernet-kontrollerid.
    • Toetatud on Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 ja EDT ET028013DMA paneelid, Loongsoni ekraanide kontrollerid ja Azoteqi IQS7222D/IQS7210A/7211A puutetundlike ekraanide kontrollerid.
    • Toetatud on ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7).
    • Toetatud on ARM platvormid Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3, Radxa ROCK 4SE.

Samuti on Ladina-Ameerika Vaba Tarkvara Fond koostanud täiesti vaba tuuma versiooni 6.6 — Linux-libre 6.6-gnu, mis on puhastatud püsivara ja draiverite elementidest, mis sisaldavad mittevabu komponente või koodilõike, mille rakendamine on tootja poolt piiratud. Versioonis 6.6 on uuendatud blobide puhastamise koodi erinevates draiverites ja alamhääli, näiteks TI gigabit RU ethernet, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-audio ja aw88261 SoC. Blobide nimede puhastamine on teostatud dts-failides Aarch64 arhitektuuri jaoks. Uusimates draiverites ivpu, bluetooth-draiverites, puutetundlike ekraanide draiveris ja Qualcomm Venus V4L2 kodeerijas/dekooderiy a on blobid eemaldatud.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster