Izdanje kernela Linux 6.7

Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje Linux kernela 6.7. Među najznačajnijim promenama: integracija Bcachefs sistema datoteka, ukidanje podrške za Itanium arhitekturu, mogućnost Nouvee da radi sa GSP-R firmverom, podrška za TLS enkripciju u NVMe-TCP, mogućnost korišćenja izuzetaka u BPF-u, podrška za futex u io_uringu, optimizacija performansi planera fq (Fair Queuing), podrška za TCP-AO ekstenziju (TCP Authentication Opcija) i mogućnost ograničavanja mrežnih veza u sigurnosnom mehanizmu Landlock, dodata kontrola pristupa korisničkom imenskom prostoru i io_uring preko AppArmor.

Nova verzija uključuje 18405 popravki od 2066 programera, veličina zakrpe je 72 MB (promjene su uticale na 13467 datoteka, dodano je 906147 linija koda, 341048 linija je obrisano). Posljednje izdanje je imalo 15291 popravka od 2058 programera, veličina zakrpe je bila 39 MB. Oko 45% svih promjena uvedenih u 6.7 odnosi se na drajvere uređaja, otprilike 14% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stog, 5% se odnosi na sistem datoteka i 3% odnose se na interne podsisteme kernela.

Ključne inovacije u kernelu 6.7:

  • Diskovni podsistem, I/O i sistemi datoteka
    • Kernel usvaja kod sistema datoteka Bcachefs, koji pokušava da postigne performanse, pouzdanost i skalabilnost XFS-a, u kombinaciji sa elementima napredne funkcionalnosti koja se nalazi u Btrfs i ZFS. Na primjer, Bcachefs podržava funkcije kao što su uključivanje više uređaja u particiju, višeslojni raspored diskova (donji sloj s često korištenim podacima zasnovanim na brzim SSD-ovima, a gornji sloj s manje korištenim podacima s tvrdih diskova), replikacija (RAID 1/10), keširanje, transparentna kompresija podataka (LZ4, gzip i ZSTD načini), rezovi stanja (snimci), provjera integriteta pomoću kontrolnih suma, mogućnost pohranjivanja Reed-Solomon kodova za ispravljanje grešaka (RAID 5/6), pohranjivanje informacija u šifrirani oblik (koriste se ChaCha20 i Poly1305). U pogledu performansi, Bcachefs je ispred Btrfs-a i drugih sistema datoteka zasnovanih na mehanizmu Copy-on-Write, i pokazuje radnu brzinu blizu Ext4 i XFS.
    • Sistem datoteka Btrfs uvodi pojednostavljeni režim kvote koji vam omogućava da postignete veće performanse praćenjem ekstenata samo u podparticiji u kojoj su kreirani, što značajno pojednostavljuje proračune i poboljšava performanse, ali vam ne dozvoljava da uzmete u obzir ekstente koji se dele u nekoliko podparticije.
    • Btrfs je dodao novu strukturu podataka "stripe tree", pogodnu za mapiranje logičkog opsega u situacijama kada se fizička mapiranja ne podudaraju na različitim uređajima. Struktura se trenutno koristi u implementacijama RAID0 i RAID1 za zonirane blok uređaje. U budućnosti planiraju koristiti ovu strukturu u RAID-ovima višeg nivoa, što će riješiti niz problema koji postoje u trenutnoj implementaciji.
    • Ceph sistem datoteka implementira podršku za mapiranje korisničkih ID-ova montiranih sistema datoteka, koji se koriste za uparivanje datoteka određenog korisnika na montiranoj stranoj particiji sa drugim korisnikom na trenutnom sistemu.
    • Dodata je mogućnost specificiranja uid-a i gid-a pri montiranju na efivarfs kako bi se omogućilo nekorijenskim procesima da mijenjaju UEFI varijable.
    • Dodati ioctl pozivi u exFAT za čitanje i promjenu FS atributa. Dodato rukovanje direktorijumima nulte veličine.
    • F2FS implementira mogućnost korištenja 16K blokova.
    • Mehanizam autofs automount je prebačen da koristi novi API za montiranje particija.
    • OverlayFS nudi opcije montiranja "lowerdir+" i "datadir+". Dodata podrška za ugniježđeno montiranje OverlayFS-a sa xattrs-om.
    • XFS je optimizirao CPU opterećenje u kodu za dodjelu blokova u realnom vremenu. Omogućena je mogućnost istovremenog izvođenja operacija čitanja i FICLONE.
    • EXT2 kod je pretvoren da koristi folije stranica.
  • Memorijski i sistemski servisi
    • Podrška za ia64 arhitekturu koja se koristi u Intel Itanium procesorima, koji su u potpunosti ukinuta 2021. godine, je ukinuta. Itanium procesore je Intel predstavio 2001. godine, ali ia64 arhitektura nije uspela da se takmiči sa AMD64, uglavnom zbog viših performansi AMD64 i lakšeg prelaska sa 32-bitnih x86 procesora. Kao rezultat toga, Intelovi interesi su se pomerili u korist x86-64 procesora, a Itaniumov deo su ostali HP Integrity serveri, čije su narudžbe obustavljene pre tri godine. Kod za ia64 podršku je uklonjen iz kernela uglavnom zbog dugogodišnjeg nedostatka podrške za ovu platformu, dok je Linus Torvalds izrazio spremnost da vrati podršku za ia64 kernelu, ali samo ako postoji održavatelj koji može pokazati visoku kvalitetu. održavanje ove platforme izvan glavnog kernela najmanje godinu dana.
    • Dodan je komandni parametar linije kernela “ia32_emulation”, koji vam omogućava da omogućite ili onemogućite podršku za 32-bitnu emulaciju u kernelima napravljenim za arhitekturu x86-64 u fazi pokretanja. S praktične strane, nova opcija vam omogućava da izgradite kernel s podrškom za kompatibilnost sa 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 glavnog kernela interfejsi.
    • Nastavak migracije izmjena iz grane Rust-for-Linux u vezi s korištenjem Rust jezika kao drugog jezika za razvoj drajvera i modula kernela (Rust podrška nije aktivna po defaultu i ne dovodi do uključivanja Rusta među potrebne ovisnosti sklopa za kernel). Nova verzija prelazi na korištenje Rust 1.73 izdanja i nudi skup vezivanja za rad sa redovima rada.
    • Moguće je koristiti mehanizam binfmt_misc za dodavanje podrške za nove formate izvršnih datoteka (na primjer, za pokretanje kompajliranih Java ili Python aplikacija) unutar zasebnih neprivilegiranih imenskih prostora.
    • Cpuset kontrolera cgroup, koji vam omogućava da kontrolišete upotrebu CPU jezgri prilikom izvršavanja zadatka, pruža podjelu na lokalno i udaljeno particioniranje, koje se razlikuju po tome da li je roditeljska cgroup ispravan korijenski odjeljak ili ne. Nove postavke “cpuset.cpus.exclusive” i “cpuset.cpus.excluisve.effective” su također dodane u cpuset za ekskluzivno CPU povezivanje.
    • BPF podsistem implementira podršku za izuzetke, koji se obrađuju kao izlaz u slučaju nužde iz BPF programa sa mogućnošću sigurnog odmotavanja stek okvira. Pored toga, BPF programi dozvoljavaju upotrebu kptr pokazivača u vezi sa CPU-om.
    • Podsistemu io_uring dodata je podrška za operacije sa futexom, a implementirane su i nove operacije: IORING_OP_WAITID (asinhrona verzija waitid-a), SOCKET_URING_OP_GETSOCKOPT (getsockoptand opcija), SOCKET_URING_OP_SETSOCKOPT (opcija setsocORSTOPLE da ne čitaj) i operacija koja ne čitaj IOSCOCKOPTI dok ima podataka ili nije pun bafer).
    • Dodata implementacija laganih jednostruko povezanih FIFO redova koji zahtijevaju spinlock samo za dequeue u kontekstu procesa i oslobode se spinlocka za atomske dodatke u red u bilo kojem kontekstu.
    • Dodan je prstenasti bafer "objpool" sa skalabilnom implementacijom reda visokih performansi za dodjelu i vraćanje objekata.
    • Početni dio izmjena je dodat da implementira novi futex2 API, koji ima bolje performanse na NUMA sistemima, podržava veličine različite od 32 bita i može se koristiti umjesto multipleksiranog futex() sistemskog poziva.
    • Za ARM32 i S390x arhitekture, dodata je podrška za trenutni skup (cpuv4) BPF instrukcija.
    • Za RISC-V arhitekturu, moguće je koristiti način provjere Shadow-Call Stack-a dostupan u Clang 17, dizajniran da zaštiti od prepisivanja povratne adrese iz funkcije u slučaju prekoračenja bafera na steku. Suština zaštite je da se povratna adresa sačuva u zasebnom steku „senka“ nakon prenosa kontrole na funkciju i preuzimanja ove adrese pre izlaska iz funkcije.
    • Mehanizmu za spajanje identičnih memorijskih stranica (KSM: Kernel Samepage Merging) dodat je novi način skeniranja pametnih memorijskih stranica, koji prati neuspješno skenirane stranice i smanjuje intenzitet njihovog ponovnog skeniranja. Da biste omogućili novi način rada, dodata je postavka /sys/kernel/mm/ksm/smart_scan.
    • Dodana je nova ioctl naredba PAGEMAP_SCAN, koja, kada se koristi sa userfaultfd(), omogućava vam da odredite činjenice pisanja u određeni memorijski opseg. Nova funkcija, na primjer, može se koristiti u sistemu za spremanje i vraćanje stanja CRIU procesa ili u sistemima protiv varanja igara.
    • U asemblerskom sistemu, ako je Clang kompajler dostupan, sklapanje primera korišćenja perf podsistema, napisanih kao BPF programi, je omogućeno podrazumevano.
    • Stari sloj videobuf-a, koji se koristio za upravljanje baferima okvira u medijskom podsistemu, a zamijenjen je novom implementacijom videobuf10 prije više od 2 godina, uklonjen je.
  • Virtuelizacija i sigurnost
    • Mogućnost šifriranja podataka u blokovima manjim od veličine bloka u sistemu datoteka dodata je fscrypt podsistemu. Ovo može biti potrebno da bi se omogućili mehanizmi hardverskog šifriranja koji podržavaju samo male blokove (na primjer, UFS kontroleri koji podržavaju samo blok veličine 4096 mogu se koristiti sa sistemom datoteka s veličinom bloka od 16K).
    • “iommufd” podsistem, koji vam omogućava da upravljate 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 keša (prljavo) za DMA operacije, što je neophodno za određivanje memorije sa neispranim podacima tokom migracije procesa.
    • Podrška za definisanje pravila kontrole pristupa za TCP utičnice je dodata mehanizmu Landlock, koji vam omogućava da ograničite interakciju grupe procesa sa spoljnim okruženjem. Na primjer, možete kreirati pravilo koje dozvoljava pristup samo mrežnom portu 443 za uspostavljanje HTTPS veza.
    • AppArmor podsistem je dodao mogućnost kontrole pristupa mehanizmu io_uring i kreiranja korisničkih imenskih prostora, što vam omogućava da selektivno dozvolite pristup ovim mogućnostima samo određenim procesima.
    • Dodan API za potvrdu virtuelne mašine za provjeru integriteta procesa pokretanja virtualne mašine.
    • LoongArch sistemi podržavaju virtuelizaciju pomoću KVM hipervizora.
    • Kada se koristi KVM hipervizor na RISC-V sistemima, pojavila se podrška za ekstenziju Smstateen, koja blokira virtuelnu mašinu da pristupi registrima CPU-a koje hipervizor eksplicitno ne podržava. Takođe je dodana podrška za upotrebu ekstenzije Zicond u sistemima za goste, što omogućava upotrebu nekih uslovnih celobrojnih operacija.
    • U sistemima za goste baziranim na x86 koji rade pod KVM-om, dozvoljeno je do 4096 virtuelnih CPU-a.
  • Mrežni podsistem
    • NVMe-TCP (NVMe over TCP) drajver, koji vam omogućava pristup NVMe diskovima preko mreže (NVM Express over Fabrics) koristeći TCP protokol, dodao je podršku za šifriranje kanala za prijenos podataka koristeći TLS (koristeći KTLS i pozadinski proces u korisničkom prostoru tlshd za pregovaranje o vezi).
    • Performanse planera paketa fq (Fair Queuing) su optimizovane, što je omogućilo povećanje propusnosti za 5% pod velikim opterećenjem u tcp_rr (TCP Request/Response) testu i za 13% sa neograničenim protokom UDP paketa.
    • TCP dodaje opcionu mogućnost mikrosekundne preciznosti vremenske oznake (TCP TS) (RFC 7323), koja omogućava precizniju procenu kašnjenja 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 TCP-AO ekstenziju (TCP Authentication Option, RFC 5925), što omogućava provjeru TCP zaglavlja korištenjem MAC kodova (Message Authentication Code), koristeći modernije algoritame HMAC-SHA1 i CMAC-AES- 128 umjesto ranije dostupna TCP-MD5 opcija zasnovana na naslijeđenom MD5 algoritmu.
    • Dodan je novi tip virtuelnih mrežnih uređaja „netkit“, čija se logika prenosa podataka postavlja pomoću BPF programa.
    • KSMBD, implementacija SMB servera na nivou kernela, dodala je podršku za rješavanje imena datoteka koje sadrže surogat parove složenih znakova.
    • NFS je poboljšao implementaciju niti sa RPC servisima. Dodata podrška za delegiranje pisanja (za NFSv4.1+). NFSD je dodao podršku za rpc_status netlink handler. Poboljšana podrška za NFSv4.x klijente prilikom ponovnog izvoza u knfsd.
  • Oprema
    • Početna podrška za GSP-RM firmver dodata je modulu jezgre Nouveau, koji se koristi u NVIDIA RTX 20+ GPU-u za premještanje operacija inicijalizacije i kontrole GPU-a na stranu zasebnog GSP mikrokontrolera (GPU sistemski procesor). GSP-RM podrška omogućava Nouveau drajveru da radi kroz pozive firmvera, umjesto da direktno programira hardverske interakcije, što čini mnogo lakšim dodavanje podrške za nove NVIDIA GPU-ove korištenjem unaprijed izgrađenih poziva za inicijalizaciju i upravljanje napajanjem.
    • AMDGPU drajver 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 neometano učitavanje (bez treperenja prilikom prebacivanja video moda).
    • i915 drajver dodaje podršku za Intel Meteor Lake čipove i dodaje početnu implementaciju Intel LunarLake (Xe 2).
    • Dodata podrška za asimetrične kanale prenosa dodana specifikaciji USB4 v2 (120/40G).
    • Dodata 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).
    • Dodata 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.
    • Dodata podrška za RISC-V ploče Milk-V Pioneer i Milk-V Duo.
    • Dodata podrška za audio interfejse HUAWEI laptop računara koji se isporučuju sa AMD procesorima. Dodata podrška za dodatne zvučnike instalirane na laptopovima Dell Oasis 13/14/16. Dodata podrška za ugrađene zvučnike ASUS K6500ZC. Dodata podrška za indikator isključivanja zvuka na laptopima HP 255 G8 i G10. Dodata podrška za acp6.3 audio drajvere. Dodata podrška za Focusrite Clarett+ 2Pre i 4Pre profesionalne interfejse za snimanje.

Istovremeno, Latinoamerička fondacija za slobodni softver formirala je verziju potpuno besplatnog kernela 6.7 - Linux-libre 6.7-gnu, očišćenu od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili sekcije koda, čiji je opseg ograničen. od strane proizvođača. U izdanju 6.7, kod za čišćenje blob-a je ažuriran u različitim drajverima i podsistemima, na primjer, u drajverima amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs i btqca. Kod za čišćenje drajvera localtalk i rtl8192u je uklonjen zbog njihovog isključenja iz kernela. Uklonjene nepotrebne komponente za čišćenje xhci-pci, rtl8xxxu i rtw8822b drajvera, prethodno dodati greškom. Očišćena imena blobova u dts datotekama za arhitekturu Aarch64. Uklonjene mrlje u novim drajverima mt7925, tps6598x, aw87390 i aw88399.

izvor: opennet.ru

Dodajte komentar