Linux 7.1

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 7.1. Среди наиболее заметных изменений: новый драйвер ntfsplus, первая стадия прекращения поддержки CPU i486, удаление старых Ethernet-адаптеров, удаление протоколов ISDN и AX.25, включение по умолчанию механизма Intel FRED, поддержка BPF-обработчиков в io_uring, оптимизация подсистемы подкачки, поддержка субпланировщиков в sched_ext, ввод/вывод в режиме zero-copy в драйвере ublk, ioctl-операция shutdown в Btrfs, динамическое переключение режима производительности в драйвере amd-pstate, поддержка xattr для Unix-сокетов.

В новую версию принято 17275 исправлений от 2589 разработчиков, размер патча — 57 МБ (изменения затронули 13528 файлов, добавлено 751785 строк кода, удалено 405916 строк). В прошлом выпуске было 15624 исправлений от 2477 разработчиков, размер патча — 56 МБ. Около 41% всех представленных в 7.1 изменений связаны с драйверами устройств, примерно 12% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 5% — с файловыми системами и 3% c внутренними подсистемами ядра.

Основные новшества в ядре 7.1 (kernelnewbies.org, lwn.net, opennet):

Дисковая подсистема, ввод/вывод и файловые системы
  • В состав принята новая реализация файловой системы NTFS — ntfsplus, основанная на коде удалённого из ядра классического драйвера ntfs. Старый драйвер был переработан, расширен возможностью записи данных и адаптирован для поддержки современных возможностей, таких как использование фолиантов страниц памяти (folios) вместо структуры buffer_head. В новом драйвере реализовано отложенное выделение блоков, позволившее добиться высокой производительности операций записи и снижения фрагментации. Для буферизированных операций записи/чтения, прямого ввода/вывода, маппинга экстентов и операций страничной записи/чтения задействована библиотека iomap. В тестах iozone драйвер ntfsplus оказался на 3-5% быстрее ntfs3 при записи в однопоточном режиме и на 35-110% при использовании 4 потоков. Скорость чтения ntfsplus и ntfs3 находится примерно на одном уровне. Драйвер ntfs3 остаётся в составе ядра и в него внесены исправления и небольшие улучшения.
  • Добавлена поддержка генерации и верификации данных проверки целостности T10 (deepwiki.com) na ravni datotečnega sistema, ne pa bloka naprave, kar omogoča povečanje zmogljivosti operacij branja.
  • V gonilniku blokovnih naprav ublk, ki omogoča prenos specifične logike na stran procesa v uporabniškem prostoru, je dodana podpora za vhod/izhod prek deljene pomnilnika brez kopiranja podatkov med predpomnilniki (način zero-copy).
  • Za samodejno šifrirane blokovne naprave SED-OPAL dodano ioctl za upravljanje načina Single User in implementirana ukaz STACK_RESET.
  • V Btrfs je napovedana stabilna podpora za ioctl operacijo shutdown, ki omogoča prenos datotečnega sistema v stanje, v katerem se poskuša zaključiti izvajanje že zagnanih operacij, medtem ko so vse nove operacije blokirane.
  • V exfat je omogočeno rezerviranje praznih področij prek klica fallocate().
  • V datotečnem sistemu CIFS je dodana podpora za ustvarjanje začasnih datotek s flagom O_TMPFILE.
  • V sistemski klic fsmount() je dodana možnost FSMOUNT_NAMESPACE, ki ustvari nov prostor imen točk montaže za montažni datotečni sistem. V sistemske klice clone3() in unshare() so dodane zastavice za vrnitev novega prostora imen točk montaže, ki vsebuje le pritrjen prazni nadomestni datotečni sistem na osnovi nullfs, gonilnik fs-dax s FS vmesnikom za naprave DAX (Direct Access).
  • V NFS strežniku je dodana zaščita pred napadi na iskanje datotečnih descriptorjev, izvedena s podpisovanjem descriptorjev s kriptografskim podpisom. Zaščita se vklopi prek možnosti montaže sign_fh.
  • Dodano simbolni gonilnik fs-dax, ki nudi vmesnik za interakcijo z napravami DAX (kernel.org) (Direct Access), ki podpirajo delovanje ob strani predpomnilnika strani. Ta vmesnik je potreben za integracijo v jedro datotečnega sistema famfs, ki je nameščen v operativni pomnilnik.
  • V datotečnem sistemu Ceph je realiziran zbiranje metrik o vhodu/izhodu v povezavi s podpoddeli.
Pomnilnik in sistemske storitve
  • Sprejeto Prva serija sprememb za prenehanje podpore za procesorje i486. Možnosti za gradnjo jedra s podporo za procesorje 486DX, 486SX in AMD ELAN (CONFIG_M486, CONFIG_M486SX in CONFIG_MELAN) so bile odstranjene iz Kconfig, možnosti za kompilacijo za sisteme i486 (-march=i486) pa so bile izključene iz Makefile. Koda za dejansko delovanje na procesorjih i486 je zaenkrat še vedno prisotna v jedru, toda gradnja za takšne sisteme bo zdaj zahtevala uporabo popravkov za gradbene datoteke. Razlogi za odstranitev podpore za procesorje i486 so želja po očiščenju jedra zapletene kode, ki emulira nekatere strojne operacije, kot sta CX8 (primerjaj in zamenjaj 8 bajtov) in TSC (število ciklov CPU, ki se uporablja v razporejevalniku nalog).
  • V gonilniku amd-pstate, ki se uporablja za upravljanje porabe energije na sistemih z AMD procesorji, je bila izvedena dinamična preklopa nastavitev zmogljivosti in spreminjanje vedenja upravljanja z energijo, odvisno od delovanja na omrežni ali baterijski napajalnik. Ko je priključen na omrežje, se zdaj aktivira način zmogljivosti, medtem ko pri delovanju na baterijo — uravnotežena zmogljivost.
  • Privzeto je aktiviran mehanizem Intel FRED (Fleksibilna vrnitev in dostava dogodkov), ki izboljšuje učinkovitost in zanesljivost dostave informacij o nizko nivojskih dogodkih. Povečanje zmogljivosti in zmanjšanje zamud se zagotavlja s vračanjem dogodkov z uporabo procesorske instrukcije IRET namesto prenosa dogodkov preko tabele IDT (Tabela opisov prekinitev). Zanesljivost se izboljša z ločenim ravnanjem pri sprejemu dogodka v jedru in v kontekstu uporabnika, zaščito pred gnezdenjem NMI in shranjevanjem vseh registrov CPU, povezanih z izjemo, v razširjenem okviru sklada.
  • V podsystem perf je dodana je podpora za enote za spremljanje zmogljivosti pomnilnika (PMU — Enota za spremljanje zmogljivosti), ki se uporabljajo v SoC NVIDIA Tegra410.
  • Izboljšano je izvajanje operacij futex na sistemih ARM, zahvaljujoč uporabi instrukcij Arm 9.6 LSUI, ki omogočajo jedru dostop do pomnilnika prostora uporabnika brez predhodnega izključevanja zaščitnega načina. PAN (arm.com) (Nikoli privilegiran dostop).
  • Na sistemih z ARM procesorji je izboljšana podpora za razširitev arhitekture niza ukazov MPAM (Razdeljanje in spremljanje sistemskih virov pomnilnika) in dodana možnost njene uporabe v uporabniškem prostoru za upravljanje virov prek mehanizma resctrl. MPAM omogoča označevanje vsakega dostopa do pomnilnika z identifikatorjem sekcije (PARTID, Partition ID) in identifikatorjem monitoring skupine (PMG, Monitoring Group ID). V povezavi s PARTID lahko omejimo porabo virov, kot sta prepustnost pomnilnika ali velikost predpomnilnika, tako da neka skupina opravil ne zasede vseh virov. V kontekstu spremljanja je mogoče kombinacijo PMG in PARTID uporabiti za sledenje porabi virov pomnilnika pri določenih vrstah obremenitev.
  • Dodana možnost uporabe realnočasovnega načina (PREEMPT_RT) na 32-bitnih ARM procesorjih. Prej je bila podpora za PREEMPT_RT zagotovljena za arhitekture x86 in x86-64, ARM64, RISC-V in LoongArch.
  • V sistemski klic clone3() dodane nove zastavice: CLONE_NNP — prepoved dostopa do novih privilegijev v ustvarjenem procesu; CLONE_AUTOREAP — samodejno končanje procesa namesto preoblikovanja v proces-zombi do izvedbe funkcije wait() s strani starševskega procesa; CLONE_PIDFD_AUTOKILL — končanje otroškega procesa ob zaprtju povezanega deskriptorja pidfd (na primer ob končanju starševskega procesa).
  • Za vsak modul jedra v katalogu /sys/module dodana datoteka import_ns, ki vsebuje seznam uvoženih prostorov imen simbolov (symbol namespace).
  • V sistem asinhronega vnosa/izvoda io_uring dodana podpora za uporabo pod sistema BPF za ustvarjanje obdelovalcev. Na primer, osnovni cikel usklajevanja lahko zamenjamo z BPF-programom.
  • V podsystemu BPF moderniziran analiza uporabe sklada, kar je znatno pospešilo preverjanje mnogih BPF-programov s strani preverjevalnika.
  • Z namenom optimizacije zmogljivosti prepisana podsystema hrtimer (timer z visoko ločljivostjo). Načrtovalnik opravil zdaj lahko uporablja timerje z visoko ločljivostjo brez izgube zmogljivosti namesto manj natančnih timerjev.
  • Nadaljevanje 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 aktivirana in ne vključuje Rust med obvezne odvisnosti pri gradnji jedra). Do različice 1.85 (dobavljene v Debian 13) so zvišane zahteve za različico Rust, potrebno za gradnjo komponent jedra. Dodana je eksperimentalna Kconfig možnost CONFIG_RUST_INLINE_HELPERS za vgrajevanje C-vmesnikov v Rust-kodo med pregradnjo (optimizacija je pospešila delovanje blokovnega gonilnika null za 2%). Dodan je makro ‘const_assert!’. Razširjene so možnosti modulov sizes, clk, ptr, sync, error.
  • V mehanizmu SCHED_EXT, ki omogoča uporabo BPF za ustvarjanje schedulerjev CPU, je dodana se je pojavila začetna možnost ustvarjanja vgrajenih schedulerjev (sub-scheduler), s pomočjo katerih lahko za vsako cgroup uporabimo lastni scheduler nalog.
  • Nadaljuje se optimizacija podsystema zamenjave (swap). Stara struktura swap_map je bila odstranjena in zamenjana z mehanizmom «Swap Table». Sprememba je omogočila povečanje zmogljivosti in zmanjšanje porabe pomnilnika v podsystemu zamenjave.
  • V podsystemo DAMON (Data Access MONitor), ki omogoča spremljanje dostopa procesa do podatkov v operativnem spominu (na primer, lahko se ugotovi, do katerih območij spomina se je proces obrnil in katera območja spomina so ostala neizkoriščena), je dodana podpora različnim algoritmom samodejnega tuning-a kvot.
  • V podsystemu sledenja je bila uvedena koncept zunanjih obročnih pomnilnikov, ki omogoča pridobivanje podatkov sledenja iz virtualnih strojev. Možnost je bila vključena v hipervizorje KVM in nVHE za prenos podatkov sledenja iz gostiteljske naprave na stran gostitelja.
  • V podsystemo RV (kernel.org) (Runtime Verification), namenjena preverjanju pravilnosti delovanja visoko zanesljivih sistemov, je dodala komponente za spremljanje «stall» za sledenje nalogam, ki so začasno ustavljene ali blokirane, in «deadline» za analizo obnašanja schedulerja nalog.
Virtualizacija in varnost
  • Privzeto je nastavljen zastav PROC_MEM_FORCE_PTRACE, ki omogoča obhod pravic dostopa do pomnilnika procesa prek datoteke /proc/PID/mem samo za procese, ki pri odpravljanju napak uporabljajo sistemski klic ptrace().
  • Dodano novi nabor hook-ov za LSM-module (Linux Security Module), ki poenostavi izvajanje politik za skladovne datotečne sisteme, kot je overlayfs. V LSM je prav tako dodano hook za upravljanje dostopa do Unix-socketov, ki uporabljen v LSM-modulu Landlock za dodeljevanje politik dostopa do Unix-socketov.
  • V vgrajeni kriptobiblioteki lib/crypto, ki zagotavlja preprostejše in hitrejše funkcije kot tradicionalni crypto API, je dodana podpora za algoritme AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH in SM3. Dodano je dokumentacija o lib/crypto.
  • Implementiran je način pKVM (Zaščiten KVM) za strogo izolacijo anonimne pomnilnika z uporabo virtualizacijskih razširitev za arhitekturo AArch64. V tem načinu so strani pomnilnika gostitelja izključene iz tabele virtualnih naslovov sistema gostitelja.
  • V hipervizor KVM je dodana podpora peti različici virtualnega krmilnika prekinitev ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5).
Mrežna podsistem
  • Za unix-sokete, ki jih ustvari funkcija socket(), je bila uvedena podpora za razširjene atribute datotek (xattr) user.*. Med področji uporabe je opozorjeno na dodeljevanje oznak preko razširjenih atributov Unix-socketom, ki se uporabljajo za IPC Varlink, z namenom, da jih ločimo od ostalih za pregledovanje in odpravljanje težav delovanja IPC s pomočjo BPF-programov. V systemd-journald so razširjeni atributi namenjeni uporabi za določanje formata dnevnika v povezavi s socketom /dev/log.
  • Odstranjena podpora za protokol UDP-Lite (RFC 3828), ki dovoljuje dostavo paketov z napačnim kontrolnim vsoto, s predpostavko, da lahko, na primer, delno poškodovani avdio in video podatki obdržijo datoteko na ravni kodeka. Protokol je odstranjen, ker ga nihče ne uporablja.
  • Odstranjena možnost sestavljanja sklada IPv6 v obliki jedrskega modula, ki se ni uporabljala v praksi (IPv6 se bodisi vgradi v jedro bodisi popolnoma izključi), a je še dodatno oteževalo vzdrževanje, saj so morali ob sestavljanju IPv6 kot jedrski modul (CONFIG_IPV6=m) številni podsistemi dodati brezsmiselne obdelovalce za primer nalaganja modula IPv6.
Oprema
  • V gonilniku AMDGPU vključen nov sistem za prikazovanje (DC) za APU AMD serije HD 7000 (Sea Islands, GCN 1.1).
  • V gonilniku Nouveau je dodana začetna podpora za GPU NVIDIA GA100 na osnovi mikroarhitekture Ampere.
  • Delo z drm-napravnikom (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 od procesorjev Tiger Lake. Dodana je podpora grafičnemu podsystemu procesorjev Intel Nova Lake-P. Uvedeni so bili očistljivi povečevalni objekti (Purgeable Buffer Objects).
  • Integracija komponent gonilnika Nova za GPU NVIDIA, opremljenih z GSP-firmware, se nadaljuje in se uporablja od serije NVIDIA GeForce RTX 2000 na osnovi mikroarhitekture Turing. Gonilnik je napisan v jeziku Rust. Dodana je začetna podpora za GPU na osnovi mikroarhitekture Turing.
  • Dodano DRM-napravnik corebootdrm za izhod slike preko framebuffer-ov firmware na osnovi CoreBoot.
  • Dodana podpora avdio ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP in WM8962. Izboljšana podpora za avdio naprave z USB vmesnikom: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
  • Dodano gonilnik yogafan za sledenje hitrosti vrtenja hladilnika na prenosnikih Lenovo Yoga, Legion in IdeaPad.
  • Dodana podpora ARM-ploščam, SoC in napravam: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 in ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
  • Odstranjena podpora za v SoC Baikal-T1 uporabljene AHCI SATA in PCIe kontrolerje ter gonilnike za časovnik, pomnilnik, physmap, vodilo, hwmon, dwc in bt1-rom. Kot razlog za odstranitev je navedeno pomanjkanje vzdrževanja in nedokončana integracija v sestav modula Baikal, katerega proizvodnjo v RF so ustavili novembra 2025.
  • Odstranjeno 12 gonilnikov za Ethernet naprave z vmesnikom ISA in PCMCIA, ki so bili proizvedeni pred letom 2002, za katere uporabniki niso našli v delovnih sistemih. Prav tako so iz jedra izključeni moduli ISDN, izvajanje protokolov AX.25, CAIF in Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), gonilniki yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amaterski radio), inport in logibm (busmouse). Razlog za odstranitev je pomanjkanje aktivnih vzdrževalcev v luči naraščajočega števila napak, ki jih odkrije syzbot in AI orodja, ki jih nihče ne želi popraviti, in vsa obremenitev za odpravo resnih težav leži na vzdrževalcih glavnih omrežnih podsistemov jedra. Skupaj je bilo odstranjeno več kot 140.000 vrstic kode.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster