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

У нову версію прийнято 17275 виправлень від 2589 розробників, розмір патчу - 57 МБ (зміни торкнулися 13528 файлів, додано 751785 рядків коду, видалено 405916 рядків). У минулому випуску було 15 624 виправлень від 2 477 розробників, розмір патчу - 56 МБ. Близько 41% всіх представлених у 7.1 змін пов'язані з драйверами пристроїв, приблизно 12% змін стосуються оновлення коду, специфічного для апаратних архітектур, 14% пов'язано з мережевим стеком, 5% — з файловими системами та 3% з внутрішніми підсистемами ядра.

Основні нововведення в ядрі 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) на рівні файлової системи, а не блокового пристрою, що дозволяє досягти підвищення продуктивності операцій читання.
  • У драйвер блокових пристроїв ublk, що дозволяє винести специфічну логіку на бік процесу у просторі користувача, додано підтримка введення/виводу через пам'ять без копіювання даних між буферами (режим zero-copy).
  • Для самошифрованих блокових пристроїв SED-OPAL додані ioctl для керування режимом Однокористувацький та реалізовано команду STACK_RESET.
  • У Btrfs оголошена стабільною підтримка ioctl-операції shutdown, що дозволяє перевести ФС у стан, при якому робиться спроба завершення виконання вже запущених операцій, але блокуються нові операції.
  • У exfat реалізована можливість резервування порожніх областей через виклик fallocate().
  • У ФС CIFS додано підтримку створення тимчасових файлів з прапором O_TMPFILE.
  • У системний виклик fsmount() додано опцію FSMOUNT_NAMESPACE, що створює новий простір імен точок монітування для вмонтованої файлової системи. У системні виклики clone3() та unshare() додані прапори для повернення нового простору імен точок монтування, що містить лише примонтовану порожню ФС-заглушку на базі nullfs, драйвер fs-dax з ФС-інтерфейсом до пристроїв DAX (Direct Access).
  • У NFS-сервер додано захист від атак по підбору файлових дескрипторів, реалізований через завірення дескрипторів криптографічним підписом. Захист вмикається через опцію монтування sign_fh.
  • доданий символьний драйвер fs-dax, що надає інтерфейс для взаємодії з пристроями DAX (Kernel.org) (Direct Access), що підтримують роботу в обхід сторінкового кешу. Зазначений інтерфейс необхідний для інтеграції в ядро ​​файлової системи famfs, що розміщується в оперативній пам'яті.
  • У файловій системі Ceph реалізований збір метрик про введення/виведення у прив'язці до підрозділів.
Пам'ять та системні сервіси
  • Прийнята перша серія змін припинення підтримки процесорів i486. З Kconfig видалені опції для складання ядра з підтримкою процесорів 486DX, 486SX та AMD ELAN (CONFIG_M486, CONFIG_M486SX та CONFIG_MELAN), а з Makefile виключені опції компіляції для систем i486 (-march=i486). Код для фактичної підтримки роботи на процесорах i486 поки що залишений в ядрі, але збірка для подібних систем тепер вимагатиме застосування патчів до збірних файлів. Причини видалення підтримки процесорів i486 обумовлені бажанням позбавити ядро ​​ускладненого коду, що емулює деякі апаратні операції, такі як CX8 (порівняти і обміняти 8 байт) і TSC (лічильник циклів CPU, що використовується в планувальнику завдань).
  • У драйвері amd-pstate, що використовується для керування енергоспоживанням на системах з процесорами AMD, реалізовано динамічне перемикання параметрів продуктивності та зміна поведінки керування живленням залежно від роботи від стаціонарного живлення або акумулятора. При стаціонарному підключенні активується режим performance, а при роботі від акумулятора - balance_performance.
  • Задіяний за умовчанням механізм Intel FRED (Flexible Return and Event Delivery), що дозволяє підвищити ефективність та надійність доставки інформації про низькорівневі події. Підвищення продуктивності та скорочення затримок забезпечується завдяки поверненню подій за допомогою процесорної інструкції IRET замість передачі подій через таблицю IDT (Interrupt Descriptor Table). Підвищення надійності досягається завдяки роздільній обробці надходження події у контексті ядра та контексті користувача, захисту від вкладеного виконання NMI та збереження у розширеному кадрі стека всіх пов'язаних з винятком регістрів CPU.
  • У підсистему perf додано підтримка блоків моніторингу продуктивності пам'яті (PMU – Performance Monitoring Unit), що використовуються у SoC NVIDIA Tegra410.
  • Прискорено виконання операцій futex на системах ARM завдяки залученню інструкцій Arm 9.6 LSUI, що дозволяють ядру звертатися до пам'яті простору користувача без попереднього відключення режиму захисту PAN (arm.com) (Privileged Access Never).
  • На системах з процесорами ARM покращено підтримку розширення архітектури набору команд MPAM (Memory System Resource Partitioning and Monitoring) та додано можливість її використання у просторі користувача для управління ресурсами через механізм resctrl. MPAM забезпечує позначку кожного звернення до пам'яті ідентифікатором секції (PARTID, Partition ID) та ідентифікатором групи моніторингу (PMG, Monitoring Group ID). У прив'язці до PARTID можна обмежити споживання ресурсів, таких як пропускна здатність пам'яті або розмір кешу, щоб якась група завдань не зайняла всі ресурси. У контексті моніторингу PMG і PARTID можна використовувати для відстеження споживання ресурсів пам'яті при певних видах навантаження.
  • Додана можливість використання режиму реального часу (PREEMPT_RT) на 32-розрядних процесорах ARM. Раніше підтримка PREEMPT_RT була забезпечена для архітектур x86 та x86-64, ARM64, RISC-V та LoongArch.
  • У системний виклик clone3() додано нові прапори: CLONE_NNP — заборона отримання нових привілеїв у створеному процесі; CLONE_AUTOREAP — автоматичне завершення процесу замість його перетворення на процес-зомбі до виконання функції wait() батьківським процесом; CLONE_PIDFD_AUTOKILL - завершення дочірнього процесу у разі закриття пов'язаного з ним дескриптора pidfd (наприклад, при завершенні батьківського процесу).
  • Для кожного модуля ядра до каталогу /sys/module доданий файл import_ns, що містить список імпортованих просторів імен символів (symbol namespace).
  • До системи асинхронного введення/виведення io_uring додано підтримку використання підсистеми BPF для створення обробників. Наприклад, можна замінити основний цикл диспетчеризації на програму BPF.
  • У підсистемі BPF модернізовано аналіз використання стека, що прискорило перевірку верифікатором багатьох BPF-программ.
  • З метою оптимізації продуктивності переписано підсистема hrtimer (high resolution timer). Планувальник завдань тепер може використовувати таймери з високою роздільною здатністю без втрати продуктивності замість менш точних таймерів.
  • Продовжено перенесення змін із гілки Rust-for-Linux, пов'язаних з використанням мови Rust як другої мови для розробки драйверів та модулів ядра (підтримка Rust не активна за замовчуванням, і не призводить до включення Rust до обов'язкових складальних залежностей до ядра). До версії 1.85 (постачається в Debian 13) підвищені вимоги до версії Rust, необхідної для збирання компонентів ядра. Додано експериментальну Kconfig-опцію CONFIG_RUST_INLINE_HELPERS для вбудовування Сі-прошарків у Rust-код під час компіляції (оптимізація прискорила роботу блочного драйвера null на 2%). Додано макрос 'const_assert!'. Розширено можливості модулів sizes, clk, ptr, sync, error.
  • У механізм SCHED_EXT, що дозволяє використовувати BPF для створення планувальників CPU, додано початкова можливість створення вкладених планувальників (sub-scheduler), з яких для кожного cgroup можна задіяти власний планувальник завдань.
  • Продовжено оптимізацію підсистеми підкачки (swap). Видалено стару структуру swap_map, замінену на механізм «Swap Table». Зміна дозволила підвищити продуктивність та зменшити споживання пам'яті в підсистемі підкачування.
  • У підсистему ДЕЙМОН (Data Access MONitor), що дозволяє відстежувати доступ процесу до даних в оперативній пам'яті (наприклад, можна дізнатися до яких областей пам'яті звертався процес, а які області пам'яті залишилися незатребуваними), додано підтримка різних алгоритмів автоматичного тюнінгу квот.
  • У підсистемі трасування реалізована концепція зовнішніх кільцевих буферів, що дозволяє отримувати дані трасування з віртуальних машин. Можливість задіяна в гіпервізорах KVM та nVHE для передачі трасування з гостьової системи на бік хоста.
  • У підсистему RV (kernel.org) (Runtime Verification), призначену для перевірки коректності роботи високонадійних систем, додано компоненти моніторингу.зрив» для відстеження завдань, виконання яких тимчасово призупинено або заблоковано, та «крайній термін» для аналізу поведінки планувальника завдань.
Віртуалізація та безпека
  • За промовчанням виставлений прапор PROC_MEM_FORCE_PTRACE, що допускає обхід прав доступу до пам'яті процесу через файл /proc/PID/mem тільки для процесів, які застосовують для налагодження системний виклик ptrace().
  • доданий новий набір hook-ів для LSM-модулів (Linux Security Module), що спрощує реалізацію політик для стекових файлових систем, таких як overlayfs. У LSM також доданий hook для керування доступом до Unix-сокетів, який задіяний у LSM-модулі Landlock для призначення політик доступу до Unix-сокетів.
  • У вбудовану криптобібліотеку lib/crypto, що надає більш прості та швидкі функції, ніж у традиційному crypto API, додано підтримка алгоритмів AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH та SM3. Додана документація lib/crypto.
  • Реалізовано режим pKVM (Protected KVM) для суворої ізоляції анонімної пам'яті з використанням розширень віртуалізації для архітектури AArch64. У цьому режимі сторінки пам'яті гостьової виключаються з таблиці віртуальних адрес хостової системи.
  • У гіпервізор KVM додано підтримку п'ятої версії віртуального контролера переривань ARM (VGICv5 – ARM Virtual Generic Interrupt Controller v5).
Мережева підсистема
  • Для unix-сокетів, що створюються функцією socket(), реалізована підтримка розширених атрибутів файлів (xattr) user.*. З областей застосування відзначається виставлення міток через розширені атрибути до Unix-сокетів, що використовуються для IPC Varlink, з метою їх виділення із загальної маси для інспектування та налагодження роботи IPC за допомогою програм BPF. У systemd-journald розширені атрибути мають намір використовувати визначення формату лога в прив'язці до сокету /dev/log.
  • Вилучена підтримка протоколу UDP-Lite (RFC 3828), що допускає доставку пакетів з неправильною контрольною сумою з розрахунком на те, що, наприклад, частково пошкоджені аудіо та відео можуть бути відновлені на рівні кодека. Протокол видалено, оскільки ним ніхто не користується.
  • Прибрано можливість складання стека IPv6 у формі модуля ядра, яка не застосовувалася на практиці (IPv6 або вбудовують в ядро, або повністю відключають), але ускладнювала супровід так як при складанні IPv6 модулем ядра (CONFIG_IPV6 = m), безліч підсистем змушені додавати марні обробники на випадок.
Обладнання
  • У драйвері AMDGPU включений новий дисплейний двигун (DC) для APU AMD серії HD 7000 (Sea Islands, GCN 1.1).
  • У драйвер Nouveau додано Початкова підтримка GPU NVIDIA GA100 на базі мікроархітектури Ampere.
  • Продовжено роботу над drm-драйвером (Direct Rendering Manager) Xe для GPU на базі архітектури Intel Xe, яка використовується у відеокартах Intel сімейства Arc та інтегрованої графіки, починаючи з процесорів Tiger Lake. Додано підтримку графічної підсистеми процесорів Intel Nova Lake-P. Реалізовані буферні об'єкти, що очищаються (Purgeable Buffer Objects).
  • Продовжено інтеграцію компонентів драйвера Nova для GPU NVIDIA, оснащених GSP-прошивками, що використовуються починаючи з серії NVIDIA GeForce RTX 2000 на базі мікроархітектури Turing. Драйвер написано мовою Rust. Додано початкову підтримку GPU на базі мікроархітектури Turing.
  • доданий DRM-драйвер corebootdrm для виведення графіки через фреймбуфер прошивок на базі CoreBoot.
  • Додана підтримка звукових ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP та WM8962. Покращена підтримка звукових пристроїв з інтерфейсом USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hoton Audio, Feaulle Rainbow, Presonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
  • доданий драйвер yogafan для відстеження швидкості обертання кулера на ноутбуках Lenovo Yoga, Legion та IdeaPad.
  • Додана підтримка ARM-плат, SoC та пристроїв: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 та ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1009-13 PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
  • Вилучена підтримка застосовуваних у SoC Baikal-T1 контролерів AHCI SATA та PCIe, а також драйверів таймера, пам'яті, physmap, шини, hwmon, dwc та bt1-rom. Як причину видалення називається відсутність супроводу та незавершена інтеграція до складу ядра компонентів платформи Baikal, виробництво якої в РФ звернули у листопаді 2025 року.
  • вилучені 12 драйверів для Ethernet-пристроїв з інтерфейсами ISA і PCMCIA, що випускалися до 2002 року, для яких не знайшлися користувачі, які застосовують їх у робочих системах. Також з ядра виключено підсистему ISDN, реалізації протоколів AX.25, CAIF і Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), драйвери yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport та logibm (Busmouse). Причиною видалення стала відсутність активних супроводжуючих на тлі збільшення числа помилок, що виявляються за допомогою syzbot і AI-інструментів, які ніхто не береться виправляти і все навантаження на усунення серйозних проблем лягає на супроводжуючі основні мережеві підсистеми ядра. Усього видалено понад 140 тисяч рядків коду.

Джерело: linux.org.ru

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster