Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanja jezgre Linux 6.7. Među najzapaženijim promjenama su: integracija datotečnog sustava Bcachefs, prestanak podrške za arhitekturu Itanium, mogućnost rada Nouvea s GSP-R firmverima, podrška za TLS enkripciju u NVMe-TCP-u, mogućnost korištenja iznimaka u BPF-u, podrška za futex u io_uringu, optimizacija performansi planera fq (Fair Queuing), podrška za proširenje TCP-AO (TCP Authentication Option) i mogućnost ograničavanja mrežnih veza u mehanizmu zaštite Landlock. Dodano je upravljanje pristupom za user namespace i io_uring putem AppArmora.
U novu verziju je prihvaćeno 18405 ispravki od 2066 programera, veličina zakrpe je 72 MB (promjene su obuhvatile 13467 datoteka, dodano je 906147 linija koda, uklonjeno 341048 linija). U prošlom izdanju bilo je 15291 ispravki od 2058 programera, veličina zakrpe bila je 39 MB. Otprilike 45% svih promjena u 6.7 vezano je za upravljačke programe, oko 14% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 13% je vezano uz mrežni stog, 5% se bavi datotečnim sustavima, a 3% unutarnjim pod-sustavima jezgre.
Glavne novosti u jezgri 6.7:
- Sistem diska, ulaz/izlaz i datotečni sustavi
- U sastav jezgre prihvaćen je kod datotečnog sustava Bcachefs, u kojem je poduzet pokušaj postizanja razine performansi, pouzdanosti i skalabilnosti svojstvenih XFS-u, u kombinaciji s elementima proširene funkcionalnosti dostupnim u Btrfs i ZFS-u. Na primjer, Bcachefs podržava mogućnosti poput uključivanja više uređaja u particiju, višeslojne raspodjele pohrane (donji sloj s često korištenim podacima na osnovi brzim SSD-ova, a gornji sloj s manje traženim podacima iz tvrdih diskova), replikaciju (RAID 1/10), keširanje, transparentno komprimiranje podataka (modovi LZ4, gzip i ZSTD), snimke stanja (snapshot), verifikaciju cjelovitosti putem kontrolnih zbrojeva, mogućnost pohrane kodova ispravke grešaka Reed-Solomon (RAID 5/6), pohranu informacija u šifriranom obliku (koriste se ChaCha20 i Poly1305). Po performansama, Bcachefs nadmašuje Btrfs i druge datotečne sustave zasnovane na mehanizmu Copy-on-Write, i pokazuje brzinu rada blizu Ext4 i XFS.
- U Btrfs datotečnom sustavu uveden je pojednostavljeni režim kvota, koji omogućava postizanje veće izvedbe praćenjem ekstenata samo u poddirektoriju u kojem su stvoreni, što značajno pojednostavljuje izračune i povećava performanse, ali ne omogućava praćenje ekstenata koji se zajednički koriste u više poddirektorija.
- U Btrfs je dodana nova struktura podataka 'stripe tree', prikladna za logičko mapiranje ekstenata u situacijama kada fizičko mapiranje nije identično na različitim uređajima. Ova se struktura trenutno koristi u implementacijama RAID0 i RAID1 za zonirane blokovne uređaje. U budućnosti, planira se korištenje ove strukture i u RAID-u višeg nivoa, što će omogućiti rješavanje niza postojećih problema u trenutnoj implementaciji.
- U Ceph datotečnom sustavu implementirana je podrška za mapiranje identifikatora korisnika montiranih datotečnih sustava, koji se koristi za usklađivanje datoteka određenog korisnika na montiranom stranom dijelu s drugim korisnikom u trenutnom sustavu.
- U efivarfs dodana je mogućnost određivanja uid i gid prilikom montiranja kako bi se omogućilo izmjenjivanje UEFI varijabli procesima pokrenutim bez root prava.
- U exFAT dodani su ioctl pozivi za čitanje i promjenu FS atributa. Dodana je obrada direktorija nulte veličine.
- U F2FS implementirana je mogućnost korištenja blokova veličine 16K.
- Mehanizam automontiranja autofs prebačen je na korištenje novog API-ja za montiranje particija.
- U OverlayFS su predložene opcije montiranja 'lowerdir+' i 'datadir+'. Dodana je podrška za ugniježđeno montiranje OverlayFS s xattrs.
- U XFS optimizirano je opterećenje CPU-a u kodu za raspodjelu blokova u stvarnom vremenu. Osigurana je mogućnost istovremenog izvođenja operacija čitanja i FICLONE.
- Kod EXT2 prebačen je na korištenje folija stranica memorije (page folios).
- Memorija i sistemske usluge
- Podrška za ia64 arhitekturu, koju koriste Intel Itanium procesori, je prekinuta, a prodaja ovih procesora je potpuno zaustavljena 2021. godine. Itanium procesori su predstavljeni od strane Intela 2001. godine, ali ia64 arhitektura nije bila u stanju da izdrži konkurenciju sa AMD64, prvenstveno zbog više performansi AMD64 i glatkog prelaza sa 32-bitnih x86 procesora. Kao rezultat, interesi Intela su se preusmjerili na x86-64 procesore, dok je Itanium ostao po strani. servere HP Integrity, čija je prodaja prekinuta prije tri godine. Kod za podršku ia64 je uklonjen iz jezgra uglavnom zbog dugotrajnog nedostatka podrške ove platforme, pri čemu je Linus Torvalds izrazio spremnost da vrati podršku za ia64 u jezgru, ali samo ako se nađe osoba koja će demonstrirati kvalitetnu podršku za ovu platformu izvan glavnog jezgra bar tokom jedne godine.
- Dodana je opcija komandne linije jezgra 'ia32_emulation', koja omogućava uključivanje i isključivanje podrške za emulaciju 32-bitnog moda prilikom pokretanja, u jezgrima sastavljenim za x86-64 arhitekturu. Sa praktične strane, nova opcija omogućava sastavljanje jezgra uz podršku za kompatibilnost sa 32-bitnim aplikacijama, ali po defaultu isključuje ovaj mod kako bi se smanjila površina napada na jezgro, s obzirom na to da su API-ji za osiguranje kompatibilnosti manje testirani od osnovnih interfejsa jezgra.
- Nastavljene su izmjene iz Rust-for-Linux grane, vezane za korištenje jezika Rust kao drugog jezika za razvoj drajvera i modula jezgra (podrška za Rust nije aktivna po defaultu i ne vodi do uključivanja Rust-a u obavezne zavisnosti prilikom sastavljanja jezgra). U novoj verziji implementiran je prelaz na Rust 1.73 i ponuđen je skup veza za rad sa radnim redovima (workqueues).
- Omogućena je upotreba binfmt_misc mehanizma za dodavanje podrške za nove formate izvršnih datoteka (npr. za pokretanje kompajliranih aplikacija na Javi ili Pythonu) unutar posebnih nepriviligovanih imenskih prostora (namespace).
- U cpuset kontroleru cgroup, koji omogućuje upravljanje korištenjem CPU jezgri tijekom izvođenja zadatka, omogućena su lokalna i udaljena particioniranja (remote partition), koja se razlikuju po tome je li roditeljski cgroup ispravna korijenska sekcija ili ne. U cpuset također su dodane nove postavke "cpuset.cpus.exclusive" i "cpuset.cpus.exclusive.effective" za ekskluzivnu vezu na CPU.
- U BPF podsustavu implementirana je podrška za iznimke, koje se obrađuju kao hitni izlaz iz BPF programa s mogućnošću sigurnog razotkrivanja okvira steka. Osim toga, u BPF programima dopušteno je korištenje kptr pokazivača u vezi s CPU.
- U io_uring podsustavu dodana je podrška za operacije s futexima, kao i nove operacije: IORING_OP_WAITID (asinhrona verzija waitid), SOCKET_URING_OP_GETSOCKOPT (varijanta getsockoptand), SOCKET_URING_OP_SETSOCKOPT (varijanta setsockopt) i IORING_OP_READ_MULTISHOT (više operacija čitanja koje traju dok postoje podaci ili dok se ne popuni međuspremnik).
- Dodana je implementacija laganih jednostrukih FIFO redova, koja zahtijeva spin-lock samo za brisanje iz reda u kontekstu procesa, dok za atomsko dodavanje u red ne zahtijeva spin-lock u bilo kojem kontekstu.
- Dodani su prstenasti međuspremnici "objpool" s skalabilnom implementacijom visokoučinkovite niza za dodjelu i vraćanje objekata.
- Dodani su inicijalni dijelovi promjena za implementaciju novog API-a futex2, koji se odlikuje višom učinkovitošću na NUMA sustavima, podržava veličine koje nisu 32 bita, i može se koristiti umjesto multiplexiranog sustavnog poziva futex().
- Za ARM32 i S390x arhitekture dodana je podrška za aktualni skup (cpuv4) instrukcija BPF.
- Za RISC-V arhitekturu implementirana je mogućnost korištenja načina provjere Shadow-Call Stack dostupan u Clangu 17, namijenjenog zaštiti od prepisivanja adrese povratka iz funkcije u slučaju preljeva međuspremnika na stogu. Suština zaštite je očuvanje adrese povratka u posebnom "sjeni" stogu nakon prijenosa kontrole funkciji, te vađenje te adrese prije izlaska iz funkcije.
- U mehanizam spajanja identičnih stranica memorije (KSM: Kernel Samepage Merging) dodan je novi pametan način skeniranja stranica memorije, koji prati neuspješno skenirane stranice i smanjuje intenzitet njihovog ponovnog skeniranja. Za uključivanje novog načina dodana je postavka /sys/kernel/mm/ksm/smart_scan.
- Dodana je nova ioctl-komanda PAGEMAP_SCAN, koja u kombinaciji s userfaultfd(), omogućava određivanje činjenica pisanja u određeni raspon memorije. Nova mogućnost se, na primjer, može koristiti u sustavu za spremanje i obnavljanje stanja procesa CRIU ili u sustavima za anti-cheat u igrama.
- U sustavu gradnje, pri prisutnosti Clang kompajlera, prema zadanim postavkama omogućen je sastav primjera korištenja perf pod-sustava, napisanih kao BPF programi.
- Uklonjen je stari sloj videobuf, koji je korišten za upravljanje frame bufferima u medijskom pod-sustavu i prije više od 10 godina zamijenjen novom implementacijom videobuf2.
- Virtualizacija i sigurnost
- U pod-sustav fscrypt dodana je mogućnost šifriranja podataka blokovima manjim od veličine bloka u datotečnom sustavu. Ovo može biti potrebno za korištenje hardverskih mehanizama šifriranja, koji podržavaju samo male blokove (na primjer, UFS kontroleri koji podržavaju samo veličinu bloka 4096, mogli bi se koristiti s datotečnim sustavom veličine bloka 16K).
- U pod-sustav „iommufd“, koji omogućava upravljanje tablicama stranica memorije ulazno/izlaznog IOMMU (I/O Memory-Management Unit) putem deskriptora datoteka iz korisničkog prostora, dodano je praćenje još uvijek neodbačenih iz predmemorije podataka (nečistih) za DMA operacije, što je neophodno za određivanje memorije s neodbačenim podacima prilikom migracije procesa.
- U mehanizam Landlock, koji omogućava ograničavanje interakcije grupe procesa s vanjskim okruženjem, dodana je podrška za definiranje pravila upravljanja pristupom TCP socketima. Na primjer, može se stvoriti pravilo koje dopušta samo pozivanje putem mrežnog porta 443 za uspostavljanje HTTPS veza.
- U pod-sustav AppArmor dodana je mogućnost upravljanja pristupom mehanizmu io_uring i stvaranju prostora imenskih identifikatora korisnika (user namespaces), što omogućava selektivno odobravanje pristupa tim mogućnostima samo određenim procesima.
- Dodano je API za potvrdu virtualnih mašina integriteta procesa njihovih učitavanja.
- Na sustavima LoongArch podržana je virtualizacija s hipervizorom KVM.
- Korištenjem hipervizora KVM na sustavima RISC-V uvedena je podrška za proširenje Smstateen, koje blokira pristup virtualne mašine registrima CPU-a koji nisu eksplicitno podržani od strane hipervizora. Također, dodana je podrška za korištenje u gostujućim sustavima proširenja Zicond, koje omogućuje izvođenje određenih uvjetnih cijelih operacija.
- U gostujućim sustavima temeljenim na arhitekturi x86, koji se izvode pod KVM-om, dozvoljeno je korištenje do 4096 virtualnih CPU-a.
- Mrežni subsistem
- U upravljačkom programu NVMe-TCP (NVMe preko TCP), koji omogućuje pristup NVMe uređajima putem mreže (NVM Express over Fabrics) koristeći TCP protokol, dodana je podrška za šifriranje kanala prijenosa podataka korištenjem TLS-a (koristi se KTLS i pozadinski proces u korisničkom prostoru tlshd za dogovor o vezi).
- Optimizirana je izvedba planera paketa fq (Fair Queuing), što je omogućilo povećanje propusnosti od 5% pri velikim opterećenjima u tcp_rr (TCP Request/Response) testu i 13% pri neograničenom toku UDP paketa.
- U TCP protokol dodana je opcionalna mogućnost korištenja vremenskih oznaka (TCP TS) s točnošću u mikrosekundama (RFC 7323), što omogućuje preciznije mjerenje latencija i izradu naprednijih modula za upravljanje opterećenjem. Za aktivaciju može se koristiti naredba „ip route add 10/8 … features tcp_usec_ts”.
- U TCP steku dodana je podrška za proširenje TCP-AO (TCP Authentication Option, RFC 5925), koje omogućuje verifikaciju TCP zaglavlja putem MAC kodova (Message Authentication Code), koristeći modernije algoritme HMAC-SHA1 i CMAC-AES-128 umjesto ranije dostupne opcije TCP-MD5 temeljenog na zastarjelom algoritmu MD5.
- Dodana je nova vrsta virtualnih mrežnih uređaja „netkit”, čija se logika prijenosa podataka definira pomoću BPF programa.
- U KSMBD-u, koji radi na razini jezgre kao implementacija SMB poslužitelja, dodana je podrška za prevođenje imena datoteka koje sadrže surrogatne parove složenih znakova.
- U NFS-u poboljšana je implementacija tokova s RPC servisima. Dodana je podrška za delegiranje pisanja (za NFSv4.1+). U NFSD-u dodana je podrška za netlink obrtnika rpc_status. Poboljšana je podrška za NFSv4.x klijente prilikom ponovnog izvoza u knfsd.
- Oprema
- U modul jezgre Nouveau dodana je osnovna podrška za GSP-RM firmware koji se koristi u NVIDIA RTX 20+ GPU-ima za premještanje operacija inicijalizacije i upravljanja GPU-om na odvojeni mikrokontroler GSP (GPU System Processor). Podrška za GSP-RM omogućava Nouveau drajveru rad kroz pozive firmwara, umjesto izravnog programiranja operacija interakcije s hardverom, što značajno pojednostavljuje dodavanje podrške za nove NVIDIA GPU-e zahvaljujući upotrebi već pripremljenih poziva za inicijalizaciju i upravljanje potrošnjom energije.
- U AMDGPU drajveru implementirana je podrška za GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 i DML2. Poboljšana je podrška za besprijekorno učitavanje (bez trešnje prilikom prebacivanja video moda).
- U i915 drajveru implementirana je podrška za Intel Meteor Lake čipove i dodana je osnovna implementacija Intel LunarLake (Xe 2).
- Dodana je podrška za asimetrične kanale prijenosa, dodane u specifikacije USB4 v2 (120/40G).
- Dodana je podrška za ARM SoC: Qualcomm Snapdragon 720G (koristi se u Xiaomi pametnim telefonima), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (koristi se u usmjerivačima i NAS).
- Dodana je podrška za pametni telefon Fairphone 5 i ARM platforme Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
- Dodana je podrška za RISC-V platforme Milk-V Pioneer i Milk-V Duo.
- Dodana je podrška za audio interfese laptopa HUAWEI opremljenih AMD CPU-ima. Dodana je podrška za dodatne zvučnike instalirane na Dell Oasis 13/14/16 laptopima. Dodana je podrška za ugrađene zvučnike ASUS K6500ZC. Dodana je podrška za indikator isključivanja zvuka na HP 255 G8 i G10 laptopima. Dodana je podrška za audio drajvere acp6.3. Dodana je podrška za profesionalne audio interfejse Focusrite Clarett+ 2Pre i 4Pre.
U isto vrijeme, latinoamerička Zaklada slobodnog softvera je izdala potpuno slobodnu verziju jezgre 6.7 — Linux-libre 6.7-gnu, očišćenu od elemenata firmware-a i drajvera koji sadrže neslobodne komponente ili dijelove koda čija je upotreba ograničena od strane proizvođača. U izdanju 6.7 ažuriran je kod za čišćenje blobova u raznim drajverima i podsustavima, kao što su drajveri amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs i btqca. Uklonjen je kod za čišćenje drajvera localtalk i rtl8192u zbog njihovog isključenja iz jezgre. Uklonjene su suvišne komponente čišćenja drajvera xhci-pci, rtl8xxxu i rtw8822b, koje su ranije dodane pogreškom. Provedeno je čišćenje imena blobova u dts datotekama za arhitekturu Aarch64. Uklonjeni su blobovi u novim drajverima mt7925, tps6598x, aw87390 i aw88399.
Izvor: opennet.ru
