Lëshimi i kernelit Linux 6.7

Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lëshimin e kernelit Linux 6.7. Ndër ndryshimet më të dukshme: integrimi i sistemit të skedarëve Bcachefs, ndërprerja e mbështetjes për arkitekturën Itanium, aftësia e Nouvea për të punuar me firmware GSP-R, mbështetje për enkriptimin TLS në NVMe-TCP, aftësia për të përdorur përjashtime në BPF, mbështetje për futex në io_uring, optimizim i performancës së programuesit fq (Fair Queuing), mbështetje për zgjerimin TCP-AO (opsioni i vërtetimit TCP) dhe aftësia për të kufizuar lidhjet e rrjetit në mekanizmin e sigurisë Landlock, shtimi i kontrollit të aksesit në hapësirën e emrave të përdoruesit dhe io_uring nëpërmjet AppArmor.

Versioni i ri përfshin 18405 rregullime nga 2066 zhvillues, madhësia e patch-it është 72 MB (ndryshimet prekën 13467 skedarë, u shtuan 906147 rreshta kodi, u fshinë 341048 rreshta). Lëshimi i fundit kishte 15291 rregullime nga 2058 zhvillues, madhësia e patch-it ishte 39 MB. Rreth 45% e të gjitha ndryshimeve të paraqitura në 6.7 lidhen me drejtuesit e pajisjes, afërsisht 14% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturat e harduerit, 13% janë të lidhura me grupin e rrjetit, 5% kanë të bëjnë me sistemet e skedarëve dhe 3% janë të lidhura me nënsistemet e brendshme të kernelit.

Risitë kryesore në kernel 6.7:

  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • Kerneli miraton kodin e sistemit të skedarëve Bcachefs, i cili përpiqet të arrijë performancën, besueshmërinë dhe shkallëzueshmërinë e XFS, të kombinuara me elementë të funksionalitetit të avancuar që gjenden në Btrfs dhe ZFS. Për shembull, Bcachefs mbështet veçori të tilla si përfshirja e pajisjeve të shumta në një ndarje, paraqitjet e disqeve me shumë shtresa (shtresa e poshtme me të dhëna të përdorura shpesh bazuar në disqet e shpejtë SSD dhe shtresa e sipërme me të dhëna më pak të përdorura nga disqet e ngurtë), përsëritja (RAID 1/10), memoria e fshehtë, ngjeshja transparente e të dhënave (modalitetet LZ4, gzip dhe ZSTD), pjesët e gjendjes (fotografitë), verifikimi i integritetit duke përdorur shumat e kontrollit, aftësia për të ruajtur kodet e korrigjimit të gabimit Reed-Solomon (RAID 5/6), ruajtja e informacionit në formë e koduar (përdoren ChaCha20 dhe Poly1305). Për sa i përket performancës, Bcachefs është përpara Btrfs dhe sistemeve të tjera të skedarëve të bazuar në mekanizmin Copy-on-Write dhe demonstron shpejtësinë e funksionimit afër Ext4 dhe XFS.
    • Sistemi i skedarëve Btrfs prezanton një modalitet të thjeshtuar kuotë që ju lejon të arrini performancë më të lartë duke gjurmuar shtrirjet vetëm në nënndarjen në të cilën ato janë krijuar, gjë që thjeshton ndjeshëm llogaritjet dhe përmirëson performancën, por nuk ju lejon të merrni parasysh shtrirjet e ndara në disa nënndarje.
    • Btrfs ka shtuar një strukturë të re të dhënash "pemë shiritash", e përshtatshme për hartimin e shtrirjes logjike në situata ku hartat fizike nuk përputhen me pajisjet. Struktura aktualisht përdoret në implementimet e RAID0 dhe RAID1 për pajisjet e bllokut të zonuar. Në të ardhmen, ata planifikojnë të përdorin këtë strukturë në RAID të nivelit më të lartë, të cilat do të zgjidhin një sërë problemesh ekzistuese në zbatimin aktual.
    • Sistemi i skedarëve Ceph zbaton mbështetje për hartimin e ID-ve të përdoruesve të sistemeve të skedarëve të montuar, të përdorura për të përputhur skedarët e një përdoruesi specifik në një ndarje të huaj të montuar me një përdorues tjetër në sistemin aktual.
    • U shtua aftësia për të specifikuar uid dhe gid në montim në efivarfs për të lejuar proceset jo-root të ndryshojnë variablat UEFI.
    • U shtuan thirrjet ioctl në exFAT për leximin dhe ndryshimin e atributeve FS. Trajtimi i shtuar i drejtorive me madhësi zero.
    • F2FS zbaton aftësinë për të përdorur blloqe 16K.
    • Mekanizmi i montimit automatik autofs është ndërruar për të përdorur API-në e re të montimit të ndarjes.
    • OverlayFS ofron opsione montimi "lowerdir+" dhe "datadir+". Mbështetje e shtuar për montimin e mbivendosur të OverlayFS me xattrs.
    • XFS ka optimizuar ngarkesën e CPU-së në kodin e shpërndarjes së bllokut në kohë reale. Ofrohet aftësia për të kryer njëkohësisht operacione leximi dhe FICLONE.
    • Kodi EXT2 është konvertuar për të përdorur fletët e faqeve.
  • Shërbimet e kujtesës dhe sistemit
    • Mbështetja për arkitekturën ia64 të përdorur në procesorët Intel Itanium, të cilët u ndërprenë plotësisht në vitin 2021, është ndërprerë. Procesorët Itanium u prezantuan nga Intel në 2001, por arkitektura ia64 nuk arriti të konkurronte me AMD64, kryesisht për shkak të performancës më të lartë të AMD64 dhe kalimit më të butë nga procesorët 32-bit x86. Si rezultat, interesat e Intel u zhvendosën në favor të procesorëve x86-64 dhe pjesa e Itanium mbeti serverët HP Integrity, porositë për të cilët u ndaluan tre vjet më parë. Kodi për mbështetjen ia64 u hoq nga kerneli kryesisht për shkak të mungesës afatgjatë të mbështetjes për këtë platformë, ndërsa Linus Torvalds shprehu gatishmërinë e tij për të kthyer mbështetjen e ia64 në kernel, por vetëm nëse ka një mbajtës që mund të demonstrojë cilësi të lartë mbështetje për këtë platformë jashtë kernelit kryesor për të paktën një vit.
    • U shtua parametri i komandës së linjës së kernelit "ia32_emulation", i cili ju lejon të aktivizoni ose çaktivizoni mbështetjen për emulimin e modalitetit 32-bit në kernelet e ndërtuara për arkitekturën x86-64 në fazën e nisjes. Nga ana praktike, opsioni i ri ju lejon të ndërtoni kernelin me mbështetje për pajtueshmërinë me aplikacionet 32-bit, por çaktivizoni këtë mënyrë si parazgjedhje për të zvogëluar vektorin e sulmit në kernel, pasi API i përputhshmërisë është më pak i testuar se kerneli kryesor. ndërfaqet.
    • Migrimi i vazhdueshëm i ndryshimeve nga dega Rust-for-Linux në lidhje me përdorimin e gjuhës Rust si gjuhë e dytë për zhvillimin e drejtuesve dhe moduleve të kernelit (Mbështetja e Rust nuk është aktive si parazgjedhje dhe nuk çon në përfshirjen e Rust midis varësitë e kërkuara të montimit për kernelin). Versioni i ri bën kalimin në përdorimin e versionit Rust 1.73 dhe ofron një sërë lidhjesh për të punuar me radhët e punës.
    • Është e mundur të përdoret mekanizmi binfmt_misc për të shtuar mbështetje për formatet e reja të skedarëve të ekzekutueshëm (për shembull, për të ekzekutuar aplikacione të përpiluara Java ose Python) brenda hapësirave të veçanta të emrave të paprivilegjuar.
    • Cpuset-i i kontrolluesit cgroup, i cili ju lejon të kontrolloni përdorimin e bërthamave të CPU-së gjatë ekzekutimit të një detyre, ofron një ndarje në ndarje lokale dhe në distancë, të cilat ndryshojnë nëse cgroup prind është seksioni i saktë rrënjësor apo jo. Cilësimet e reja "cpuset.cpus.exclusive" dhe "cpuset.cpus.excluisve.effective" janë shtuar gjithashtu në cpuset për lidhje ekskluzive të CPU-së.
    • Nënsistemi BPF zbaton mbështetje për përjashtime, të cilat përpunohen si një dalje urgjente nga një program BPF me aftësinë për të zbërthyer në mënyrë të sigurt kornizat e grumbullimit. Përveç kësaj, programet BPF lejojnë përdorimin e treguesve kptr në lidhje me CPU-në.
    • Mbështetja për operacionet me Futex është shtuar në nënsistemin IO_uring, dhe janë zbatuar operacione të reja: ioring_op_waiTID (versioni asinkron i pritjes), socket_uring_op_getsockopt (opsioni getsockoptand (opsioni i shumëfishtë ka të dhëna ose nuk është bufer i plotë).
    • U shtua zbatimi i radhëve të lehta FIFO me një lidhje të vetme, të cilat kërkojnë një kyçje rrotullimi vetëm për mbyllje në një kontekst procesi dhe nuk ka një spinlock për shtesat atomike në radhë në çdo kontekst.
    • U shtua një tampon unazor "objpool" me një zbatim të shkallëzuar të një radhe me performancë të lartë për shpërndarjen dhe kthimin e objekteve.
    • Pjesa fillestare e ndryshimeve është shtuar për të zbatuar API-në e re futex2, e cila ka performancë më të mirë në sistemet NUMA, mbështet madhësi të ndryshme nga 32 bit dhe mund të përdoret në vend të thirrjes së sistemit të shumëfishtë futex().
    • Për arkitekturat ARM32 dhe S390x, është shtuar mbështetja për grupin aktual (cpuv4) të udhëzimeve BPF.
    • Për arkitekturën RISC-V, është e mundur të përdoret modaliteti i kontrollit Shadow-Call Stack i disponueshëm në Clang 17, i krijuar për të mbrojtur kundër mbishkrimit të adresës së kthimit nga një funksion në rast të një tejmbushjeje buferi në pirg. Thelbi i mbrojtjes është ruajtja e adresës së kthimit në një pirg të veçantë "hije" pas transferimit të kontrollit në një funksion dhe marrjes së kësaj adrese përpara se të dilni nga funksioni.
    • Një modalitet i ri i skanimit të faqeve të kujtesës inteligjente i është shtuar mekanizmit për bashkimin e faqeve identike të memories (KSM: Kernel Samepage Merging), i cili gjurmon faqet e skanuara pa sukses dhe redukton intensitetin e ri-skanimit të tyre. Për të aktivizuar modalitetin e ri, është shtuar cilësimi /sys/kernel/mm/ksm/smart_scan.
    • U shtua një komandë e re ioctl PAGEMAP_SCAN, e cila, kur përdoret me userfaultfd(), ju lejon të përcaktoni faktet e shkrimit në një gamë specifike memorie. Funksioni i ri, për shembull, mund të përdoret në sistem për të ruajtur dhe rivendosur gjendjen e proceseve të CRIU ose në sistemet kundër mashtrimit të lojës.
    • Në sistemin e montimit, nëse përpiluesi Clang është i disponueshëm, montimi i shembujve të përdorimit të nënsistemit perf, i shkruar si programe BPF, aktivizohet si parazgjedhje.
    • Shtresa e vjetër videobuf, e cila u përdor për të menaxhuar framebuffer-ët në nënsistemin media dhe u zëvendësua nga një implementim i ri i videobuf10 më shumë se 2 vjet më parë, është hequr.
  • Virtualizimi dhe Siguria
    • Aftësia për të enkriptuar të dhënat në blloqe më të vogla se madhësia e bllokut në sistemin e skedarëve është shtuar në nënsistemin fscrypt. Kjo mund të kërkohet për të aktivizuar mekanizmat e enkriptimit të harduerit që mbështesin vetëm blloqe të vogla (për shembull, kontrollorët UFS që mbështesin vetëm një madhësi blloku 4096 mund të përdoren me një sistem skedarësh me një madhësi blloku 16K).
    • Nënsistemi "iommufd", i cili ju lejon të menaxhoni tabelat e faqeve të memories IOMMU (I/O Memory-Management Unit) përmes përshkruesve të skedarëve nga hapësira e përdoruesit, ka shtuar gjurmimin e të dhënave që ende nuk janë pastruar nga cache (i ndotur) për DMA operacionet, të cilat janë të nevojshme për përcaktimin e memories me të dhëna të pashfrytëzuara gjatë migrimit të procesit.
    • Mbështetja për përcaktimin e rregullave të kontrollit të aksesit për prizat TCP është shtuar në mekanizmin Landlock, i cili ju lejon të kufizoni ndërveprimin e një grupi procesesh me mjedisin e jashtëm. Për shembull, mund të krijoni një rregull që lejon vetëm hyrjen në portin e rrjetit 443 për të krijuar lidhje HTTPS.
    • Nënsistemi AppArmor ka shtuar aftësinë për të kontrolluar aksesin në mekanizmin io_uring dhe për të krijuar hapësira emrash të përdoruesve, gjë që ju lejon të lejoni në mënyrë selektive aksesin në këto aftësi vetëm në disa procese.
    • U shtua API e vërtetimit të makinës virtuale për të verifikuar integritetin e procesit të nisjes së makinës virtuale.
    • Sistemet LoongArch mbështesin virtualizimin duke përdorur hipervizorin KVM.
    • Kur përdorni hipervizorin KVM në sistemet RISC-V, është shfaqur mbështetja për shtrirjen Smstateen, e cila bllokon makinën virtuale nga aksesi në regjistrat e CPU-së që nuk mbështeten në mënyrë eksplicite nga hipervizori. Gjithashtu u shtua mbështetje për përdorimin e zgjerimit Zicond në sistemet e ftuar, i cili lejon përdorimin e disa operacioneve me numra të plotë të kushtëzuar.
    • Në sistemet e vizitorëve të bazuara në x86 që funksionojnë nën KVM, lejohen deri në 4096 CPU virtuale.
  • Nënsistemi i rrjetit
    • Drejtuesi NVMe-TCP (NVMe mbi TCP), i cili ju lejon të përdorni disqet NVMe përmes rrjetit (NVM Express mbi Fabrics) duke përdorur protokollin TCP, ka shtuar mbështetje për enkriptimin e kanalit të transmetimit të të dhënave duke përdorur TLS (duke përdorur KTLS dhe një proces sfondi në hapësirën e përdoruesit tlshd për negocimin e lidhjes).
    • Performanca e programuesit të paketave fq (Fair Queuing) u optimizua, gjë që bëri të mundur rritjen e xhiros me 5% nën ngarkesa të rënda në testin tcp_rr (TCP Request/Response) dhe me 13% me një fluks të pakufizuar të paketave UDP.
    • TCP shton një aftësi opsionale të vulës kohore me precizion mikrosekondi (TCP TS) (RFC 7323), e cila lejon vlerësimin më të saktë të vonesës dhe modulet më të avancuara të kontrollit të mbingarkesës. Për ta aktivizuar atë, mund të përdorni komandën "ip route shtoni 10/8 ... karakteristika tcp_usec_ts".
    • Stacki TCP ka shtuar mbështetje për zgjerimin TCP-AO (opsioni i vërtetimit TCP, RFC 5925), i cili bën të mundur verifikimin e titujve TCP duke përdorur kodet MAC (Kodi i vërtetimit të mesazheve), duke përdorur algoritme më moderne HMAC-SHA1 dhe CMAC-AES- 128 në vend të opsionit të disponueshëm më parë TCP-MD5 bazuar në algoritmin e vjetër MD5.
    • Është shtuar një lloj i ri i pajisjeve të rrjetit virtual "netkit", logjika e transferimit të të dhënave në të cilën vendoset duke përdorur një program BPF.
    • KSMBD, një implementim në nivel kernel i një serveri SMB, ka shtuar mbështetje për zgjidhjen e emrave të skedarëve që përmbajnë çifte zëvendësuese të karaktereve të përbërë.
    • NFS ka përmirësuar zbatimin e temave me shërbimet RPC. Mbështetje e shtuar për delegimin e shkrimit (për NFSv4.1+). NFSD ka shtuar mbështetje për mbajtësin e rrjetit rpc_status. Mbështetje e përmirësuar për klientët NFSv4.x kur rieksportoni në knfsd.
  • Оборудование
    • Mbështetja fillestare për firmuerin GSP-RM është shtuar në modulin e kernelit Nouveau, i cili përdoret në GPU-në NVIDIA RTX 20+ për të zhvendosur operacionet e inicializimit dhe të kontrollit të GPU-së në anën e një mikrokontrollues të veçantë GSP (Procesori i Sistemit GPU). Mbështetja GSP-RM lejon drejtuesin Nouveau të punojë përmes thirrjeve të firmuerit, në vend që të programojë drejtpërdrejt ndërveprimet e harduerit, duke e bërë shumë më të lehtë shtimin e mbështetjes për GPU-të e reja NVIDIA duke përdorur thirrje të para-ndërtuara për inicializimin dhe menaxhimin e energjisë.
    • Shoferi AMDGPU mbështet GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 dhe DML2. Mbështetje e përmirësuar për ngarkimin pa probleme (pa dridhje kur ndërroni modalitetin e videos).
    • Shoferi i915 shton mbështetje për çipat Intel Meteor Lake dhe shton një implementim fillestar të Intel LunarLake (Xe 2).
    • Mbështetje e shtuar për kanalet e transmetimit asimetrik të shtuar në specifikimin USB4 v2 (120/40G).
    • Mbështetje e shtuar për ARM SoC: Qualcomm Snapdragon 720G (përdoret në telefonat inteligjentë Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (përdoret në ruterë dhe NAS).
    • Mbështetje e shtuar për telefonat inteligjentë Fairphone 5 dhe bordet ARM Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 GB30 Powkid.
    • Mbështetje e shtuar për pllakat RISC-V Milk-V Pioneer dhe Milk-V Duo.
    • Mbështetje e shtuar për ndërfaqet e zërit të laptopëve HUAWEI të furnizuar me CPU AMD. Mbështetje e shtuar për altoparlantë shtesë të instaluar në laptopët Dell Oasis 13/14/16. Mbështetje e shtuar për altoparlantët e integruar ASUS K6500ZC. Mbështetje e shtuar për treguesin e heshtjes në laptopët HP 255 G8 dhe G10. Mbështetje e shtuar për drejtuesit audio acp6.3. Mbështetje e shtuar për ndërfaqet profesionale të regjistrimit Focusrite Clarett+ 2Pre dhe 4Pre.

Në të njëjtën kohë, Fondacioni i Software-it të Lirë të Amerikës Latine formoi një version të kernelit plotësisht të lirë 6.7 - Linux-libre 6.7-gnu, i pastruar nga elementët e firmuerit dhe drejtuesit që përmbajnë komponentë jo të lirë ose seksione kodi, fushëveprimi i të cilit është i kufizuar. nga prodhuesi. Në versionin 6.7, kodi i pastrimit të blobit është përditësuar në drejtues dhe nënsisteme të ndryshme, për shembull, në drejtuesit amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs dhe btqca. Kodi për pastrimin e drejtuesve localtalk dhe rtl8192u është hequr për shkak të përjashtimit të tyre nga kerneli. U hoqën komponentët e panevojshëm për pastrimin e drejtuesve xhci-pci, rtl8xxxu dhe rtw8822b, të shtuar më parë gabimisht. Pastroi emrat e pikave në skedarët dts për arkitekturën Aarch64. U hoqën blobs në drejtuesit e rinj mt7925, tps6598x, aw87390 dhe aw88399.

Burimi: opennet.ru

Shto një koment