Lëshimi i bërthamës Linux 6.17

Pas dy muajsh zhvillimi, Linus Torvalds publikoi bërthamën. Linux 6.17. Ndër ndryshimet më të dukshme: përmirësimi i performancës së Btrfs, thirrjet e sistemit file_getattr() dhe file_setattr(), unifikimi i konfigurimeve me një dhe shumë procesorë në planifikuesin e detyrave, moduli DAMON_STAT me statistikat e aksesit në memorie, mbështetja për patch-et Live në sistemet ARM64, dërgimi i core dump-eve nëpërmjet socket AF_UNIX, kufizimi i SCHED_EXT nëpërmjet cgroup, konfigurimi i thjeshtuar i mbrojtjes kundër dobësive të CPU-së, ndërtimi i Clang me inicializimin e variablave në stack, mbrojtja kundër spoofing /proc, zgjerimi i nënsistemit RV (Runtime Verification), kufizimi i socket-eve AF_UNIX nëpërmjet AppArmor, algoritmi i kontrollit të mbingarkesës TCP DualPI2.

Versioni i ri përfshin 14334 rregullime nga 2118 zhvillues, me një madhësi patch-i prej 46 MB (ndryshimet prekën 12841 skedarë, duke shtuar 646654 rreshta kodi dhe duke hequr 398782 rreshta). Versioni i mëparshëm përfshinte 15924 rregullime nga 2145 zhvillues, me një madhësi patch-i prej 50 MB. Rreth 43% e të gjitha ndryshimeve në 6.17 lidhen me drajverët e pajisjeve, afërsisht 12% e ndryshimeve lidhen me përditësime të kodit specifik për arkitekturat e harduerit, 14% lidhen me grumbullin e rrjetit, 4% lidhen me sistemet e skedarëve dhe 3% lidhen me nënsistemet e bërthamës së brendshme.

Karakteristikat kryesore të reja në kernel 6.17 (1, 2, 3):

  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • Btrfs tani ofron mbështetje eksperimentale për fletë të mëdha, e cila zvogëlon shpenzimet dhe përmirëson performancën e operacioneve të caktuara. Ruajtja në memorje e kërkesave për bitmap-e të alokimit të hapësirës së lirë është zbatuar, duke rritur performancën e krijimit të skedarëve bosh me 20%. Performanca e leximit paraprak është përmirësuar në sistemet që përdorin kompresimin e të dhënave. Çelësat në strukturën XArray tani janë të paketuar më dendur, duke rritur kompaktësinë e ruajtjes së nyjeve të pemës së zgjerimit dhe duke zvogëluar numrin e nyjeve të gjetheve me 50-70%. Janë siguruar cilësime shtesë të kompresimit për zgjerimet e defragmentuara.
    • Sistemi i skedarëve ext4 tani mbështet hyrje/dalje të bufferuara me flamurin RWF_DONTCACHE, i cili bën që të dhënat të hiqen nga memoria e përkohshme e faqes menjëherë pas përfundimit të operacionit.
    • Sistemi i skedarëve EROFS tani mbështet kompresimin e meta të dhënave.
    • Serveri NFS tani mund t'u delegojë operacionet e shkrimit klientëve që hapin skedarë në modalitetin vetëm të shkrimit.
    • Flamuri FALLOC_FL_WRITE_ZEROES është shtuar në thirrjen e sistemit fallocate(). Ky flamur lejon mbushjen me zero të një diapazoni të specifikuar në një skedar duke përdorur komandën WRITE_ZERO, e cila mbështetet nga disa SSD dhe kryen mbushjen me zero pa operacione I/O. Ky opsion është aktualisht i disponueshëm vetëm në sistemet e skedarëve ext4.
    • U shtuan thirrjet e sistemit file_getattr() dhe file_setattr() për të manipuluar atributet inode të një skedari të caktuar.
    • Drajveri "pktcdvd" për të punuar me media optike në modalitetin batch, i cili u shënua si i vjetëruar në vitin 2016, është hequr.
    • Bcachefs FS në kernel Linux Bcachefs është zhvendosur në modalitetin e mirëmbajtjes së jashtme, që do të thotë se ndryshimet në Bcachefs nuk do të pranohen më në kernelin kryesor, ndërsa sistemi i skedarëve do të mbetet në bazën e kodit të kernelit. Zhvillimi i Bcachefs do të kryhet jashtë bazës së kodit të kernelit derisa Kent Overstreet të tregojë aftësinë e tij për të bashkëvepruar saktë me zhvilluesit e tjerë të kernelit dhe për t'iu përmbajtur udhëzimeve të përcaktuara të zhvillimit.
  • Shërbimet e kujtesës dhe sistemit
    • Mbështetja për konfigurimet me një procesor të vetëm është hequr nga planifikuesi i detyrave. Në sistemet me një procesor të vetëm, tani duhet të përdoren bërthamat e ndërtuara për sistemet me shumë procesorë (SMP). Kodi për sistemet me një procesor dhe shumë procesorë është unifikuar dhe ka hequr varësitë e panevojshme nga parametri i bërthamës CONFIG_SMP.
    • Moduli i bërthamës DAMON_STAT (Data Access Monitoring Results Stat). Ai lejon monitorimin e qasjes në RAM duke përdorur nënsistemin DAMON (Data Access MONitor). Moduli ofron statistika mbi pasivitetin (memory_idle_ms_percentiles) dhe gjerësinë e brezit të vlerësuar të memories (estimated_memory_bandwidth).
    • Në sistemet me arkitekturë ARM64, është zbatuar mbështetje për patch-et Live, duke ju lejuar të aplikoni rregullime në bërthamë. Linux në lëvizje, pa e ristartuar ose ndaluar sistemin.
    • Në bibliotekën minimaliste C nolibc, e furnizuar me kodin burimor të bërthamës Linux dhe ofron një mbështjellës rreth thirrjeve themelore të sistemit, duke mbështetur arkitekturat SuperH, x32, MIPS n32 dhe MIPS n34.
    • Mundësia për të dërguar përmbajtjen e core dump nëpërmjet socket-it AF_UNIX është zgjeruar, duke lejuar krijimin e trajtuesve më të sigurt të core dump në hapësirën e përdoruesit që nuk mbështeten te kerneli që thërret proceset e privilegjuara. Versioni i ri shton një protokoll për krijimin e serverat, i aftë të menaxhojë përpunimin e core dump në nivelin e detyrës. Për shembull, core dump-et mund të injorohen për disa procese, ndërsa të tjerat kalohen përmes një socket-i. Është zhvilluar një server prototip i veçantë për menaxhimin e core dump-eve.
    • U shtua opsioni i rreshtit të komandës së kernelit "crashkernel=size,cma" për të rezervuar hapësirë ​​memorieje nëpërmjet CMA (Contiguous Memory Alocator) për ruajtjen e skedarëve të rrëzimit të kernelit.
    • Mekanizmi pidfd është zgjeruar për të lejuar përdorimin e identifikuesve specifikë të procesit, të cilët, ndryshe nga pid, nuk mund të ricaktohen. Është shtuar mundësia për të lidhur atribute të zgjeruara me pidfd nga hapësira e përdoruesit. Hapja e përshkruesve të skedarëve për pidfd nëpërmjet funksionit open_by_handle_at() pa u lidhur me sistemin e skedarëve është tani e mundur. Informacioni i brendshëm i krijuar nga kerneli me pidfd tani është i lidhur me procesin, jo me pidfd, dhe ruhet midis rihapjeve të të njëjtit proces.
    • Funksioni bpf_cgroup_read_xattr() për leximin e atributeve të zgjeruara të skedarëve është shtuar në nënsistemin BPF. Programet BPF tani mbështesin operacione standarde të vargjeve si bpf_strcmp, bpf_strnchr, bpf_strchrnul, bpf_strlen dhe bpf_strspn, të cilat funksionojnë në modalitetin vetëm për lexim. Rrjedhat standarde stdout dhe stderr tani mund të përdoren për të bashkëvepruar me komponentët e hapësirës së përdoruesit. Për sistemet e bazuara në arkitekturën LoongArch, BPF tani mbështet modifikimin dinamik të kodit, mekanizmin e trampolinës BPF (i cili zvogëlon mbingarkesën e thirrjeve midis programeve kernel dhe BPF) dhe nisjen e programeve që përdorin struct_ops për të krijuar trajtues të funksioneve të kernelit nëpërmjet BPF.
    • Sistemi i matjes së kohës tani mbështet orët ndihmëse, të cilat nuk janë të lidhura me orën e rregullt të sistemit dhe funksionojnë me ritmin e tyre (më parë, të gjitha orët funksiononin me të njëjtin ritëm dhe ndryshonin vetëm në zhvendosjen e tyre).
    • Mbështetja fillestare për Ekzekutimin e Proxy-t është shtuar për të zbutur problemet e përmbysjes së prioriteteve. Ekzekutimi i proxy-t lejon që një detyrë që pret që të lirohet një bllokim të transferojë kontekstin e ekzekutimit të saj në detyrën që mban bllokimin, duke përshpejtuar lirimin e atij bllokimi.
    • Vazhdimi i migrimit të ndryshimeve nga dega Rust-for-Linux, që lidhet me përdorimin e Rust si gjuhë të dytë për zhvillimin e drajverëve dhe moduleve të kernelit (Mbështetja për Rust nuk është aktive si parazgjedhje dhe nuk rezulton në përfshirjen e Rust midis varësive të kërkuara të ndërtimit të kernelit). Janë shtuar abstraksione për menaxhimin e rregullatorëve të tensionit dhe rrymës, vetive të firmware-it, burimeve të hyrjes/daljes dhe memories së hyrjes/daljes. Është zbatuar makroja "warn_on!()". Është shtuar tipi UserPtr për treguesit e hapësirës së përdoruesit. Funksionaliteti i moduleve workqueue, uaccess, dma, time dhe list është zgjeruar. Moduli 'bits' është shtuar me funksionet 'bit' dhe 'genmask'.
    • Kodi për llogaritjen e shumave të kontrollit CRC është ripunuar dhe janë shtuar thirrje të reja për gjenerimin e hasheve SHA-1 dhe SHA-2. Janë shtuar optimizime specifike për harduerin. Performanca e funksionit crc32c() është përmirësuar në CPU-të e reja x86_64 që mbështesin zgjatimin VPCLMULQDQ (Vector Carry-Less Multiplication of Quadwords).
    • Për sistemet S390, është zbatuar mbështetje për shkëmbimin dhe migrimin e faqeve të mëdha të memories (faqe të mëdha transparente).
    • U shtua mundësia për të konfiguruar agresivitetin e rikuperimit të faqes së memories (rikuperim proaktiv) për nyje specifike NUMA kur memoria është e pamjaftueshme. Kjo ju lejon të zgjidhni nyjet NUMA për të cilat do të aplikohet rikuperim më agresiv i memories. Për shembull, "echo "512M swappiness=10" > /sys/devices/system/node/node1/reclaim."
    • Mekanizmi SCHED_EXT, i cili mundëson përdorimin e BPF për të krijuar planifikues të CPU-së, tani përfshin aftësinë për të menaxhuar throughput-in nëpërmjet cgroups. Për shembull, parametri cpu.max mund të përdoret për të kufizuar ngarkesën e CPU-së.
    • Montimi automatik i sistemit virtual të skedarëve tracefs në direktorinë /sys/kernel/debug/tracing është i vjetëruar; në vend të kësaj duhet të përdoret /sys/kernel/tracing.
  • Virtualizimi dhe Siguria
    • U shtua mundësia për të aktivizuar mbrojtje kundër dobësive të CPU-së duke zgjedhur vektorë sulmi të bllokueshëm Në vend që të specifikohen dobësi specifike në cilësime. Metodat e bllokimit zgjidhen në varësi të llojit të shkeljes së izolimit: midis përdoruesit dhe kernelit (përdorues-kernel), midis përdoruesit dhe një përdoruesi tjetër (përdorues-përdorues), midis sistemit mysafir dhe mjedisit pritës (mysafir-pritës), midis sistemeve të ndryshme mysafire (mysafir-mysafir) dhe midis fijeve të ndryshme (fije të kryqëzuara). Qasja e propozuar lejon aktivizimin e mbrojtjes vetëm kundër atyre klasave të dobësive që janë me shqetësim të vërtetë për përdoruesin. Për shembull, pronarët e mjedisit cloud mund të aktivizojnë modalitetet mysafir-pritës dhe mysafir-mysafir, të cilat do të aktivizojnë metodat e mbrojtjes kundër dobësive të mëposhtme: BHI, GD, L1TF, MDS, MMIO, Retbleed, RFDS, Spectre_v2, SRBDS, SRSO dhe TAA.
    • U shtua mbështetje për ndërtimin me kompiluesin Clang duke përdorur modalitetin e gjurmimit të thellësisë së pirgut, i cili inicializon të gjitha variablat e ruajtura në pirg. Ky inicializim parandalon rrjedhjet e informacionit të kernelit përmes variablave të painicializuara që mund të përmbajnë mbetje të të dhënave të ruajtura më parë në pirg. Më parë, një veçori e ngjashme mbështetej duke përdorur shtojcën STACKLEAK GCC.
    • Shtohet mbrojtje kundër sulmuesve që falsifikojnë sistemin e skedarëve /proc nëpërmjet montimit në modalitetin "lidhje". Numri i inodës rrënjë /proc tani është i fiksuar (PROCFS_ROOT_INO) dhe mund të verifikohet nga një proces i hapësirës së përdoruesit.
    • Nënsistemi RV (Runtime Verification), i projektuar për të verifikuar funksionimin e saktë të sistemeve shumë të besueshme, është përditësuar me komponentin e monitorimit rtapp (Real-time application monitor) për gjurmimin e problemeve të zakonshme në aplikacionet në kohë reale, si dhe komponentët rp, sssw dhe opid për testimin e planifikuesit të detyrave. Është zbatuar aftësia për të krijuar komponentë monitorimi që përdorin logjikë lineare kohore për të përcaktuar modelin e sjelljes në vend të një automati determinist. Verifikimi kryhet në kohën e ekzekutimit duke bashkangjitur trajtues në pikat e gjurmimit, të cilat krahasojnë progresin aktual të ekzekutimit me një model referimi të paracaktuar që përcakton sjelljen e pritur të sistemit.
    • Sistemi AppArmor është përditësuar për të mbështetur kontrollin e aksesit për socket-et AF_UNIX.
    • Hipervizori KVM në sistemet ARM zbaton mbështetje për kontrolluesin e ndërprerjeve GICv5.
    • U shtua cilësimi CONFIG_KVM_IOAPIC për të çaktivizuar mbështetjen për emulimin APIC, PIC dhe PIT në KVM.
    • Mbrojtje e shtuar kundër cenueshmërisë VMSCAPE.
    • U shtua komanda ioctl FS_IOC_GETLBMD_CAP për të marrë informacion nga hapësira e përdoruesit në lidhje me zbatimin e mjeteve të mbrojtjes së integritetit në një skedar.
    • Ndërfaqja /sys/fs/selinux/user është vjetëruar; qasja në të tani sjell një vonesë prej pesë sekondash dhe shfaq një paralajmërim në regjistër.
  • Nënsistemi i rrjetit
    • Implementimi i teknologjisë PSE (Power Sourcing Equipment), e përdorur për të furnizuar me energji nëpërmjet Ethernet pajisje të tilla si kamerat IP dhe pikat e aksesit pa tel, është përmirësuar me mbështetje për strategji të konfigurueshme të buxhetimit të energjisë (energjia totale e disponueshme). Këto strategji ju lejojnë të përcaktoni përparësitë se cilat porta duhet të mbyllen për të parandaluar mbingarkesën.
    • Implementimi i MCTP (Protokolli i Transportit të Komponentëve të Menaxhimit) tani mbështet rrugëzimin e portës hyrëse. Për shembull, rregullat e mëposhtme rrugëzojnë paketat në ID-në e Pikës Endpoint 10 nëpërmjet pajisjes mctpi2c0 duke përdorur adresën 0x1d, e cila i është caktuar direkt ID-së së Pikës Endpoint 9. mctp route add 9 nëpërmjet mctpi2c0 mctp neigh add 9 dev mctpi2c0 lladdr 0x1d mctp route add 10 gw 9
    • Për soketat UNIX (AF_UNIX), zbatohet opsioni SO_INC, dhe për familjen e adresave VSOCK, zbatohet opsioni SIOCINQ. Këto opsione janë të ngjashme me opsionin TCP_INQ për TCP dhe lejojnë që informacioni rreth numrit të bajteve të disponueshëm për lexim në soket të merret nëpërmjet një mesazhi kontrolli.
    • TCP tani zbaton në mënyrë strikte madhësinë e dritares së reklamuar të marrjes, e cila përcakton sasinë e të dhënave që lejohen të dërgohen para se të marrë një ACK nga ana tjetër. Më parë, bërthama vazhdonte të përpunonte të dhënat që mbërrinin përtej dritares së reklamuar të marrjes, por tani do të ndalojë së vepruari kështu.
    • MPTCP (Multipay TCP) tani mbështet opsionin e soketit TCP_MAXSEG për të kufizuar madhësinë maksimale të segmenteve të dërguara. MPTCP është një zgjerim i protokollit TCP për dërgimin e paketave njëkohësisht përgjatë rrugëve të shumëfishta përmes ndërfaqeve të ndryshme të rrjetit të lidhura me adresa të ndryshme IP.
    • U shtua mbështetje për algoritmin e kontrollit të mbingarkesës TCP DualPI2 (RFC 9332), i cili mundëson përdorimin e kontrolluesve të shkallëzueshëm të mbingarkesës për trafikun me kërkesa të larta për cilësi shërbimi (siç janë TCP-Prague dhe DCTCP) pa shkaktuar degradim të performancës për trafikun klasik të trajtuar nga kontrolluesit e mbingarkesës si Reno dhe Cubic.
    • U shtua sysctl "force_forwarding" i cili mund të përdoret për të aktivizuar përcjelljen e trafikut në ndërfaqet e zgjedhura të rrjetit IPv6.
    • Mbështetja për algoritmin e zbulimit të humbjes së paketave të Njoftimit Selektiv (SACK) të përshkruar në RFC 6675 është hequr. Ky algoritëm u anulua në vitin 2018. Rekomandohet të përdoret algoritmi RACK-TLP për zbulimin e humbjes së paketave TCP.
  • Оборудование
    • Puna ka vazhduar në drajverin Xe DRM (Direct Rendering Manager) për GPU-të bazuar në arkitekturën Intel Xe, e cila përdoret në kartat grafike të serisë Intel Arc dhe grafikët e integruar, duke filluar me procesorët Tiger Lake. Versioni i ri mundëson mbështetje për çipat e bazuar në mikroarkitekturën Panthor Lake si parazgjedhje dhe shton mbështetje për mikroarkitekturën WildCat Lake.
    • Drajveri AMDGPU për GPU-të GFX9.x tani mbështet mekanizmin Cleaner Shader, i cili pastron memorien e GPU-së para se ta ripërdorë atë për të parandaluar rrjedhjet e të dhënave të mbetura nga një proces tjetër. Mbështetja për modalitetin në pritje është përmirësuar. Është shtuar mundësia për të hyrë në modalitetin në pritje në mjediset AMD SR-IOV. Kontrolli i ndriçimit të sfondit është përmirësuar.
    • Drajveri i i915 tani mbështet mekanizmin drm_panic, i cili shfaq një mesazh gabimi të ngjashëm me "ekranin blu të vdekjes" kur ndodh një aksident. Është shtuar mbështetje për kontrolluesin e ekranit të përdorur në familjen e çipave Wildcat Lake.
    • Integrimi i komponentëve të drajverit Nova për GPU-të NVIDIA të pajisura me firmware GSP, të përdorura duke filluar me serinë NVIDIA GeForce RTX 2000 bazuar në mikroarkitekturën Turing, ka vazhduar. Drajveri është shkruar në Rust. Versioni i ri shton një shtresë abstraksioni për DMA, zbaton një analizues VBIOS, shton kod për konfigurimin e framebuffer-it dhe ofron mbështetje për ngarkim të përshpejtuar në modalitetin Falcon.
    • Drajveri i adreno është përditësuar për të mbështetur GPU-të Qualcomm Adreno x1-45 dhe x1-85.
    • Drajveri msm tani mbështet GPU-në Adreno SM8750 dhe hartëzimin e memories video (VM_BIND).
    • Drajveri panfrost është përditësuar për të mbështetur GPU-të Mali të përdorura në Mediatek mt8370 SoC.
    • Drajveri lima është përditësuar për të mbështetur GPU-të e përdorura në Rockchip RK3528 SoC.
    • U shtua drajveri mtd (Memory Technology Devices) për qasje në memorien NVM të integruar në GPU-të Intel.
    • Është shtuar mbështetje për sistemet e mëposhtme të zërit: ASoC IMX WM8524, AMD ACP7.2, SoundWire ACP 7.1, Fairphone 4 & 5, Qualcomm QCS8275, Framework Laptop 13 (AMD Ryzen AI 300), CS35L41 HDA (përdoret në laptopët ASUS), Richtek RTQ9124, TI TAS5753, HP EliteBook x360 830 G6, EliteBook 830 G6, LG 16Z90R-A, HP 15-fc000. Kodi audio HD është riorganizuar.
    • Shtohet mbështetje për pllakat ARM, SoC-të dhe pajisjet: NVIDIA Tegra264, Marvell PXA1908 (çipi i parë 64-bit i Marvell për telefonat inteligjentë), CIX P1, Axiado AX3000, Sophgo SG2000 (kombinon bërthamat ARM dhe RISC-V), Mediatek mt6572, exynos2200 (përdoret në Samsung Galaxy S22), Renesas R-Car V4M-7, TI am62d2 dhe Sophgo sg2042, laptopë të bazuar në Mediatek mt8186 dhe Qualcomm Snapdragon X1, telefona inteligjentë dhe tabletë të bazuar në SoC-të mt6572, tegra30 dhe msm8976.

Në të njëjtën kohë, Fondacioni i Softuerit të Lirë të Amerikës Latine krijoi një version të kernelit plotësisht falas 6.17 - Linux-libre 6.17-gnu, i pastruar nga elementët e firmware-it dhe drajverit që përmbajnë komponentë jo të lirë ose seksione kodi me fushëveprim të kufizuar. Versioni 6.17 përfshin kodin e azhurnuar të pastrimit të blob-eve në drajverët amdgpu, prueth, iwlwifi, btusb, pci mhi host, adreno a6xx, nova-core dhe Intel AVS. Emrat e blob-eve në skedarët devicetree (.dts) për çipat ARM dhe Intel IPU7 janë pastruar. Ngarkimi i blob-eve është çaktivizuar në drajverët e rinj pci hda. Pastrimi i blob-eve është ndërprerë në drajverin QLogic infiniband, i cili është hequr nga bërthama.

Burimi: opennet.ru

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster