Po dveh mesecih razvoja je Linus Torvalds predstavil izdajo jedra Linux 6.10. Med najbolj opaznimi spremembami so: gonilnik ntsync s primitivami za sinhronizacijo Windows NT, komponente DRM Panic za izvajanje analoga »modrega zaslona smrti«, prenehanje podpore za stare CPU Alpha, možnost verifikacije celovitosti v FS na osnovi FUSE, omejitev dostopa do ioctl prek mehanizma Landlock, podnosistem za profiliranje operacij dodeljevanja pomnilnika, sistemski klic mseal(), možnost šifrirane izmenjave podatkov z napravami TPM, podpora za visokoprioritetne delovne vrste v dm-crypt, gonilnik panthor za deseto generacijo GPU Mali.
V novo različico je bilo sprejetih 14564 popravkov od 1989 razvijalcev, velikost popravka pa znaša 41 MB (spremembe so vplivale na 12509 datotek, dodanih je bilo 547663 vrstic kode, odstranjenih 312464 vrstic). V prejšnji izdaji je bilo 15680 popravkov od 2106 razvijalcev, velikost popravka pa je znašala 54 MB. Približno 41% vseh predstavljenih sprememb v 6.10 se nanaša na gonilnike naprav, približno 15% sprememb se nanaša na posodobitev kode, specifične za strojne arhitekture, 13% se nanaša na omrežni sklad, 5% na datotečne sisteme in 4% na notranje podnosisteme jedra.
Osnovne novosti v jedru 6.10:
- Дисковая подсистема, ввод/вывод и файловые системы
- Dodana je nova fcntl-operacija F_DUPFD_QUERY, s katero lahko proces ugotovi, da se dva različna datotečna deskriptorja nanašata na isto datoteko. V nasprotju s podobnimi možnostmi, ki jih ponuja sistemski klic kcmp(), F_DUPFD_QUERY ne razkrije dodatnih informacij in deluje na sistemih, kjer je kcmp onemogočen.
- V podnosistemu FUSE, ki se uporablja za izvajanje datotečnih sistemov v prostoru uporabnika, je bila realizirana možnost uporabe mehanizma fs-verity za preverjanje celovitosti in avtentičnosti datotek.
- V modul dm-crypt, ki se uporablja za šifriranje blokovnih naprav, je bila dodana možnost »high_priority«, ki omogoča vključitev visoko prioritetnih delovnih vrst za povečanje zmogljivosti na zmogljivih sistemih. serverimaPrivzeto je način izklopljen, saj lahko pripelje na običajnih PC-jih do povečanja zamud pri izvajanju opravil, ki niso povezana s šifriranjem, kot je obdelava zvoka.
- Dodana je netlink protokol za upravljanje NFS serverom u jezgru. U korisničkom prostoru je razvijen alat nfsdctl na osnovu ovog protokola. Podrška za montiranje NFS v2 je prema zadanim postavkama isključena (podrška za NFS v2 u alatu mount.nfs ukinuta je još 2021. godine).
- U datotečnom sustavu XFS nastavlja se rad na implementaciji mogućnosti korištenja alata fsck za provjeru i ispravljanje utvrđenih problema u online režimu, bez demontiranja datotečnog sustava. Dodan je ioctl XFS_IOC_EXCHANGE_RANGE za razmjenu bajtnih raspona između dvije datoteke u atomskom režimu.
- U Btrfs implementirana je podrška za smanjivanje (shrinker) neodređenih karata ekstenata, što može biti korisно za smanjenje potrošnje memorije u uvjetima oskudice. Kod za kompresiju podataka i funkcija put_file_data() prebačeni su na korištenje stranica memorije (page folios). Prerađen je mehanizam zaključavanja ekstenata prilikom izvođenja operacija povratka.
- U FS Ext4 dodana je podrška za ioctl FS_IOC_GETFSSYSFSPATH za određivanje lokacije zadanog montiranog FS u hijerarhiji /sys/fs.
- Datotečni sustavi OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX i FREEVXFS prebačeni su na korištenje novog API-ja za montiranje particija.
- U datotečnom sustavu EROFS (Extendable Read-Only File System), namijenjenom za korištenje na dijelovima dostupnim u režimu samo za čitanje, dodana je podrška za algoritam kompresije Zstandard.
- U Bcachefs pripremljena je mogućnost izvođenja fsck bez demontiranja particije (online provjera). Dodane su izmjene i popravci za povećanje pouzdanosti rada. Implementirana je mogućnost ažuriranja i vraćanja formata FS u režimu 'nochanges', koji isključuje zapisivanje i čuva metapodatke samo u memoriji.
- U datotečni sustav OverlayFS dodana je podrška za kreiranje privremenih datoteka korištenjem opcije O_TMPFILE.
- Prekid podrške za mehanizam ograničavanja propusnosti blokovnih uređaja 'CONFIG_BLK_DEV_THROTTLING_LOW', koji je od 2017. godine zadržao status eksperimentalnog, nije se praktički koristio i otežava održavanje podsustava blokovnih uređaja.
- Pomnilnik in sistemske storitve
- Dodano, vendar je izklopljeno pri gradnji, gonilnik ntsync, ki implementira simbolno napravo /dev/ntsync in niz primitivov za sinhronizacijo, uporabljenih v jedru Windows NT. Implementacija takšnih primitvov na ravni jedra znatno povečuje zmogljivost iger za Windows, ki se izvajajo preko Wine. Povečanje zmogljivosti se doseže z odpravo stroškov, povezanih z uporabo RPC v prostoru uporabnika. Ustvarjanje ločenega gonilnika za jedro Linux je posledica težav pri pravilni implementaciji API sinhronizacije NT nad obstoječimi primitivami v jedru.
- Dodana je podsistem za profiliranje operacij dodeljevanja pomnilnika v jedru Linux, ki omogoča odkrivanje puščanja pomnilnika v jedru in poenostavi optimizacijo porabe pomnilnika. Podsistem zagotavlja nizke stroške, kar omogoča njegovo uporabo ne le v odprtokodnih gradnjah jedra, temveč tudi na delovnih sistemih.
- Dodana je začetna implementacija obdelovalnika izrednih dogodkov v jedru — DRM Panic, ki uporablja podsistem DRM (Direct Rendering Manager) za prikaz vizualnega barvnega poročila v slogu »modrega zaslona smrti«. V naslednji različici je načrtovana možnost prikaza logotipa in QR kode na zaslonu ob izrednem stanju.
- Nadaljuje se prenos sprememb iz veje Rust-for-Linux, povezanih z uporabo jezika Rust kot drugega jezika za razvoj gonilnikov in modulov jedra (podpora za Rust ni privzeto aktivna in ne pripelje do vključitve Rusta med obvezne odvisnosti za gradnjo jedra). Izveden je prehod na uporabo različice Rust 1.78, kar je omogočilo prehod na uporabo standardne knjižnice alloc namesto lastne različice. Dodane so abstrakcije za delo s časom v jedru (ovijanje nad strukturo ktime_t). Dodana je podpora za uporabo komponent jedra v jeziku Rust na sistemih z arhitekturo RISC-V.
- V BPF-programih je omogočeno uporabljanje čakalnih vrst (wait queue) v jedru. Dodane so funkcije bpf_preempt_disable in bpf_preempt_enable, ki omogočajo ustvarjanje sekcij kode, ki jih ne prekinja načrtovalnik nalog. Omogočen je dostop BPF-program do kriptografskih funkcij jedra (crypto). Implementirana je podpora za JIT-kompilacijo BPF-program na sistemih s 32-bitnimi procesorji ARCv2.
- Za 32-bitne sisteme ARM je bila uvedena podpora za sestavljanje jedra z uporabo prevajalnika Clang, ki vključuje način zaščite CFI (Control Flow Integrity), kar preprečuje kršitve normalnega zaporedja izvajanja (control flow) zaradi uporabe eksploitov, ki spreminjajo kazalce na funkcije, shranjene v pomnilniku.
- Dodana je možnost neposrednega odsevanja preko mmap() obročnih predpomnilnikov sledi za prenos njihove vsebine v prostor uporabnika brez dodatnega kopiranja.
- Dodana je sistemska klica "mseal", ki omogoča procesom, da nastavijo blokado za spremembo določenih delov svojega naslovnega prostora. V praksi je predvideno, da se nova sistemska klica uporablja v brskalniku Chrome za okrepitev sandbox-izolacije.
- Za podarhitekturo x32, ki omogoča hibridni x86_64 ABI, ki omogoča uporabo 32-bitne pomnilniške modelacije v 64-bitnih sistemih (procesor deluje v 64-bitnem načinu, vendar uporablja 32-bitne kazalce in aritmetične operacije), je bila dodana podpora za mehanizem Shadow Stack, ki blokira delovanje mnogih eksploitov z uporabo strojne opreme procesorjev Intel za zaščito pred prepisovanjem naslova vračanja iz funkcije v primeru prelivanja pomnilnika v skladu z skladom.
- Na sistemih z arhitekturo ARM64 je v sistemski klic userfaultfd(), ki omogoča ustvarjanje obdelovalcev zahtevkov za nealokirane strani pomnilnika (page faults) v prostoru uporabnika, implementirana zaščitna funkcionalnost, povezana z zaščito pred pisanjem območij pomnilnika in elementi tabele strani pomnilnika.
- Удален код для поддержки процессоров Alpha 21164 (EV5) и более ранних серий, выпускаемых с 1995 года. Сопровождение кода для данных процессоров стало сложнее из-за отсутствия доступа к памяти на уровне отдельных байтов. Alpha была первой архитектурой, на которую было портировано ядро Linux, изначально доступное только для систем x86.
- Virtualizacija in varnost
- Добавлена поддержка зашифрованного обмена данными с устройствами TPM (Trusted Platform Module) и проверки целостности транзакций.
- В LSM-модуль Landlock, который позволяет ограничить взаимодействие группы процессов с внешним окружением, добавлена возможность применения правил для ограничения доступа к вызовам ioctl().
- Предложена опция init_mlocked_on_free, выставляемая на этапе загрузки, обеспечивающая обнуление содержимого памяти, защищённой от вытеснения в раздел подкачки с помощью вызова mlock(), если эта память будет освобождена без разблокировки вызовом munlock(). Использование этой опции позволяет исключить оседание криптографических ключей в памяти в случае аварийного завершения приложения, работающего с ними.
- В подсистеме crypto ускорено выполнение операций дискового шифрования с использованием алгоритма AES-XTS на системах x86_64 с процессорами Intel и AMD, поддерживающими расширения VAES, AVX2, VPCLMULQDQ, AVX10 или AVX512.
- Удалена возможность сбора статистики об использовании криптоподсистемы ядра (CONFIG_CRYPTO_STATS). Эта возможность не использовалась на практике, приводила к значительному снижению производительности и создавала ощутимую нагрузку на сопровождающих.
- Mrežna podsistem
- Значительно повышена производительность операций отправки данных в режиме zero-copy при использовании подсистемы io_uring. Добавлена возможность объединения ("bundle") нескольких буферов для операций отправки и приёма данных.
- Переписан код сборки мусора, применяемый при отправке файловых дескрипторов через Unix-сокеты с использованием сообщений SCM_RIGHTS. Изменение позволяет решить проблему с накоплением зацикленных счётчиков ссылок.
- Добавлена возможность установки фильтров для протокола PFCP (Packet Forwarding Control Protocol), используемого в сетях 4G и 5G.
- Dodana je podpora za opcijo omrežnih vsakov SO_PEEK_OFF, ki analogno enaki možnosti za Unix-socket omogoča določitev odklona podatkov v vrsti, ki jo uporablja sistemski klic recv ob navedbi oznake MSG_PEEK (označuje podatke kot neprebrane in bodo ponovno izdani pri naslednjem klicu recv).
- V podsistem io_uring je dodana podpora za operacijo IORING_CQE_F_SOCK_NONEMPTY, ki omogoča ugotovitev prisotnosti zahtevkov za povezavo na omrežnem socketu, ki čakajo na obdelavo.
- Predlagana je implementacija tehnologije PoE (Power over Ethernet), ki temelji na prej dostopni kodi za podporo PoDL (Power over Data Line) in je združljiva s PoE krmilniki Microchip PD692x0 in TI TPS23881.
- Za protokole TCP, DCCP in MPTC je dodana podpora za mehanizem rstreason, ki omogoča določitev vzroka za pošiljanje RST paketov (na primer, NO_SOCKET).
- Oprema
- V komponento je vključen gonilnik panthor za deseto generacijo GPU Mali (G310, G510, G710), ki uporablja tehnologijo CSF (Command Stream Frontend), prenaša nekatere funkcije gonilnika na programsko opremo za zmanjšanje obremenitve CPU in ponuja nov model organizacije izvedbe nalog na GPU. Spremembe za podporo novega gonilnika so bile prav tako sprejete v Mesa in vključene v Gallium gonilnik panfrost za GPU Mali.
- V gonilnik i915 so dodani PCI identifikatorji novih diskretnih grafičnih kartic Intel Arc (DG2/Alchemist).
- Delo na drm-gonilniku (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe, ki se uporablja v grafičnih karticah Intel družine Arc in integrirani grafiki, se nadaljuje z procesorji Tiger Lake. Dodana je podpora za CPU Arrow Lake H. Nadaljuje se implementacija podpore za procesorje Lunar Lake. Dodana je začetna podpora za mehanizem SR-IOV (Single Root I/O Virtualization).
- V gonilniku AMDGPU je dodana podpora za SMU 14.0 (System Management Unit). Dodana je možnost uporabe novih GPU AMD na sistemih z arhitekturo RISC-V.
- Dodana je gonilnik za pospeševalnik kriptografskih operacij Tegra Security Engine, ki ga lahko uporabite za pospeševanje AES in različnih algoritmov za hashe.
- Dodana je podpora za zaslonske panele LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 in AUO B120XAN01.0.
- Dodana je podpora za zvočni sistem prenosnikov Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X in ASUS Zenbook 2024 HN7306. Dodana je podpora za zunanje zvočne karte Vocaster One in Vocaster Two. Dodan je gonilnik za ojačevalnike NAU8325 podjetja Nuvoton Technology.
- V gonilniku HID-Steam je dodana podpora za IMU (Inertial Measurement Unit) igralnega krmilnika Steam Deck, kar omogoča uporabo ločenega vozlišča evdev za dostop do podatkov žiroskopa in akcelerometra.
- Vključene so spremembe za podporo ARM SoC Snapdragon X Elite, ki uporablja lastni 12-jedrni CPU Qualcomm Oryon in GPU Qualcomm Adreno. Čip je usmerjen na uporabo v prenosnikih in PC-jih ter v večini testov prekaša čipe Apple M3 in Intel Core Ultra 155H.
- Dodana je podpora za ARM platforme, SoC in naprave: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 China, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
- Dodana je podpora za plošče Milk-V Mars, ki uporabljajo SoC Starfive JH7110, temelječ na arhitekturi RISC-V.
Hkrati je latinskoameriška Fundacija svobodnega programske opreme oblikovala različico popolnoma prostega jedra 6.10 — Linux-libre 6.10-gnu, očiščenega od elementov programske opreme in gonilnikov, ki vsebujejo neproste komponente ali odlomke kode, katerih področje uporabe je omejeno s strani proizvajalca. V izdaji 6.10 je posodobljena koda za čiščenje blobov v gonilnikih Intel i915, rtl8xxxu, qla2xxx in QCAI sahara. Opravljeno je čiščenje imen blobov v dts datotekah (devicetree) za arhitekturo Aarch64. Očiščene so nove datoteke, dodane v gonilnike Adreno, Intel IPU3 in PRUEth. Opravljeno je čiščenje novih gonilnikov Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID in pcm6240. Čiščenje USB-gonilnika Prism2.5/3 USB je prenehalo, saj je bil odstranjen iz jedra.
Izvor: opennet.ru
