Izdanje jezgre Linuxa 6.7

Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje Linux kernela 6.7. Među najznačajnijim promjenama: integracija Bcachefs datotečnog sustava, ukidanje podrške za Itanium arhitekturu, mogućnost rada Nouvee s GSP-R firmwareom, podrška za TLS enkripciju u NVMe-TCP, 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 sigurnosnom mehanizmu Landlock, dodana kontrola pristupa korisničkom prostoru imena i io_uring putem AppArmora.

Nova verzija uključuje 18405 popravaka od 2066 programera, veličina zakrpe je 72 MB (promjene su utjecale na 13467 datoteka, dodano je 906147 redaka koda, 341048 redaka je izbrisano). Posljednje izdanje imalo je 15291 popravak od 2058 programera, veličina zakrpe bila je 39 MB. Oko 45% svih promjena uvedenih u 6.7 odnosi se na upravljačke programe uređaja, približno 14% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stog, 5% se odnosi na datotečne sustave, a 3% povezani su s unutarnjim podsustavima jezgre.

Ključne inovacije u kernelu 6.7:

  • Diskovni podsustav, I/O i datotečni sustavi
    • Kernel usvaja Bcachefs kod datotečnog sustava, koji pokušava postići performanse, pouzdanost i skalabilnost XFS-a, u kombinaciji s elementima napredne funkcionalnosti pronađene u Btrfs i ZFS. Na primjer, Bcachefs podržava značajke kao što su uključivanje više uređaja u particiju, višeslojni raspored pogona (donji sloj s često korištenim podacima koji se temelje na brzim SSD diskovima, a gornji sloj s manje korištenim podacima s tvrdih diskova), replikacija (RAID 1/10), predmemorija, transparentna kompresija podataka (LZ4, gzip i ZSTD načini), odsječci stanja (snimke), provjera integriteta pomoću kontrolnih zbrojeva, mogućnost pohranjivanja kodova za ispravljanje pogrešaka Reed-Solomon (RAID 5/6), pohranjivanje informacija u šifrirani oblik (koriste se ChaCha20 i Poly1305). Što se tiče performansi, Bcachefs je ispred Btrfs-a i drugih datotečnih sustava temeljenih na Copy-on-Write mehanizmu, te pokazuje radnu brzinu blisku Ext4 i XFS.
    • Datotečni sustav Btrfs uvodi pojednostavljeni način rada s kvotama koji vam omogućuje postizanje viših performansi praćenjem ekstenata samo u podparticiji u kojoj su stvoreni, što značajno pojednostavljuje izračune i poboljšava performanse, ali vam ne dopušta da uzmete u obzir ekstente koji se dijele u nekoliko podparticije.
    • Btrfs je dodao novu strukturu podataka "stripe tree", prikladnu za mapiranje logičkog opsega u situacijama kada se fizička mapiranja ne podudaraju na više uređaja. Struktura se trenutno koristi u implementacijama RAID0 i RAID1 za zonske blok uređaje. U budućnosti ovu strukturu planiraju koristiti u RAID-ovima više razine, što će riješiti niz problema koji postoje u trenutnoj implementaciji.
    • Datotečni sustav Ceph implementira podršku za mapiranje korisničkih ID-ova montiranih datotečnih sustava, koji se koriste za podudaranje datoteka određenog korisnika na montiranoj stranoj particiji s drugim korisnikom na trenutnom sustavu.
    • Dodana je mogućnost određivanja uid-a i gid-a pri montiranju u efivarfs kako bi se procesima bez root-a omogućilo mijenjanje UEFI varijabli.
    • Dodani ioctl pozivi exFAT-u za čitanje i promjenu FS atributa. Dodano rukovanje direktorijima nulte veličine.
    • F2FS implementira mogućnost korištenja 16K blokova.
    • Autofs mehanizam za automatsko montiranje je prebačen da koristi novi API za montiranje particije.
    • OverlayFS nudi opcije montiranja "lowerdir+" i "datadir+". Dodana podrška za ugniježđeno montiranje OverlayFS-a s xattrs.
    • XFS je optimizirao opterećenje CPU-a u kodu za dodjelu blokova u stvarnom vremenu. Omogućena je mogućnost istovremenog izvođenja operacija čitanja i FICLONE.
    • EXT2 kod je pretvoren za korištenje folija stranica.
  • Memorija i usluge sustava
    • Podrška za ia64 arhitekturu koja se koristi u Intel Itanium procesorima, koji su potpuno ukinuti 2021. godine, je prekinuta. Intel je 2001. predstavio procesore Itanium, ali arhitektura ia64 nije se uspjela natjecati s AMD64, uglavnom zbog viših performansi AMD64 i glatkijeg prijelaza s 32-bitnih x86 procesora. Kao rezultat toga, Intelovi interesi su se pomaknuli u korist x86-64 procesora, a Itanium je ostao HP Integrity poslužitelji, čije su narudžbe obustavljene prije tri godine. Kod za podršku za ia64 uklonjen je iz kernela uglavnom zbog dugotrajnog nedostatka podrške za ovu platformu, dok je Linus Torvalds izrazio spremnost vratiti podršku za ia64 u kernel, ali samo ako postoji održavatelj koji može pokazati visoku kvalitetu podrška za ovu platformu izvan glavne jezgre najmanje godinu dana.
    • Dodan parametar naredbe retka jezgre “ia32_emulation”, koji vam omogućuje da omogućite ili onemogućite podršku za emulaciju 32-bitnog načina rada u jezgri izgrađenoj za x86-64 arhitekturu u fazi pokretanja. S praktične strane, nova opcija vam omogućuje da izgradite kernel s podrškom za kompatibilnost s 32-bitnim aplikacijama, ali onemogućite ovaj način prema zadanim postavkama kako biste smanjili vektor napada na kernel, budući da je API kompatibilnosti manje testiran od glavne jezgre sučelja.
    • Nastavak migracije promjena iz grane Rust-for-Linux koje se odnose na korištenje jezika Rust kao drugog jezika za razvoj upravljačkih programa i modula jezgre (podrška za Rust nije aktivna prema zadanim postavkama i ne dovodi do uključivanja Rusta među potrebne montažne ovisnosti za jezgru). Nova verzija čini prijelaz na korištenje izdanja Rust 1.73 i nudi skup povezivanja za rad s radnim redovima.
    • Moguće je koristiti mehanizam binfmt_misc za dodavanje podrške za nove formate izvršnih datoteka (na primjer, za pokretanje kompiliranih Java ili Python aplikacija) unutar zasebnih neprivilegiranih imenskih prostora.
    • Cpuset kontrolera cgroup-a, koji vam omogućuje kontrolu upotrebe CPU jezgri prilikom izvršavanja zadatka, pruža podjelu na lokalno i udaljeno particioniranje, koje se razlikuju po tome je li nadređena cgroup ispravan korijenski odjeljak ili ne. Nove postavke “cpuset.cpus.exclusive” i “cpuset.cpus.excluisve.effective” također su dodane u cpuset za isključivo CPU vezanje.
    • BPF podsustav implementira podršku za iznimke, koje se obrađuju kao hitni izlaz iz BPF programa sa mogućnošću sigurnog odmotavanja okvira snopa. Osim toga, BPF programi dopuštaju korištenje kptr pokazivača u vezi s CPU-om.
    • Podsustavu io_uring dodana je podrška za operacije s futexom i implementirane su nove operacije: IORING_OP_WAITID (asinkrona verzija waitid-a), SOCKET_URING_OP_GETSOCKOPT (opcija getsockoptand), SOCKET_URING_OP_SETSOCKOPT (opcija setsockopt) i IORING_OP_READ_MULTISHOT (višestruke operacije čitanja koje se ne zaustavljaju dok ima podataka ili međuspremnik nije pun).
    • Dodana implementacija laganih jednopovezanih FIFO redova koji zahtijevaju spinlock samo za uklanjanje iz reda čekanja u kontekstu procesa i odbacuju spinlock za atomske dodatke redu u bilo kojem kontekstu.
    • Dodan je prstenasti međuspremnik "objpool" s skalabilnom implementacijom reda čekanja visokih performansi za dodjelu i vraćanje objekata.
    • Početni dio promjena dodan je za implementaciju novog futex2 API-ja, koji ima bolje performanse na NUMA sustavima, podržava veličine osim 32 bita i može se koristiti umjesto multipleksiranog futex() sistemskog poziva.
    • Za ARM32 i S390x arhitekture, dodana je podrška za trenutni skup (cpuv4) BPF instrukcija.
    • Za RISC-V arhitekturu moguće je koristiti način provjere sjenčanog poziva koji je dostupan u Clangu 17, dizajniran za zaštitu od prepisivanja povratne adrese iz funkcije u slučaju prekoračenja međuspremnika na stogu. Bit zaštite je spremiti povratnu adresu u zasebnu "sjenu" stog nakon prijenosa kontrole na funkciju i dohvaćanje te adrese prije izlaska iz funkcije.
    • Mehanizmu za spajanje identičnih memorijskih stranica (KSM: Kernel Samepage Merging) dodan je novi način pametnog skeniranja memorijske stranice koji prati neuspješno skenirane stranice i smanjuje intenzitet njihovog ponovnog skeniranja. Kako biste omogućili novi način rada, dodana je postavka /sys/kernel/mm/ksm/smart_scan.
    • Dodana je nova ioctl naredba PAGEMAP_SCAN, koja vam, kada se koristi s userfaultfd(), omogućuje određivanje činjenica pisanja u određeni raspon memorije. Nova se značajka, na primjer, može koristiti u sustavu za spremanje i vraćanje stanja CRIU procesa ili u sustavima protiv varanja u igrama.
    • U asemblerskom sustavu, ako je Clang kompajler dostupan, asembler primjera korištenja perf podsustava, napisanih kao BPF programi, je standardno omogućen.
    • Stari videobuf sloj, koji se koristio za upravljanje okvirnim međuspremnicima u medijskom podsustavu i koji je zamijenjen novom implementacijom videobuf10 prije više od 2 godina, uklonjen je.
  • Virtualizacija i sigurnost
    • Mogućnost šifriranja podataka u blokovima manjim od veličine bloka u datotečnom sustavu dodana je podsustavu fscrypt. Ovo može biti potrebno za omogućavanje hardverskih mehanizama šifriranja koji podržavaju samo male blokove (na primjer, UFS kontroleri koji podržavaju samo veličinu bloka 4096 mogu se koristiti sa sustavom datoteka s veličinom bloka od 16K).
    • Podsustav “iommufd”, koji vam omogućuje upravljanje tablicama memorijskih stranica IOMMU (I/O Memory-Management Unit) putem deskriptora datoteka iz korisničkog prostora, dodao je praćenje podataka koji još nisu isprani iz predmemorije (prljavo) za DMA operacije, što je neophodno za određivanje memorije s neispranim podacima tijekom migracije procesa.
    • Podrška za definiranje pravila kontrole pristupa za TCP utičnice dodana je Landlock mehanizmu, koji vam omogućuje ograničavanje interakcije grupe procesa s vanjskim okruženjem. Na primjer, možete stvoriti pravilo koje dopušta pristup samo mrežnom priključku 443 za uspostavljanje HTTPS veze.
    • Podsustav AppArmor dodao je mogućnost kontrole pristupa mehanizmu io_uring i kreiranja korisničkih imenskih prostora, što vam omogućuje selektivno dopuštanje pristupa ovim mogućnostima samo određenim procesima.
    • Dodan API za ovjeru virtualnog stroja za provjeru integriteta procesa pokretanja virtualnog stroja.
    • LoongArch sustavi podržavaju virtualizaciju pomoću KVM hipervizora.
    • Pri korištenju KVM hipervizora na RISC-V sustavima pojavila se podrška za ekstenziju Smstateen, koja virtualnom stroju blokira pristup CPU registrima koje hipervizor eksplicitno ne podržava. Dodana je i podrška za korištenje ekstenzije Zicond u gostujućim sustavima, koja dopušta korištenje nekih uvjetnih cjelobrojnih operacija.
    • U sustavima za goste temeljenim na x86 koji rade pod KVM-om, dopušteno je do 4096 virtualnih procesora.
  • Mrežni podsustav
    • Upravljački program NVMe-TCP (NVMe preko TCP-a), koji vam omogućuje pristup NVMe pogonima preko mreže (NVM Express preko Fabrics) pomoću TCP protokola, dodao je podršku za šifriranje kanala prijenosa podataka pomoću TLS-a (koristeći KTLS i pozadinski proces u korisničkom prostoru tlshd za pregovaranje veze).
    • Optimizirane su performanse planera paketa fq (Fair Queuing), što je omogućilo povećanje propusnosti za 5% pod velikim opterećenjem u testu tcp_rr (TCP Request/Response) i za 13% s neograničenim protokom UDP paketa.
    • TCP dodaje izbornu mogućnost mikrosekundne preciznosti vremenske oznake (TCP TS) (RFC 7323), koja omogućuje točniju procjenu latencije i naprednije module za kontrolu zagušenja. Da biste ga omogućili, možete koristiti naredbu “ip route add 10/8 ... features tcp_usec_ts”.
    • TCP stog je dodao podršku za proširenje TCP-AO (TCP Authentication Option, RFC 5925), što omogućuje provjeru TCP zaglavlja pomoću MAC kodova (Message Authentication Code), koristeći modernije algoritme HMAC-SHA1 i CMAC-AES- 128 umjesto prethodno dostupne TCP-MD5 opcije koja se temelji na naslijeđenom MD5 algoritmu.
    • Dodan je novi tip virtualnih mrežnih uređaja “netkit” u kojem se logika prijenosa podataka postavlja pomoću BPF programa.
    • KSMBD, implementacija SMB poslužitelja na razini jezgre, dodala je podršku za rješavanje naziva datoteka koji sadrže zamjenske parove složenih znakova.
    • NFS je poboljšao implementaciju niti s RPC uslugama. Dodana podrška za delegiranje pisanja (za NFSv4.1+). NFSD je dodao podršku za rpc_status netlink rukovatelja. Poboljšana podrška za NFSv4.x klijente prilikom ponovnog izvoza u knfsd.
  • Оборудование
    • Početna podrška za GSP-RM firmware dodana je modulu kernela Nouveau, koji se koristi u NVIDIA RTX 20+ GPU-u za premještanje operacija inicijalizacije i kontrole GPU-a na stranu odvojenog GSP mikrokontrolera (GPU sistemski procesor). Podrška za GSP-RM omogućuje Nouveau upravljačkom programu da radi kroz pozive firmvera, umjesto da izravno programira interakcije hardvera, što olakšava dodavanje podrške za nove NVIDIA GPU-ove korištenjem unaprijed izgrađenih poziva za inicijalizaciju i upravljanje napajanjem.
    • AMDGPU upravljački program podržava GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 i DML2. Poboljšana podrška za besprijekorno učitavanje (bez treperenja pri prebacivanju video moda).
    • Upravljački program i915 dodaje podršku za Intel Meteor Lake čipove i dodaje početnu implementaciju Intel LunarLake (Xe 2).
    • Dodana podrška za asimetrične prijenosne kanale dodane USB4 v2 (120/40G) specifikaciji.
    • Dodana 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 ruterima i NAS-u).
    • Dodana podrška za Fairphone 5 pametni telefon i ARM ploče Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Dodana podrška za RISC-V ploče Milk-V Pioneer i Milk-V Duo.
    • Dodana podrška za zvučna sučelja HUAWEI prijenosnih računala isporučenih s AMD CPU-ima. Dodana podrška za dodatne zvučnike instalirane na prijenosnim računalima Dell Oasis 13/14/16. Dodana podrška za ugrađene zvučnike ASUS K6500ZC. Dodana podrška za indikator isključivanja zvuka na prijenosnim računalima HP 255 G8 i G10. Dodana podrška za acp6.3 audio upravljačke programe. Dodana podrška za Focusrite Clarett+ 2Pre i 4Pre profesionalna sučelja za snimanje.

U isto vrijeme, Latinoamerička zaklada za slobodni softver formirala je verziju potpuno besplatnog kernela 6.7 - Linux-libre 6.7-gnu, očišćenu od elemenata firmvera i upravljačkih programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničen od strane proizvođača. U izdanju 6.7, kod za čišćenje mrljica je ažuriran u raznim upravljačkim programima i podsustavima, na primjer, u upravljačkim programima amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs i btqca. Kod za čišćenje drivera localtalk i rtl8192u je uklonjen zbog njihovog isključivanja iz kernela. Uklonjene su nepotrebne komponente za čišćenje upravljačkih programa xhci-pci, rtl8xxxu i rtw8822b, prethodno dodane greškom. Očišćeni nazivi blobova u dts datotekama za arhitekturu Aarch64. Uklonjene mrlje u novim upravljačkim programima mt7925, tps6598x, aw87390 i aw88399.

Izvor: opennet.ru

Dodajte komentar