Objavljen je Linux jezgra 6.6

Nakon dva mjeseca razvoja, Linus Torvalds je predstavio izdanje jezgre Linux 6.6. Među najznačajnijim promjenama su: novi planer zadataka EEVDF; mehanizam sjenila stoga za zaštitu od učestalih napada; podrška za fs-verity u OverlayFS; implementacija kvota i xattr u tmpfs; priprema online fsck u XFS; pojačano praćenje izvoza simbola „samo GPL“; podrška za mrežne sokete u io_uring; nasumičnost memorije u kmalloc(); ReiserFS je označen kao zastario; dodani su primitivni za Vulkan drajver NVK u Nouveau.

U novu verziju uključeno je 15291 ispravki od 2058 programera, veličina zakrpe je 39 MB (promjene su se odnosile na 14844 datoteka, dodano je 553359 redaka koda, uklonjeno 284012 redaka). U prethodnom izdanju bilo je 14674 ispravki od 2016 programera, veličina zakrpe je 78 MB. Oko 44% svih promjena u 6.6 odnosi se na upravljačke programe uređaja, otprilike 17% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 11% se odnosi na mrežni sloj, 4% na datotečne sustave i 3% na unutarnje pod-sustave jezgre.

Glavne novosti u jezgri 6.6:

  • Memorija i sistemske usluge
    • Implementiran je novi planer zadataka EEVDF (Earliest Eligible Virtual Deadline First), koji je zamijenio planer CFS (Completely Fair Scheduler) koji se koristio od jezgre 2.6.23. Novi planer, prilikom izbora sljedećeg procesa za izvršavanje, uzima u obzir procese koji nisu dobili dovoljno procesorskih resursa ili su nezasluženo dobili previše procesorskog vremena. U prvom slučaju, kontrola se prisilno prenosi na proces, dok se u drugom slučaju odlaže. Stari planer CFS koristio je heuristiku i fino podešavanje za određivanje procesa koji zahtijevaju posebnu pažnju, dok novi planer prati njihovo stanje jasnije i ne zahtijeva fino podešavanje. Pretpostavlja se da će EEVDF smanjiti latenciju pri izvršavanju zadataka za koje je CFS imao problema s planiranjem.
    • Izvršene su promjene u obradi unutarnjih simbola kategorije «GPL-only», usmjerene na otežavanje korištenja proprietarnim modulima GPL slojeva za zaobilaženje ograničenja pristupa podsustavima jezgre, koji dopuštaju pristup samo kodu pod GPL licencom. U funkciji symbol_get() za proprietarne module zabranjeno je pretraživanje simbola označenih kao GPL-only, a obrnuto, GPL moduli neće moći nalaziti simbole koje izlažu proprietarni moduli.
    • Dodane su dodatne postavke radnih redova (unbound workqueue) za povećanje učinkovitosti ponovnog korištenja procesorskog cache-a na velikim sustavima s više trećih razina cache-a (L3). U jezgru je također uključena alatka tools/workqueue/wq_dump.py za provjeru trenutačne konfiguracije radnih redova.
    • U podsustav io_uring dodana je početna podrška za operacije i naredbe specifične za mrežne sokete. Dodan je sysctl io_uring_disabled za onemogućavanje io_uring na razini cijelog sustava. Također, u io_uring znatno je ubrzan izravni ulaz/izlaz (Direct I/O) u asinkronom režimu. Povećanje propusnosti i smanjenje latencije tijekom izvođenja operacija ulaza-izlaza nakon izvršenih promjena iznosi 37%.
    • Za arhitekturu PA-RISC implementiran je JIT kompajler za BPF.
    • U postavku /sys/devices/system/cpu/smt/control dodana je podrška za numeričke parametre koji definiraju broj niti dostupnih za svako CPU jezgro (ranije su bila podržana samo vrijednosti «on» i «off» za uključivanje i isključivanje podrške simetričkog multithreading-a). Nova mogućnost može se primijeniti na nekim PowerPC procesorima koji podržavaju način vrućeg uključivanja simetričkog multithreading-a («hotplug SMT»), za selektivno uključivanje SMT na određenim jezgrama tijekom rada.
    • Nastavlja se prijenos promjena iz grane Rust-for-Linux, povezanih s korištenjem 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 obavezne zavisnosti za gradnju jezgre). Opravljen je prijelaz na korištenje izdanja Rust 1.71.1 i bindgen 0.65.1. Implementiran je koncept ‘Zeroable’. Dodani su proceduralni makrosi ‘paste!’ i ‘#[derive(Zeroable)]’. Osigurana je kompatibilnost s ‘#[pin_data]’. Dodane su funkcije inicijalizacije ‘{,pin_}init_array_from_fn()’ i metoda ‘{,pin_}chain’. Proširene su mogućnosti modula ‘types’. U okvir za unit testiranje kunit dodana je mogućnost pokretanja testova iz dokumentacije Rusta.
    • Dodana je podsubsystem ‘eventfs’, koja značajno smanjuje potrošnju memorije u sustavu praćenja, eliminirajući potrebu za pohranom dodatnih struktura koje se koriste za predstavljanje točaka praćenja u datotečnom sustavu. Ranije su se slične strukture stvarale za sve točke praćenja, bez obzira na korištenje praćenja. Uz pomoć eventfs-a, takve strukture mogu se dinamički stvarati samo kada je to potrebno.
    • Proširene su mogućnosti alata perf.
    • U datoteku /proc/pid/smaps dodane su informacije za dijagnostiku učinkovitosti rada mehanizma spajanja identičnih stranica memorije (KSM, Kernel Samepage Merging).
    • Uklonjen je API Frontswap, koji je omogućavao smještaj particije zamjene u memoriji koja se ne može izravno adresirati i koja ne daje operativne informacije o dostupnosti slobodnog prostora. Ovaj API je korišten samo u zswap-u, pa je odlučeno izravno koristiti ovu funkcionalnost u zswap-u, oslobodivši se suvišnih slojeva.
    • Za arhitekturu RISC-V dodana je podrška za pristup brojačima performansi iz korisničkog prostora i mogućnost smještanja dumpa jezgre nakon kvara na području izvan 4GB.
    • Dodana je početna podrška za instrukcije ARM SME (Scalable Matrix Extension).
    • Implementirana je mogućnost korištenja alata za ispravljanje grešaka KDB, KGDB, kcov, KFENCE i KASAN na sustavima s arhitekturom LoongArch.
    • Dodana je podrška za datoteke za testiranje jezgre u sustavu kontinuirane integracije GitLab, koji se koristi pri razvoju grafičkih upravljačkih programa.
  • Sistem diska, ulaz/izlaz i datotečni sustavi
    • Sustav datoteka OverlayFS dodao je podršku za pohranu hash-eva fs-verity u proširenom atributu (xattr) overlay.verity, što se može koristiti za provjeru cjelovitosti i autentičnosti datoteka u donjim slojevima OverlayFS pomoću kriptografskih hash-eva i ključeva. Tako su u OverlayFS sada uključene sve promjene potrebne projektu Composefs za rad u obliku nadogradnje nad FS OverlayFS i EROFS.
    • U datotečnom sustavu XFS provedena je priprema za implementaciju mogućnosti korištenja alata fsck za provjeru i ispravljanje otkrivenih problema u online režimu, bez odmontiranja datotečnog sustava. Osim toga, u XFS je omogućena upotreba velikih folija (folios) u stranicama predmemorije, te su dodane neke povezane optimizacije koje su značajno povećale performanse za određene vrste opterećenja.
    • U datotečnom sustavu tmpfs dodana je podrška za korisničke proširene atribute (user xattrs), izravni ulaz/izlaz i kvote povezane s korisnikom i grupom. Stabilizirane su offsete u direktorijima, što je riješilo probleme s izvozom tmpfs putem NFS-a.
    • U API-ju za upravljanje montiranjem dodana je zastavica FSCONFIG_CMD_CREATE_EXCL za poboljšanje sigurnosti, koja zabranjuje zajedničko korištenje superbloka na više montiranja (zabranjuje povezivanje jedne particije na više montažnih točaka). U alatu mount predložena je opcija „—exclusive“ za aktiviranje ove zastavice.
    • U podsustav VFS dodana je podrška za trenutačne promjene parametara s vremenom pristupa i izmjene (atime, mtime). Ranije su podaci o vremenu reflektirani s određenim kašnjenjem, što je ometalo praćenje ažurnosti podataka u predmemoriji u sustavima poput NFS-a (zbog kašnjenja u utvrđivanju promjena u datoteci, sustav bi mogao pogrešno smatrati da su podaci u predmemoriji ažurni). Nova mogućnost dostupna je za Btrfs, Ext4, tmpfs i XFS.
    • U Btrfs je označen zastarjelim ugrađeni mehanizam za provjeru cjelovitosti, koji se aktivira tijekom izgradnje putem parametra BTRFS_FS_CHECK_INTEGRITY. Naveden mehanizam ostavljen je bez podrške, više se ne testira i stvara dodatno opterećenje na CPU i memoriju. Osim toga, u Btrfs je izvršena optimizacija performansi novog koda za provjeru FS-a (scrub).
    • U datotečnom sustavu Ext4 dodane su povremene provjere ažuriranja superbloka i ubrzane operacije dodjele memorije prilikom dopisivanja na kraj datoteke.
    • U FUSE podsustav dodana je podrška za atribut btime („vrijeme stvaranja”), koji definira vrijeme stvaranja inode-a.
    • Zabranjena je promjena prava pristupa za simboličke poveznice.
    • Dodana je sistemska funkcija fchmodat2(), koja se razlikuje od sistemske funkcije fchmodat() dodatnim argumentom za indikaciju zastavica. Od zastavica trenutno se podržavaju samo AT_SYMLINK_NOFOLLOW i AT_EMPTY_PATH, koje omogućuju bezobilaženje prilikom implementacije zabrane dereferenciranja simboličkih poveznica i mogućnost korištenja datotečnog deskriptora pri navođenju praznog puta.
    • U datotečnom sustavu EROFS (Extendable Read-Only File System), namijenjenom za korištenje na particijama dostupnim samo za čitanje, dodana je podrška za algoritam kompresije Deflate. Za ubrzanje pretraživanja proširenih atributa korištena je vjerojatnosna struktura bloom filter.
    • Dodana je postavka CONFIG_BUFFER_HEAD, koja omogućuje izgradnju jezgre bez korištenja strukture buffer_head. Prilikom izgradnje bez buffer_head mogu se koristiti blok uređaji i neka FS, poput xfs, btrfs, cramfs, erofs i squashfs.
    • U upravljaču blok uređaja ublk, koji omogućuje premještanje specifične logike na stranu procesa u korisničkom prostoru, dodana je podrška za zonirane uređaje za pohranu (podjela u zone grupa blokova ili sektora, u koje je dopušteno isključivo sekvencijalno dodavanje podataka uz ažuriranje cijele grupe blokova).
    • Implementacija datotečnog sustava ReiserFS prebačena je iz kategorije podržanih u razred zastarjelih (Obsolete). Prekid podrške za ReiserFS planiran je za 2025. godinu. Kao razlog za prebacivanje ReiserFS u razred zastarjelih navodi se stagnacija u održavanju ovog FS-a, neriješeni problem 2038. godine, nedostatak mogućnosti za osiguranje otpornosti na greške i želja za smanjenjem radne opterećenosti u održavanju zajedničkih promjena za datotečne sustave povezano s podrškom novom API-ju za montažu, iomap i folijantima (folios).
    • U NFS poslužitelju implementiran je mehanizam delegiranja operacija pisanja za NFSv4, koji poboljšava učinkovitost keširanja pisanja datoteka radi smanjenja prometa. Uključena je podrška za operaciju READ_PLUS, definiranu u NFS 4.2.
    • U datotečni sustav Ceph dodana je podrška za fscrypt.
  • Virtualizacija i sigurnost
    • Dodana je implementacija mehanizma Shadow Stack, koji omogućuje blokiranje rada mnogih eksploita koristeći hardverske mogućnosti Intel procesora za zaštitu od prepisivanja adrese povratka iz funkcije u slučaju prepunjenja bafera na stogu. Suština zaštite je u tome što nakon prijenosa kontrole funkciji, adresu povratka procesor pohranjuje ne samo u običnom stogu, već i u posebnom "sjenovitom" stogu, koji se ne može izravno mijenjati. Prije izlaska iz funkcije, adresa povratka vadi se iz sjenovitog stoga i provjerava s adresom povratka iz glavnog stoga. Nepoklapanje adresa dovodi do generiranja iznimke, koja blokira situacije kada je exploit uspio prepisati adresu u glavnom stogu. Hardverski sjenoviti stog podržan je samo u 64-bitnim izdanjima, dok u 32-bitnim izdanjima dolazi do programske emulacije.
    • Dodana je podrška za izradu s Clang prevoditeljem s uključenim načinom zaštite CFI (Control Flow Integrity), koji blokira kršenja normalnog redoslijeda izvršavanja (control flow) kao rezultat upotrebe eksplojta koji mijenja pohranjene u memoriji pokazivače na funkcije.
    • Za arhitekturu RISC-V uključena je randomizacija položaja jezgre u memoriji prilikom učitavanja.
    • U sustavni poziv seccomp() dodana je zastavica SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP, koja omogućuje obradu događaja iz praćenih procesa u sinkronom načinu radi učinkovitijeg rada planera zadataka.
    • U funkciji kmalloc() osigurana je randomizacija slab-cacheova, otežavajući iskorištavanje ranjivosti u kernelu.
    • Iz opcija vezanih uz uključivanje sustava prisilne kontrole pristupa SELinux uklonjeno je spominjanje Američke agencije za nacionalnu sigurnost. Budući da projekt već 20 godina razvija pod okriljem zajednice i prati ga neovisni održavatelji, odlučeno je da se pređe na korištenje imena "SELinux" umjesto "NSA SELinux" u komentarima i dokumentaciji unutar Kconfig-a (na primjer, objašnjenje za parametar gradnje SECURITY_SELINUX promijenjeno je s "NSA SELinux Support" na "SELinux Support").
    • U sustavni poziv userfaultfd() dodana je operacija UFFDIO_POISON, koja omogućuje označavanje stranica memorije kao "otrovan" (poisoned), što se može iskoristiti za premještanje oštećenih stranica memorije prilikom migracije virtualnih mašina s jednog sustava na drugi.
    • U VFIO podsustavu dodan je novi simbolički sučelje (/dev/vfio/devices/vfioX) za upravljanje VFIO uređajima, omogućujući korisniku da izravno otvori datoteku s uređajem, bez pozivanja zastarjelog grupnog sučelja /dev/vfio/$groupID.
    • U serveru NFS je prestao podržavati zastarjele tipove enkripcije Kerberos, koji koriste DES i 3DES algoritme.
    • Pri pokretanju u Hyper-V hipervizorskom okruženju dodana je podrška za gostujuće sustave zaštićene tehnologijom AMD SEV-SNP (Secure Nested Paging) i Intel TDX (Trusted Domain Extensions).
    • Prilikom kompilacije jezgre u načinu „W=1“ u zadanom kompajleru uključena su upozorenja „-Wformat-overflow“, „-Wformat-truncation“, „-Wstringop-overflow“ i „-Wrestrict“. Za sve kompilacije uključeno je upozorenje „-Wenum-conversion“.
  • Mrežni subsistem
    • Implementacija AF_XDP (eXpress Data Path) adresa proširena je mogućnošću rada s paketima pohranjenim u više međuspremnika (npr., jedan međuspremnik može sadržavati zaglavlje paketa, a drugi podatke, ili u lancu od više međuspremnika mogu biti smješteni veliki jumbo okviri Ethernet). Programi koji koriste AF_XDP sokete sada mogu primati i slati pakete iz više međuspremnika.
    • U BPF je dodana podrška za defragmentaciju IPv4 i IPv6 paketa, kao i mogućnost filtriranja fragmentiranih paketa.
    • U BPF je dodan novi handler update_socket_protocol, omogućavajući BPF programima da mijenjaju zatraženi protokol za nove sokete. Na primjer, BPF program može neprimjetno zamijeniti TCP protokol s MPTCP (multipath TCP) radi optimizacije aplikacijskog prometa. U BPF je također dodana podrška za upravljanje rutiranjem paketa kroz različite tokove u MPTCP-u.
    • Uklonjena je oznaka eksperimentalnog razvoja s modula ksmbd, koji nudi implementaciju datotečnog poslužitelja na razini jezgre temeljenog na SMB3 protokolu. Dodana je podrška za spajanje operacija čitanja (upiti „read compound“).
  • Oprema
    • U DRM podsustavu (Direct Rendering Manager) unesene su promjene potrebne za učinkovito djelovanje otvorenog NVK drajvera s implementacijom Vulkan grafičkog API-ja za NVIDIA grafičke kartice. Izvorno je DRM drajver Nouveau bio osmišljen za implementaciju OpenGL-a, pa mu nedostaju primitives potrebne za učinkovito djelovanje Vulkan drajvera, poput podrške za sinkronizirane objekte i upravljanje virtualnim adresnim prostorom.
    • U AMDGPU upravljaču implementirana je podrška za SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 i GFX 9.4.3. Redizajniran je kod za učitavanje PSP (Platform Security Processor) firmvera. Proširena je podrška za tehnologiju adaptivne sinhronizacije FreeSync (dodana je podrška za Freesync Panel Replay V2).
    • U i915 upravljaču nastavljena je implementacija podrške za Intel Meteor Lake čipove. Poboljšana je podrška za HDCP (High-bandwidth Digital Content Protection) tehnologiju zaštite od kopiranja. Redizajniran je kod za interakciju s ekranom.
    • Iz Kconfig-a su uklonjene opcije za isključivanje učitavanja mikro koda tokom faze izgradnje — MICROCODE_INTEL i MICROCODE_AMD. Jezgra se sada uvijek gradi s kodom za učitavanje mikro koda za x86 sisteme, ali se zapravo učitavanje mikro koda može isključiti postavljanjem kernel parametra 'dis_ucode_ldr'.
    • Zvukovnom podsistemu dodana je mogućnost upravljanja zvučnim uređajima priključenim putem IIO (Industrial I/O) podsistema.
    • Dodana je podrška za Intel LunarLake, Intel ArrowLake i AMD ACP5x zvučne sučelje, Cirrus Logic CS42L43, Realtek RT1017 i TI TAS2781 kodeke, kao i pojačala Cirrus Logic CS35L56 i winic aw88261. Dodana je podrška za ASoC AMD Van Gogh.
    • Dodan je USB MIDI 2.0 Gadget upravljač, koji emulira USB MIDI 2.0 sučelje, vezano uz ALSA UMP rawmidi uređaj.
    • Dodana je podrška za Ethernet kontrolere Broadcom ASP 2.0 i Marvell 88Q2XXX.
    • Dodana je podrška za Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 i EDT ET028013DMA panele, kontrolere za ekran Loongson i kontrolere za dodirne ekrane Azoteq IQS7222D/IQS7210A/7211A.
    • Dodana je podrška za ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7).
    • Dodana je podrška za ARM platforme Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3, Radxa ROCK 4SE.

Istovremeno, Latinskoamerička Zaklada za slobodan softver formirala je potpuno slobodnu verziju jezgre 6.6 — Linux-libre 6.6-gnu, očišćenu od elemenata firmvera i upravljača koji sadrže neslobodne komponente ili dijelove koda čija je primjena ograničena od strane proizvođača. U izdanju 6.6 ažuriran je kod za čišćenje blobova u raznim upravljačima i podsistemima, kao što su TI gigabit RU ethernet upravljači, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-audio i aw88261 SoC. Održano je čišćenje imena blobova u dts datotekama za Aarch64 arhitekturu. Blobovi su uklonjeni iz novih ivpu upravljača, bluetooth upravljača, upravljača za dodirne ekrane i kodirača/dekodera Qualcomm Venus V4L2.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster