Nakon dva mjeseca razvoja, Linus Torvalds uveo izdanje kernela Linux 6.19Među najznačajnijim promjenama: podsistem Live Update Orchestrator, podrška za PCIe Link Encryption, sistemski poziv listns, Zero-Copy Receive mod u io_uring, podrška za ARM MPAM ekstenziju, klp-build za generisanje live patcheva, podrška za LoongArch32 arhitekturu, QoS za s2idle, optimizacije podsistema revizije, Intel LASS za Spectre zaštitu, podrška za SHA-3 i BLAKE2b hashove, mehanizam Confidential VMBus, TX optimizacije u mrežnom podsistemu, CAN XL protokol, API za hardversko ubrzanje HDR izlaza.
U najavi nove verzije, Linus je najavio da će sljedeće izdanje kernela biti numerisano kao 7.0, jer je grana 6.x akumulirala dovoljno izdanja da opravda promjenu prve cifre broja verzije (izdanje 6.0 uslijedilo je nakon 5.19). Promjena numeracije je urađena iz estetskih razloga i predstavlja formalni korak za ublažavanje nelagode uzrokovane akumulacijom velikog broja izdanja u seriji. Linus se našalio da je zbunjen velikim brojevima koji zahtijevaju prste na rukama i nogama. Međutim, formalno, postoji razlog za značajnu promjenu broja verzije, budući da je počelo sa sledeći podrška za izdanje za Rust riješeno prelazak sa eksperimentalnih na osnovne mogućnosti kernela.
Nova verzija uključuje 15657 ispravki od 2237 programera, s veličinom zakrpe od 52 MB (promjene su utjecale na 13682 datoteke, dodajući 794649 linija koda i uklanjajući 335498 linija). Prethodno izdanje uključivalo je 15035 ispravki od 2217 programera, s veličinom zakrpe od 45 MB. Oko 40% svih promjena u verziji 6.19 odnosi se na upravljačke programe uređaja, približno 13% se odnosi na ažuriranja koda specifičnog za hardverske arhitekture, 12% se odnosi na mrežni stek, 5% se odnosi na datotečne sisteme, a 3% se odnosi na interne podsisteme kernela.
Ključne nove funkcije u kernelu 6.19 (1, 2, 3):
- Diskovni podsistem, I/O i sistemi datoteka
- В Btrfs Procesi provjere FS-a (scrub) i zamjena uređaja više oni ne blokiraju Sistem prelazi u stanje mirovanja (stanje provjere čišćenja se sprema prije spavanja; nakon buđenja iz stanja mirovanja, provjera čišćenja se nastavlja i operacija zamjene uređaja se ponovo pokreće). RAID56 implementacija je ažurirana kako bi podržala blokove veće od veličine memorijske stranice. Izvršene su pripreme za ovu podršku. fscryptPoboljšane performanse rukovanja bravama prilikom izvođenja operacija vezanih za rezervaciju prostora. Dodano podrška za ioctl operaciju isključivanja, koja omogućava da se datotečni sistem dovede u stanje u kojem se pokušava završiti izvršavanje već pokrenutih operacija, ali su sve nove operacije blokirane.
- U sistemu datoteka Ext4 uključeno podrška za blokove veće od veličine memorijske stranice (>4KB na x86 sistemima). Korištenje velikih blokova dozvoljava poboljšava performanse operacija pisanja u međuspremniku u prosjeku za 50%, ali smanjuje performanse direktnog ulazno/izlaznog rada zbog povećanog vremena izračunavanja kontrolne sume. Nova verzija također... dodano optimizacije koje su povećale propusnost prilikom izvođenja online defragmentacije.
- U podsistemu OSIGURAČ Poboljšana podrška za čitanje iz međuspremnika pri korištenju velikih tomovi stranica memorije (veliki folioi). iomap se sada koristi za praćenje djelomično trenutnih folioa kako bi se preuzeli samo podaci koji nisu u međuspremniku.
- В VFS Dodata je podrška za opozivu delegaciju direktorija, što vam omogućava implementaciju NFS Prenošenje kontrole nad direktorijem sa servera na klijenta, omogućavajući NFS klijentu da nezavisno prati stanje direktorija koristeći svoju lokalnu keš memoriju bez kontaktiranja NFS servera. Ako drugi NFS klijent izvrši promjene u ovom direktoriju, delegiranje kontrole će biti opozvano od prvog klijenta.
- Za NFS dodano podrška za čitanje u direktnom I/O režimu. Implementirano Postavke /sys/kernel/debug/nfsd/io_cache_read i /sys/kernel/debug/nfsd/io_cache_write za kontrolu uključivanja keširanja i direktnih I/O operacija; manipulisanje ovim postavkama može smanjiti opterećenje na strani NFS klijenta prilikom izvođenja velikih I/O operacija.
- В NTFS Implementirana je podrška za ioctl operaciju isključivanja. uključeno Zadane opcije montiranja acl i prealloc, dodana je podrška za vremenske oznake prije 1. januara 1970.
- Do blokovski uređaji i FS uključeno po defaultu, odvojeno keširanje objekata po CPU-uBio» (Blok U/I), koji definira aktivne ulazno/izlazne operacije.
- Memorijski i sistemski servisi
-
U jezgro uključeno podsistem Orkestrator ažuriranja uživo (LUO), koji omogućava potpuno ponovno pokretanje i ažuriranje kernela bez prekida rada ili gubitka stanja sistema, uređaja i procesa. LUO podsistem se zasniva na mehanizmu koji je prethodno dodat u kernel. KHO (Kexec HandOver), pored omogućavanja pokretanja novog kernela sa starog bez gubitka stanja sistema, rješava probleme kao što su očuvanje stanja uređaja i RAM-a, kao i osiguranje kontinuiteta operacija vezanih za DMA i rukovanje prekidima. Stanje se čuva prije prelaska na novi kernel i vraća se nakon što se novi kernel aktivira bez ometanja kontinuiranih operacija uređaja koje obavljaju sistem i aplikacije u korisničkom prostoru.
-
Dodano Sistemski poziv listns() se koristi za listanje postojećih imenskih prostora u sistemu bez potrebe za iteracijom kroz /proc/. /ns/ za sve procese.
-
Asinhroni I/O sistem io_uring sada podržava postavljanje elemenata različitih veličina u red za slanje (SQE), slično kao što je prethodno izdanje dozvoljavalo miješanje veličina sadržaja reda za rezultate (CQE). Ranije su svi elementi u redu morali biti iste veličine, što je rezultiralo prekomjernom potrošnjom memorije zbog potrebe za korištenjem maksimalne veličine za sve elemente u redu.
io_uring također dodaje podršku za mehanizam zcrx (Zero-Copy Receive) za primanje podataka bez kopiranja između kernela i korisničkog prostora. Dodana je podrška za upite rasporeda memorije za redove čekanja SQ (Submission Queue) i CQ (Completion Queue), što omogućava dobijanje informacija o veličini prstenastog bafera potrebnih za korisnički definiranu alokaciju memorije korištenjem zastavica IORING_SETUP_NO_MMAP i IORING_MEM_REGION_TYPE_USER.
-
Da bi se omogućilo brzo praćenje steka pomoću alata kao što je perf, dodana je podrška za SFrame format s informacijama o odmotavanju steka poziva. SFrame je već podržan od strane GCC-a i binutils-a, ne umanjuje performanse i, za razliku od DWARF formata, sadrži samo minimalni skup informacija potrebnih za praćenje steka.
-
U uslužnom programu perf dodano Podrška za objedinjene opise metrika i događaja u JSON formatu, kao i odgođeno poništavanje steka poziva u korisničkom prostoru.
-
Do AMD procesori Implementiran je mehanizam zamjene podataka koji omogućava ulazno/izlaznim uređajima da direktno zamijene podatke u L3 keš memoriju CPU-a bez prethodnog smještaja u RAM.
-
Dodata podrška MPAM (Particioniranje i praćenje resursa memorijskog sistema), proširenja arhitekture skupa instrukcija ARMv8-A za označavanje svakog pristupa memoriji ID-om particije (PARTID) i ID-om grupe za praćenje (PMG). Korištenjem PARTID-ova, potrošnja resursa može se ograničiti, kao što je propusnost memorije ili veličina keš memorije, kako bi se spriječilo da jedna grupa zadataka potroši sve resurse. U kontekstu praćenja, kombinacija PMG-ova i PARTID-ova može se koristiti za praćenje potrošnje memorijskih resursa pod određenim opterećenjima.
-
Ako se proces abnormalno završi nakon prijema signala, drugi proces koji ima pidfd prekinutog procesa sada može odrediti broj signala koji je uzrokovao prekid procesa.
-
Prerađena implementacija sekvenci koje se mogu ponovo pokrenuti (sekvence koje se mogu ponovo pokrenuti), omogućavajući aplikacijama da organizuju pseudo-atomsko, neprekidno izvršavanje grupe instrukcija (ako ih prekine druga nit, sekvenca se ponovo pokušava izvršiti). Nova implementacija ima poboljšane performanse.
-
Do BPF programi implementirano Instrukcije BPF_JMP, BPF_X i BPF_JA za izvođenje indirektnih skokova na određenu poziciju iz tabele skokova. Dodan je koncept dinamičkih pokazivača (dynptr), što vam omogućava čitanje podataka iz strukturiranih datoteka. Dodano mogućnost dodavanja više bajtova metapodataka mrežnim paketima.
-
Python moduli, koji se koriste za obradu dokumentacije kernela, premješteni su u zaseban direktorij tools/lib/python.
-
Dodata funkcija mempool_alloc_bulk() da bi se elementi iz memorijskog bazena sigurno dodijelili za nekoliko objekata odjednom.
-
Nastavljeno premeštanje promena sa grane Rđa-za-Linux, vezano za upotrebu Jezik hrđe kao drugi jezik za razvoj drajvera i modula kernela (podrška za Rust nije aktivna po defaultu i ne rezultira uključivanjem Rusta na listu obaveznih zavisnosti za izgradnju kernela). U novoj verziji, kernel je uključen u ugrađen biblioteka "sine"s Rust parserom koda, pojednostavljujući pisanje složenih makroa. Mogućnosti kernel, pin-init i rbtree biblioteka su proširene. Dodana je num biblioteka s Integer osobinom za manipulaciju cijelim brojevima. Podrška za cjelobrojne parametre je dodana u modul! makro. Implementirana je mogućnost određivanja parametara prilikom učitavanja kernel modula napisanih u Rustu. Implementirane su apstrakcije za podsisteme. I2C и PWM (Modulacija širine impulsa).
-
Dodano Makro `at_least` (na primjer, param[at_least 7]) informira o minimalnoj dozvoljenoj veličini niza koji se prosljeđuje funkciji. Ako se funkciji proslijedi niz s manje elemenata, kompajler će izdati upozorenje.
-
Sastav uključeno klp-build skripta za generiranje kernel modula koji modificiraju pokrenuti kernel (livepatch) na osnovu zakrpe. Uslužni program objtool je ažuriran kako bi se omogućilo generiranje zakrpa uživo.
-
В Korisnički način rada Linux (pokretanje kernela kao korisničkog procesa) dodalo je ograničenu podršku za multiprocesiranje, ali niti unutar istog procesa još uvijek ne mogu raditi istovremeno. Poceo prenošenje korisničkog načina rada Linux u biblioteku nolibc.
-
Dodano podrška za arhitekturu LoongArch32 (LA32R, LA32S) pored LoongArch64.
-
Dodano mogućnost postavljanja QoS ograničenja na brzinu buđenja procesora u režimu uštede energije s2idle (Suspend-To-Idle), koji zamrzava izvršavanje procesa u korisničkom prostoru, ali ostavlja neke rukovaoce u kernelu aktivnim.
-
Dodano podrška za upravljanje tabelom stranica memorije za kontrolere IOMMU (Jedinica za upravljanje ulazno-izlaznom memorijom), koji prevode virtuelne adrese koje vidi hardverski uređaj u fizičke adrese, sa mogućnošću filtriranja DMA operacija po virtuelnim adresama i ograničavanja i izolacije I/O operacija.
-
Događaji praćenja sistemskih poziva sada podržavaju čitanje bafera iz korisničkog prostora i uključivanje njihovog sadržaja (npr. imena datoteka) u izlaz praćenja.
-
**Stranice memorije za nadzor(( (stranica za zaštitu), pristup kojima uzrokuje izuzetak i abnormalni prekid procesa (SIGSEGV), sada su su označeni posebna oznaka u datoteci /proc/PID/smaps.
-
Dodano upravljivost velike stranice memorije (prozirna ogromna stranica) u privatnoj memoriji zonskih uređaja.
-
U uređaju zram, koristi se za komprimovano skladištenje swap particije u memoriji, implementirano podrška za ispiranje više "bio" struktura (blokovski I/O) u batch modu (batching writeback-a).
-
Font je uključen. Terminus 10×18, što poboljšava čitljivost informacija iz konzole na ekranima laptopa srednje rezolucije (1440×900).
-
Mnogo optimizirano posao podsistemi revizije — primjećuje se dvostruko smanjenje režijskih troškova.
-
- Virtuelizacija i sigurnost
- Dodata je podrška za funkciju koju pružaju Intel procesori za divizije Linearno odvajanje adresnog prostora (LASS), koje omogućava hardversko odvajanje adresnih raspona korisničkog prostora i prostora jezgra radi povećane sigurnosti. Adresni prostor je podijeljen bitovima višeg reda adrese - polovinu adresnog prostora sa postavljenim bitovima višeg reda koristi jezgro, dok donju polovinu koristi korisnički prostor. Rano u izvršavanju instrukcija (prije spekulativnog izvršavanja), vrši se provjera kako bi se osiguralo da su dozvoljeni pristupi iz korisničkog prostora adresama sa postavljenim bitovima višeg reda i obrnuto. Ovo odvajanje sprječava curenje memorije jezgra iz bočnog kanala u korisnički prostor, čak i tokom spekulativnog izvršavanja, što LASS čini pogodnim za zaštitu od Meltdown i Spectre napada bez značajnih dodatnih troškova.
- Dodata je mogućnost omogućavanja ekstenzije Poboljšanja sigurnosti PCI Express magistrale — PCIe Link Encryption i PCIe Device Authentication — omogućavaju autentifikaciju i šifriranje komunikacijskog kanala između PCIe uređaja i virtuelne mašine zaštićene Intel TDX (Trusted Domain Extensions) i AMD SEV-SNP (Secure Nested Paging). Ove tehnologije sprečavaju presretanje, analizu i umetanje podataka u DMA saobraćaj prilikom pristupa host sistemu ili drugim uređajima.
- U ugrađenoj kriptografskoj biblioteci dodano podrška za SHA-3 algoritme (SHA3-224, SHA3-256, SHA3-384, SHA3-512) SHAKE128, SHAKE256 i BLAKE2b.
- Za LSM module (Linux Sigurnosni moduli) i, posebno, za SELinux, implementirano mogućnost praćenja kreiranja memfd deskriptora kako bi se primijenile sigurnosne politike na objekte povezane s njima.
- U LSM modulu IPE (Provođenje politike integriteta), koja definira opću politiku integriteta za cijeli sistem, dodana je podrška za zastavicu PROVJERA_IZVRŠAVANJA u funkciji izvrši(), što uključuje provjeru integriteta skripte prije nego što je izvrši interpreter.
- Dodani su primitivi scoped_user_read_access(), scoped_user_write_access i scoped_user_rw_access() za ograničen pristup podacima korisničkog prostora. zaštita spekulativnih napada.
- Dodano podrška mehanizma Povjerljivi VMBus, koristi se u HyperV hipervizoru za komunikaciju zaštićenu od neovlaštenih promjena između gostujućeg sistema koji radi u povjerljivom režimu (sa šifriranjem memorije i izolacijom registara zasnovanom na AMD SNP i Intel TDX tehnologijama) i paravizora odgovornog za pristup uređajima koji obrađuju povjerljive podatke.
- Dodano Mogućnost prijenosa informacija o srušenom procesu (za generiranje coredumpa) putem pidfd mehanizma. PIDFD identifikator je povezan sa određenim procesom i ne mijenja se, dok se PID može dodijeliti drugom procesu nakon što se trenutni proces povezan s ovim PID-om završi. Korištenje pidfd-a omogućava blokiranje izvršavanja napada zamjenom srušenog suid procesa drugim procesom, postižući stanje utrke u trenutku nakon što kernel počne obrađivati pad, ali prije nego što rukovatelj korisničkim prostorom provjeri parametre procesa.
- Mrežni podsistem
- Do mrežnog podsistema predstavljen Optimizacije za poboljšanje efikasnosti prijenosa podataka (TX). Uklanjanje spinlocka iz funkcije __dev_queue_xmit() i korištenje strukture llist bez zaključavanja dozvoljeno Povećajte performanse za 4 puta pod velikim opterećenjem i udvostručite brzinu slanja paketa uz istovremeno smanjenje opterećenja CPU-a za pola.
- Pod uslovom prilika isključenja Za pojedinačne mrežne utičnice, ograničenja sistemske memorije će biti onemogućena (u ovom slučaju, koristit će se ukupna ograničenja memorije postavljena za pojedinačne kontejnere). Da biste onemogućali ova ograničenja, koristite sysctl net.core.bypass_prot_mem i zastavicu SK_BPF_BYPASS_PROT_MEM u funkciji bpf_setsockopt.
- Dodano podrška za proširenje RFC 5837, koji dodaje informacije o dolaznim mrežnim interfejsima ICMP porukama o prekoračenju vremena koje se vraćaju kada istekne vrijeme trajanja (TTL) paketa, kako bi se dobile detaljnije informacije prilikom praćenja ruta pomoću uslužnog programa traceroute.
- Dodano Podrška za kontinuirano ispitivanje zauzetosti u zasebnoj niti kernela za izdvajanje deskriptora iz RX/TX redova za aplikacije koje zahtijevaju minimalnu latenciju.
- Dodata podrška za protokol CAN XL (Controller Area Network eXtended Length), što povećava veličinu podatkovnog polja na 2048 bajtova kako bi se osigurala integracija s mrežama TCP/IP, implementirana je mogućnost tuneliranja Ethernet okvira i dodana je podrška modulacija širine impulsa, što je omogućilo prijenos podataka brzinama od 20 Mbps i više.
- Dodano potporna struktura sockaddr_unsized, varijanta strukture sockaddr koja koristi niz sa fleksibilni elementi umjesto niza fiksne veličine (sa_data[] umjesto sa_data[14], koji se u suštini koristio za referenciranje drugih većih struktura).
- Dodata je mogućnost korištenja funkcionalnosti getsockname i getpeername putem podsistema io_uring.
- Dodan sysctl net.ipv4.tcp_rcvbuf_low_rtt и net.ipv4.tcp_comp_sack_rtt_percent za optimizaciju TCP-a.
- Dodano podrška za veze s propusnošću od 1600 Gbps (1.6T).
- Oprema
- DRM (Direct Rendering Manager) podsistemu je dodan API za iskorištavanje mogućnosti hardverske transformacije boja, eliminirajući potrebu za shaderima ili izvršavanjem koda na bazi CPU-a. Za HDR izlaz sadržaja, složene transformacije boja sada može izvršiti kontroler ekrana prije i nakon miješanja, umjesto da softver komponuje sadržaj u konačni bafer ekrana. Pored smanjenja opterećenja i potrošnje energije prilikom organiziranja HDR izlaza, ova funkcionalnost se može koristiti za osiguranje preciznog prikaza boja u video ili slikovnim editorima.
- Dodano Ethosu drajver za Arm Ethos U65 i U85 NPU-ove, dizajniran za hardversko ubrzanje AI modela.
- Drajver i915 za Lunar Lake i novije GPU-ove dodaje podršku za hardverski potpomognuto oštrenje.
- Nastavljeno Rad na Xe DRM (Direct Rendering Manager) drajveru za GPU-ove bazirane na Intel Xe arhitekturi, koja se koristi u Intel Arc seriji grafičkih kartica i integrisanoj grafici, počevši od Tiger Lake procesora. Dodata je početna podrška za Xe3P arhitekturu, koja se koristi u Crescent Island GPU-ovima i porodici Nova Lake procesora sa integrisanom grafikom.
- Drajver AMDGPU sada u potpunosti podržava grafičke kartice iz porodice AMD GCN 1.0 "Southern Island" i 1.1 "Sea Islands", koje su se ranije oslanjale na Radeon drajver. Drajver AMDGPU je izjednačen sa Radeon drajverom i omogućen je po defaultu za ove GPU-ove. GCN 1.x kartice su izdavane od 2012. do 2019. godine i pokrivaju modele kao što su Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790 / 8870 i druge grafičke kartice iz porodica Radeon Rx 200 / Rx 300. Pored toga povećati Sa prosječnim povećanjem performansi od 24%, prelazak na AMDGPU je omogućio podršku za Vulkan 1.3 grafički API za ove GPU-ove. AMDGPU je također dodao podršku za analogne konektore i Video Coding Engine 1.0, te je omogućio Display Core (DC) stek po zadanim postavkama za GPU-ove zasnovane na mikroarhitekturi Bonaire (Radeon HD 7790).
- U Nouveau vozaču implementirano podrška za NVJPG hardverski akcelerator prisutan u Tegra210 SoC-u.
- U vozaču Panthora dodano Podrška za Mali-G1 GPU i početna podrška za MediaTek MT8196 čip.
- Dodano Podrška za audio podsistem Intel Nova Lake S čipova, HP laptopa sa HDA CS35L41, kao i audio interfejse CIX IPBLOQ HD i Onkyo SE-300PCIE.
- Integracija Nova drajverskih komponenti za NVIDIA GPU-ove opremljene GSP firmverom koji se koristi počevši od NVIDIA GeForce RTX 2000 serije bazirane na Turing mikroarhitekturi je nastavljena. Drajver je napisan u Rustu. Rad na RPC-u i završeno implementacija učitavanja GSP (GPU System Processor) koprocesora.
- Dodano Podrška za ARM ploče, SoC-ove i uređaje: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 opcije ploča Enclustra Mercury.
- Dodata je podrška za pametne telefone i tablete bazirane na Mediatek MT6582 (Alcatel YarisXL), Nvidia Tegra124 (Xiaomi Mi Pad) i Qualcomm MSM8939 (ASUS ZenFone 2) SoC-ovima. Dodata je podrška za laptope bazirane na Qualcomm SDM850 SoC-u, kao što je Huawei MateBook E 2019.
- Dodata je podrška za SoC i ploče bazirane na RISC-V arhitekturi: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.
Istovremeno, Latinoamerička fondacija za slobodni softver formirana opcija potpuno besplatan kernel 6.19 - Linux-libre 6.19-gnu, očišćen od elemenata firmvera i drajvera koji sadrže vlasničke komponente ili dijelove koda s ograničenim opsegom od strane proizvođača. U verziji 6.19, kod za učitavanje binarnog firmvera uklonjen je iz SDCA zvučnog podsistema. Kod za čišćenje blobova ažuriran je u drajverima za Intel XE, Nova-Core, Qualcomm Iris, Venus i Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 i TI tas2783 audio kodeke. Nazivi blobova u dts datotekama (devicetree) za ARM čipove su očišćeni. Čišćenje STM C8SECTPFE DVB drajvera, koji je uklonjen iz kernela, je prekinuto.
izvor: linux.org.ru
