Pēc diviem attīstības mēnešiem Linuss Torvalds paziņoja par Linux 6.17 kodola atbrīvošanu. Starp pamanāmākajām izmaiņām ir: Btrfs veiktspējas uzlabošana, sistēmas izsaukumi file_getattr() un file_setattr(), vienota vienprocesoru un daudzprocesoru konfigurācija uzdevumu plānotājā, DAMON_STAT modulis ar piekļuves statistiku uz atmiņu, Live-patch atbalsts ARM64 sistēmās, core-dump sūtīšana caur AF_UNIX soketu, SCHED_EXT ierobežošana caur cgroup, ievainojamību aizsardzības iestatījumu vienkāršošana CPU, kompilācija ar Clang ar mainīgo inicializāciju stekā, aizsardzība pret /proc aizvietošanu, RV (Runtime Verification) apakšsistēmas paplašināšana, AF_UNIX soketu ierobežošana caur AppArmor, TCP DualPI2 pārslogojumu kontroles algoritms.
Jaunajā versijā iekļautas 14334 labojumu no 2118 izstrādātājiem, faila plāksteris ir 46 MB (izmaiņas ietekmējušas 12841 failus, pievienotas 646654 koda rindkopas, dzēstas 398782 rindkopas). Iepriekšējā laidienā bija 15924 labojumi no 2145 izstrādātājiem, faila plāksteris bija 50 MB. Aptuveni 43% no visām 6.17 izmaiņām attiecas uz ierīču draiveriem, aptuveni 12% izmaiņu ir saistītas ar aparatūras arhitektūrām specifisku kodu atjaunošanu, 14% attiecībā uz tīkla steku, 4% uz failu sistēmām un 3% uz iekšējām kodola apakšsistēmām.
Galvenās jauninājumi kodolā 6.17 (1, 2, 3):
- Disku apakšsistēma, I/O un failu sistēmas
- Btrfs ir pievienots eksperimentālais atbalsts lieliem atmiņas lapu folijām (large folios), kas ļauj samazināt izdevumus un paaugstināt dažu darbību veiktspēju. Izstrādāta kešatmiņas sistēma piekļuves vaicājumiem par brīvās vietas bitu kartēm, kas palielināja jauno failu izveides veiktspēju par 20%. Uzlabota iepriekšējā izlasēšanas darbība sistēmās ar datu saspiešanu. Nodrošināta kompaktāka atslēgu izvietojuma struktūra XArray, kas uzlaboja mezglu struktūras glabāšanu un ļāva samazināt beigu mezglu skaitu par 50-70%. Nodrošinātas papildu opcijas saspiešanas izmantošanai defragmentētos ekstremālos elementos.
- FS ext4 ir pievienots buferizētā ievades/izvades atbalsts ar RWF_DONTCACHE atzīmi, kad dati tiek izdzēsti no lapu keša tūlīt pēc operācijas pabeigšanas.
- FS EROFS tiek īstenota metadatu saspiešanas atbalsts.
- NFS servers now have the ability to delegate write operations to clients opening files in write-only mode.
- The fallocate() system call has been enhanced with the FALLOC_FL_WRITE_ZEROES flag, which allows a specified range in a file to be zeroed out using the WRITE_ZERO command supported by some SSDs, performing zeroing without I/O operations. This option is currently available only in the ext4 filesystem.
- The system calls file_getattr() and file_setattr() have been added for manipulating the attributes of the inode of a specified file.
- The 'pktcdvd' driver for working with optical media in packet mode has been removed, as it was marked deprecated in 2016.
- The Bcachefs filesystem in the Linux kernel has been transitioned to external maintenance mode, meaning that changes to Bcachefs will no longer be accepted into the main kernel but will remain in the kernel codebase. Development of Bcachefs will occur outside the kernel codebase until Kent Overstreet can demonstrate the ability to interact correctly with other kernel developers and adhere to established development rules.
- Atmiņa un sistēmas pakalpojumi
- Support for single-processor configurations has been removed from the task scheduler. On single-processor systems, kernels configured for multiprocessor systems (SMP) should now be used. The code for single-processor and multiprocessor systems has been unified and freed from unnecessary bindings to the kernel parameter CONFIG_SMP.
- A new kernel module DAMON_STAT (Data Access Monitoring Results Stat) has been added, enabling monitoring of memory access using the DAMON (Data Access MONitor) subsystem. The module provides statistics on inactivity (memory_idle_ms_percentiles) and estimated memory bandwidth (estimated_memory_bandwidth).
- Support for Live patches has been implemented on ARM64 architecture systems, allowing patches to be applied to the Linux kernel on the fly, without rebooting or stopping the system.
- Support for the SuperH, x32, MIPS n32, and MIPS n34 architectures has been implemented in the minimal C library nolibc, which is supplied with the Linux kernel source code and provides a wrapper over basic system calls.
- Paplašināta iespēja sūtīt core-dump saturu caur soketu AF_UNIX, ļaujot izveidot drošākus core-dump apstrādātājus lietotāja telpā, kuri nav atkarīgi no privileģētu procesu izsaukšanas kodolā. Jaunajā versijā pievienots protokols core-dump izveidei. serveriem, spējīgi kontrolēt core-dump apstrādi atsevišķu uzdevumu līmenī. Piemēram, dažiem procesiem var ignorēt core-dump, bet citiem tos nosūtīt caur soketu. Atsevišķi sagatavots servera prototips core-dump pārvaldīšanai.
- Pievienota komandrindas opcija kodolam "crashkernel=size,cma" atmiņas rezervēšanai caur CMA (Contiguous Memory Allocator) crash-dump saglabāšanai.
- Paplašinātas pidfd mehānisma iespējas, kas ļauj izmantot identifikatorus, kas saistīti ar konkrētiem procesiem un, atšķirībā no pid, netiek atkārtoti piešķirti. Pievienota iespēja saistīt ar pidfd pagarinātos atribūtus no lietotāja telpas. Atļauta failu descriptoru atvēršana pidfd caur funkciju open_by_handle_at() bez saistīšanas ar failu sistēmu. Iekšējā informācija, ko kodols izveidojis kopā ar pidfd, tagad tiek saistīta ar procesu, nevis pidfd, un tiek saglabāta starp atkārtotu to pašu procesa atvēršanu.
- BPF apakšsistēmā pievienota funkcija bpf_cgroup_read_xattr() paplašināto failu atribūtu lasīšanai. Nodrošināta iespēja izmantot BPF programmās tipiskās virkņu operācijas, piemēram, bpf_strcmp, bpf_strnchr, bpf_strchrnul, bpf_strlen un bpf_strspn, kas darbojas tikai lasīšanas režīmā. Pievienota iespēja izmantot standarta straumes stdout un stderr saziņai ar komponentiem lietotāja telpā. LoongArch arhitektūras sistēmām BPF īstenota dinamiskās koda modifikācijas iespēja, "BPF trampoline" mehānisms (samazina slodzi izsaukumu nodošanai starp kodolu un BPF programmām) un programmu palaišana, kas izmanto struct_ops, lai izveidotu kodola funkciju apstrādātājus caur BPF.
- Laika uzskaites sistēmā īstenota papildus pulksteņu (auxiliary) atbalsts, kas nav saistīti ar parastajiem sistēmas pulksteņiem un darbojas pēc savas ritma (iepriekš visi pulksteņi darbojās ar vienādu ritmu un atšķīrās tikai pēc nobīdes).
- Sākotnēji pievienota prokšnovadīšanas (Proxy Execution) atbalsts, lai mazinātu apgrieztas prioritātes problēmas. Prokšnovadīšana ļauj uzdevumam, kas gaida bloķējuma atbrīvošanu, nodot savu izpildes kontekstu uzdevumam, kas tur koda bloķējumu, lai paātrinātu šī bloķējuma atbrīvošanu.
- Turpināta izmaiņu pārcelšana no Rust-for-Linux zara, kas saistītas ar Rust valodas izmantošanu kā otro valodu draiveru un kodola moduļu izstrādē (Rust atbalsts pēc noklusējuma nav aktīvs un neiekļauj Rust obligātajās kodola kompilācijas atkarībās). Pievienotas abstrakcijas, lai pārvaldītu sprieguma un strāvas regulatorus, firwvāru īpašības, ievades/izvades resursus un atmiņas ievades/izvades resursus. Realizēts makro “warn_on!()”. Pievienots UserPtr tips lietotāja telpas rādītājiem. Paplašināta workqueue, uaccess, dma, time un list moduļu funkcionalitāte. Pievienots ‘bits’ modulis ar ‘bit’ un ‘genmask’ funkcijām.
- Pārstrādāts kods CRC kontrolsummu aprēķināšanai un pievienoti jauni izsaukumi SHA-1 un SHA-2 hash ģenerēšanai. Pievienotas aparatūras arhitektūrām specifiskas optimizācijas. Paaugstināta crc32c() funkcijas veiktspēja jaunajos x86_64 CPU, kas atbalsta VPCLMULQDQ paplašinājumu (Vector Carry-Less Multiplication of Quadwords).
- S390 sistēmām ieviests atbalsts pārejas uz lapu (transparent huge page) un lielo atmiņas lapu migrācijai.
- Pievienota iespēja iestatīt agresīvās lapu atbrīvošanas (proactive-reclaim) parametrus, kad tās trūkst saistībā ar atsevišķiem NUMA mezgliem, ļaujot izdalīt NUMA mezglus, kuriem tiks piemērots aktīvāks atmiņas atbrīvošanas process. Piemēram, ‘echo ‘512M swappiness=10’ > /sys/devices/system/node/node1/reclaim’.
- SCHED_EXT mehānisma, kas ļauj izmantot BPF CPU plānotāju izveidei, pievienota iespēja pārvaldīt caurlaidību ar cgroup palīdzību. Piemēram, var izmantot parametru cpu.max, lai ierobežotu CPU slodzi.
- Paziņots, ka ir novecojis automātiskās mountēšanas mehānisms virtuālajai tracefs failu sistēmai direktorijā /sys/kernel/debug/tracing, tagad jādodas uz /sys/kernel/tracing.
- Virtualizācija un drošība
- Pievienota iespēja iespējot aizsardzību pret ievainojamībām CPU, izvēloties bloķējamās uzbrukumu vektorus. tā vietā, lai norādītu konkrētus ievainojamības iestatījumos. Bloķēšanas metodes tiek izvēlētas atbilstoši izolācijas pārkāpuma veidam: starp lietotāju un kodolu (user-kernel), starp lietotāju un citu lietotāju (user-user), starp viesu sistēmu un hosta vidi (guest-host), starp dažādām viesu sistēmām (guest-guest) un starp dažādiem pavedieniem (cross-thread). Ieteiktais pieejas veids ļauj aktivizēt tikai aizsardzību pret tām ievainojamību klasēm, kuras patiesi satrauc lietotāju. Piemēram, mākoņu vides īpašnieki var aktivizēt guest-host un guest-guest režīmus, pēc kuriem tiks aktivizētas aizsardzības metodes pret BHI, GD, L1TF, MDS, MMIO, Retbleed, RFDS, Spectre_v2, SRBDS, SRSO un TAA ievainojamībām.
- Pievienota atbalsta klātbūtne Clang kompilatora versijā ar aktivizētu steka dziļuma izsekošanas režīmu, kas veic visu stekā glabāto mainīgo inicializāciju. Inicializācija tiek veikta, lai novērstu informācijas noplūdi no kodola caur neiničializētām mainīgajām, kuras var saturēt iepriekš stekā saglabātu datu atliekas. Iepriekš līdzīga iespēja tika atbalstīta, izmantojot GCC spraudni STACKLEAK.
- Pievienota aizsardzība pret uzbrucēja veiktām failu sistēmas /proc maiņām, montējot to 'bind' režīmā. /proc saknes inoda numurs tagad ir fiksēts (PROCFS_ROOT_INO) un to var pārbaudīt lietotāja telpā esošs process.
- RV (Runtime Verification) apakšsistēmā, kas paredzēta augstas uzticamības sistēmu pareizas darbības pārbaudei, pievienots rtapp (Reālā laika lietojumprogrammu monitors) komponents, lai izsekotu tipi problēmām mobilajās programmās, kas darbojas reālā laika režīmā, kā arī komponenti rp, sssw un opid uzdevumu plānotāja testēšanai. Realizēta iespēja izveidot uzraudzības komponentus, kas izmanto lineāro temporālo loģiku uzvedības modeļa noteikšanai, nevis determinētā automāta. Pārbaude tiek veikta izpildes laikā, pievienojot apstrādātājus izsaukumiem, salīdzinot faktisko izpildi ar iepriekš noteikto etalona modeli, kas nosaka sistēmas sagaidāmo uzvedību.
- AppArmor sistēmā pievienota atbalsta klātbūtne AF_UNIX soketu piekļuves pārvaldībā.
- KVM hipervizorā ARM sistēmās ieviests GICv5 pārtraukumu kontrolleru atbalsts.
- Pievienota konfigurācija CONFIG_KVM_IOAPIC, kas ļauj izslēgt APIC, PIC un PIT atbalstu KVM emulācijā.
- Pievienota aizsardzība pret VMSCAPE ievainojamību.
- Pievienota ioctl komanda FS_IOC_GETLBMD_CAP, lai iegūtu informāciju par integritātes aizsardzības līdzekļu izmantošanu failam no lietotāja telpas.
- Paziņots par novecojušu saskarni /sys/fs/selinux/user, pieprasot kuru tagad tiek ieviesta piecu sekmžu kavēšanās un tiek parādīts brīdinājums žurnālā.
- Tīkla subsistēma
- PSE (Power Sourcing Equipment) tehnoloģijā, kas tiek izmantota, lai piegādātu barošanu, izmantojot Ethernet uz tādām ierīcēm kā IP kameras un bezvadu piekļuves punkti, pievienota atbalsta iespēja pielāgotām barošanas budžeta novērtēšanas stratēģijām. Šādas stratēģijas ļauj noteikt, kuri porti jāsamazina vispirms, lai novērstu pārslodzi.
- MCTP (Management Component Transport Protocol) protokolā pievienota atbalsta paketes maršrutēšanai uz ārējiem mezgliem caur starpmezgliem (gateway-routing). Piemēram, zemāk minētie noteikumi ļauj novirzīt paketes uz mezglu ar identifikatoru 10 (Endpoint ID 10) caur ierīci mctpi2c0, izmantojot adresi 0x1d, tieši pievienotu mezglam ar identifikatoru 9. mctp route add 9 via mctpi2c0 mctp neigh add 9 dev mctpi2c0 lladdr 0x1d mctp route add 10 gw 9
- UNIX saskarnēm (AF_UNIX) ieviesta opcija SO_INC, un VSOCK adresēm ieviesta opcija SIOCINQ. Ieviestās opcijas ir līdzīgas TCP_INQ opcijai TCP, un tās ļauj nosūtīt vadības ziņojumu, lai iegūtu informāciju par byte skaitu, kas ir pieejams lasīšanai soketā.
- TCP ir ieviesta stingra deklarētā saņemšanas loga izmēra ievērošana, kas nosaka datu apjomu, ko drīkst nosūtīt, līdz tiek saņemts ACK apstiprinājums no otras puses. Agrāk kodols turpināja apstrādāt datus, kas tika saņemti pārsniedzot deklarēto saņemšanas logu, bet tagad to pārtrauks.
- MPTCP (Multipath TCP) ieviesta iespēja izmantot TCP_MAXSEG soketa opciju, lai ierobežotu nosūtāmo segmentu maksimālo izmēru. MPTCP ir TCP protokola paplašinājums, lai organizētu paketu piegādi vienlaicīgi pa vairākiem maršrutiem caur dažādiem tīkla interfeisiem, kas piesaistīti dažādiem IP adresēm.
- Pievienota TCP pārslodzes kontroles algoritma DualPI2 (RFC 9332) atbalsts, kas ļauj izmantot mērogojamus pārslodzes kontrolierus trafika gadījumiem ar augstām pakalpojumu kvalitātes prasībām (piemēram, TCP-Prague un DCTCP), neradot veiktspējas samazinājumu tradicionālajam trafikam, kuram tiek izmantoti tādi pārslodzes kontrolieri kā Reno un Cubic.
- Pievienots sysctl «force_forwarding», caur kuru var aktivizēt trafika pārsūtīšanu uz izvēlētiem tīkla interfeisiem ar IPv6.
- Noņemts atbalsts SACK (Selective Acknowledgment) paketes zuduma noteikšanas algoritmam, kas aprakstīts RFC 6675. Šis algoritms tika pasludināts par novecojušu 2018. gadā. Ieteicams izmantot RACK-TLP algoritmu TCP paketes zuduma noteikšanai.
- Aprīkojums
- Turpināta darba veikšana pie Xe DRM (Direct Rendering Manager) draivera Intel Xe arhitektūras GPU, kas tiek izmantots Intel Arc grafiskajās kartēs un integrētajā grafikā, sākot ar Tiger Lake procesoriem. Jaunajā versijā noklusējumā iekļauts atbalsts Panthor Lake mikroarhitektūras čipiem un pievienots atbalsts WildCat Lake mikroarhitektūrai.
- AMDGPU draiverī GFX9.x GPU nodrošināta Cleaner Shader mehānisma atbalsts, kas nodrošina GPU atmiņas tīrīšanu pirms tās atkārtotas izmantošanas, izslēdzot datu noplūdi no cita procesa. Uzlabota gaidīšanas režīma atbalsts. Pievienota iespēja pāriet miega režīmā raidījumos ar AMD SR-IOV. Uzlabota apgaismojuma kontrole.
- i915 draiverī iekļauta drm_panic mehānisma atbalsts, kas piekļūst līdzīgām kļūmju situācijām kā ‘zilā ekrāna nāve’. Pievienots atbalsts displeja kontrolierim, kas tiek izmantots Wildcat Lake čipā.
- Turpināta Nova draivera komponentu integrācija NVIDIA GPU, aprīkotiem ar GSP programmatūru, kas tiek izmantota kopš NVIDIA GeForce RTX 2000 sērijas, balstoties uz Turing mikroarhitektūru. Draiveris ir uzrakstīts Rust valodā. Jaunajā versijā pievienots abstrahēšanas līmenis DMA apstrādei, realizēts VBIOS parseris, pievienots kods rāmis buferim un nodrošināta paātrināta ielāde Falcon režīmā.
- Adreno draiverī pievienots Qualcomm Adreno x1-45 un x1-85 GPU atbalsts.
- MSM draiverī pievienots Adreno SM8750 GPU atbalsts un video atmiņas mappēšana (VM_BIND).
- Panfrost draiverī pievienots Mali GPU atbalsts, kas tiek lietots Mediatek mt8370 SoC.
- Lima draiverī pievienota GPU atbalsts, kas tiek izmantots SoC Rockchip RK3528.
- Pievienots mtd (Memory Technology Devices) draiveris piekļuvei NVM atmiņai, kas integrēta Intel GPU.
- Pievienots atbalsts ASoC IMX WM8524, AMD ACP7.2, SoundWire ACP 7.1, Fairphone 4 & 5, Qualcomm QCS8275, Framework Laptop 13 (AMD Ryzen AI 300), CS35L41 HDA (izmanto ASUS portatīvajās datoros), Richtek RTQ9124, TI TAS5753, HP EliteBook x360 830 G6, EliteBook 830 G6, LG 16Z90R-A, HP 15-fc000. Pārstrukturēta HD-audio kods.
- Pievienots atbalsts ARM platformām, SoC un ierīcēm: NVIDIA Tegra264, Marvell PXA1908 (pirmais 64 bitu čips no Marvell viedtālruņiem), CIX P1, Axiado AX3000, Sophgo SG2000 (apvieno ARM un RISC-V kodolus), Mediatek mt6572, exynos2200 (izmanto Samsung Galaxy S22), Renesas R-Car V4M-7, TI am62d2 un Sophgo sg2042, portatīvie datori uz Mediatek mt8186 un Qualcomm Snapdragon X1, viedtālruņi un planšetdatori ar SoC mt6572, tegra30 un msm8976.
Tajā pašā laikā Dienvidamerikas Brīvā programmatūras fonds ir izstrādājis pilnīgi brīvā 6.17 kodola versiju — Linux-libre 6.17-gnu, kas tīra no sistemā iestrādātām vai draiveriem ar slēgtajiem komponentiem vai koda fragmentiem, kuru lietošana ir ierobežota ražotāja. 6.17 izlaidumā atjaunināta blob tīrīšanas kods draiveriem amdgpu, prueth, iwlwifi, btusb, pci mhi host, adreno a6xx, nova-core un Intel AVS. Izpildīta blobu nosaukumu tīrīšana dts failos (devicetree) ARM čipiem un Intel IPU7. Neitralizēta blobu ielāde jaunos pci hda draiveros. Beigta blobu tīrīšana QLogic infiniband draiverī, kas izņemts no kodola.
Avots: opennet.lv
