
Après deux mois de développement Linus Torvalds представил version du noyau 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 внутренними подсистемами ядра.
Principales nouveautés du noyau 7.1 (kernelnewbies.org, lwn.net, réseau ouvert):
Sous-système de disque, E/S et systèmes de fichiers
- В состав принята новая реализация файловой системы NTFS — ntfsplus, основанная на коде удалённого из ядра классического драйвера ntfs. Старый драйвер был переработан, расширен возможностью записи данных и адаптирован для поддержки современных возможностей, таких как использование folios de pages de mémoire (folios) вместо структуры buffer_head. В новом драйвере реализовано отложенное выделение блоков, позволившее добиться высокой производительности операций записи и снижения фрагментации. Для буферизированных операций записи/чтения, прямого ввода/вывода, маппинга экстентов и операций страничной записи/чтения задействована библиотека iomap. В тестах iozone драйвер ntfsplus оказался на 3-5% быстрее ntfs3 при записи в однопоточном режиме и на 35-110% при использовании 4 потоков. Скорость чтения ntfsplus и ntfs3 находится примерно на одном уровне. Драйвер ntfs3 остаётся в составе ядра и в него introduit исправления и небольшие улучшения.
- Добавлена поддержка генерации и верификации данных проверки целостности T10 (deepwiki.com) на уровне файловой системы, а не блочного устройства, что позволяет добиться повышения производительности операций чтения.
- В драйвер блочных устройств ublk, позволяющий вынести специфичную логику на сторону процесса в пространстве пользователя, ajoutée поддержка ввода/вывода через разделяемую память без копирования данных между буферами (режим zero-copy).
- Для самошифруемых блочных устройств SED-OPAL ajoutée ioctl для управления режимом Single User и реализована команда STACK_RESET.
- В Btrfs объявлена стабильной поддержка ioctl-операции shutdown, позволяющей перевести ФС в состояние, при котором предпринимается попытка завершения выполнения уже запущенных операций, но блокируются все новые операции.
- В exfat реализована возможность резервированием пустых областей через вызов fallocate().
- В ФС CIFS добавлена поддержка создания временных файлов с флагом O_TMPFILE.
- En appel système fsmount() добавлена опция FSMOUNT_NAMESPACE, создающая новое пространство имён точек монитирования для монтируемой файловой системы. В системные вызовы clone3() и unshare() добавлены флаги для возвращения нового пространства имён точек монтирования, содержащего только примонтированную пустую ФС-заглушку на базе nullfs, драйвер fs-dax c ФС-интерфейсом к устройствам DAX (Direct Access).
- В NFS-сервер ajoutée защита от атак по подбору файловых дескрипторов, реализованная через заверение дескрипторов криптографической подписью. Защита включается через опцию монтирования sign_fh.
- Добавлен символьный драйвер fs-dax, предоставляющий интерфейс для взаимодействия с устройствами DAX (kernel.org) (Direct Access), поддерживающими работу в обход страничного кэша. Указанный интерфейс необходим для интеграции в ядро файловой системы famfs, размещаемой в оперативной памяти.
- В файловой системе Ceph mis en œuvre сбор метрик о вводе/выводе в привязке к подразделам.
Services mémoire et système
- Accepté первая серия изменений для прекращения поддержки процессоров 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, mis en œuvre динамическое переключение настроек производительности и изменение поведения управления питанием в зависимости от работы от стационарного питания или аккумулятора. При стационарном подключении теперь активируется режим performance, а при работе от аккумулятора — balance_performance.
- Задействован по умолчанию механизм Intel FRED (Flexible Return and Event Delivery), позволяющий повысить эффективность и надёжность доставки информации о низкоуровневых событиях. Повышение производительности и сокращение задержек обеспечивается благодаря возвращению событий при помощи процессорной инструкции IRET вместо передачи событий через таблицу IDT (Interrupt Descriptor Table). Повышение надёжности достигается благодаря раздельной обработке поступления события в контексте ядра и контексте пользователя, защиты от вложенного выполнения NMI и сохранения в расширенном кадре стека всех связанных с исключением регистров CPU.
- В подсистему perf ajoutée поддержка блоков мониторинга производительности памяти (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 можно использовать для отслеживание потребления ресурсов памяти при определённых видах нагрузки.
- Ajouté par возможность использования режима реального времени (PREEMPT_RT) на 32-разрядных процессорах ARM. Ранее поддержка PREEMPT_RT была обеспечена для архитектур x86 и x86-64, ARM64, RISC-V и LoongArch.
- En appel système clone3() добавлены новые флаги: CLONE_NNP — interdiction получения новых привилегий в созданном процессе; CLONE_AUTOREAP — автоматическое завершение процесса вместо его превращения в процесс-зомби до выполнения функции wait() родительским процессом; CLONE_PIDFD_AUTOKILL — завершение дочернего процесса в случае закрытия связанного с ним дескриптора pidfd (например, при завершении родительского процесса).
- Для каждого модуля ядра в каталог /sys/module добавлен файл import_ns, содержащий список импортированных пространств имён символов (symbol namespace).
- В систему асинхронного ввода/вывода io_uring добавлена поддержка использования подсистемы BPF для создания обработчиков. Например, можно заменить основной цикл диспетчеризации на BPF-программу.
- Dans le sous-système BPF modernisé анализ использования стека, что значительно ускорило проверку верификатором многих BPF-программ.
- С целью оптимизации производительности réécrit подсистема hrtimer (high resolution timer). Планировщик задач теперь может использовать таймеры с высоким разрешением без потери производительности вместо менее точных таймеров.
- A continué перенос изменений из ветки Rust-for-Linux, concernant l'utilisation du langage Rust comme langage secondaire pour le développement de pilotes et de modules du noyau (la prise en charge de Rust n'est pas activée par défaut et n'entraîne pas son inclusion dans la liste des dépendances de compilation obligatoires du noyau). Jusqu'à la version 1.85 (fournie dans Debian 13) повышены требования к версии Rust, необходимой для сборки компонентов ядра. Добавлена экспериментальная Kconfig-опция CONFIG_RUST_INLINE_HELPERS для встраивания Си-прослоек в Rust-код во время компиляции (оптимизация ускорила работу блочного драйвера null на 2%). Добавлен макрос ‘const_assert!’. Расширены возможности модулей sizes, clk, ptr, sync, error.
- Dans le mécanisme SCHED_EXT, позволяющий использовать BPF для создания планировщиков CPU, ajoutée начальная возможность создания вложенных планировщиков (sub-scheduler), при помощи которых для каждого cgroup можно задействовать собственный планировщик задач.
- Продолжена оптимизация подсистемы подкачки (swap). Удалена старая структура swap_map, заменённая на механизм «Table d'échange». Изменение позволило повысить производительность и уменьшить потребление памяти в подсистеме подкачки.
- В подсистему DAMON (Data Access MONitor), позволяющую отслеживать доступ процесса к данным в оперативной памяти (например, можно узнать к каким областям памяти обращался процесс, а какие области памяти остались невостребованными), ajoutée поддержка разных алгоритмов автоматического réglage квот.
- В подсистеме трассировки mis en œuvre концепция внешних кольцевых буферов, позволяющая получать данные трассировки из виртуальных машин. Возможность задействована в гипервизорах KVM и nVHE для передачи данных трассировки из гостевой системы на сторону хоста.
- В подсистему RV (kernel.org) (Runtime Verification), предназначенную для проверки корректности работы высоконадёжных систем, добавлены компоненты мониторинга «stalle» для отслеживания задач, выполнение которых временно приостановлено или заблокировано, и «date limite» для анализа поведения планировщика задач.
Virtualisation et sécurité
- По умолчанию выставлен флаг PROC_MEM_FORCE_PTRACE, допускающий обход прав доступа к памяти процесса через файл /proc/PID/mem только для процессов, применяющих для отладки системный вызов ptrace().
- Добавлен новый набор hook-ов для LSM-модулей (Linux Security Module), упрощающий реализацию политик для стековых файловых систем, таких как overlayfs. В LSM также ajoutée hook для управления доступом к Unix-сокетам, который impliqué в LSM-модуле Landlock для назначения политик доступа к Unix-сокетам.
- Во встроенную криптобиблиотеку lib/crypto, предоставляющую более простые и быстрые функции, чем в традиционном crypto API, ajoutée поддержка алгоритмов AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH и SM3. Добавлена documentation по lib/crypto.
- Реализован режим pKVM (Protected KVM) для строгой изоляции mémoire anonyme с использованием расширений виртуализации для архитектуры AArch64. В данном режиме страницы памяти гостевой исключаются из таблицы виртуальных адресов хостовой системы.
- В гипервизор KVM добавлена поддержка пятой версии виртуального контроллера прерываний ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5).
Sous-système réseau
- Для unix-сокетов, создаваемых функцией socket(), mis en œuvre поддержка расширенных атрибутов файлов (xattr) user.*. Из областей применения отмечается выставление меток через расширенные атрибуты к Unix-сокетам, используемым для IPC Varlink, с целью их выделения из общей массы для инспектирования и отладки работы IPC при помощи BPF-программ. В systemd-journald расширенные атрибуты намерены использовать для определения формата лога в привязке к сокету /dev/log.
- Supprimé поддержка протокола UDP-Lite (RFC 3828), допускающего доставку пакетов с неправильной контрольной суммой с расчётом на то, что, например, частично повреждённые аудио и видеоданные могут быть восстановлены на уровне кодека. Протокол удалён так как им никто не пользуется.
- Supprimé возможность сборки стека IPv6 в форме модуля ядра, которая не применялась на практике (IPv6 либо встраивают в ядро, либо полностью отключают), но усложняла сопровождение так как при сборке IPv6 модулем ядра (CONFIG_IPV6=m), множество подсистем вынуждены добавлять бесполезные обработчики на случай выгрузки модуля IPv6.
Équipement
- Dans le pilote AMDGPU allumé новый дисплейный движок (DC) для APU AMD серии HD 7000 (Sea Islands, GCN 1.1).
- Dans le pilote Nouveau ajoutée начальная поддержка GPU NVIDIA GA100 на базе микроархитектуры Ampere.
- Продолжена работа над drm-драйвером (Direct Rendering Manager) Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake. Добавлена поддержка графической подсистемы процессоров Intel Nova Lake-P. Реализованы очищаемые буферные объекты (Purgeable Buffer Objects).
- Nous avons poursuivi l'intégration des composants du pilote Nova pour les GPU NVIDIA équipés du firmware GSP utilisé depuis la série NVIDIA GeForce RTX 2000 basée sur la microarchitecture Turing. Le pilote est écrit en Rust. La prise en charge initiale des GPU basés sur la microarchitecture Turing a été ajoutée.
- Добавлен DRM-драйвер corebootdrm для вывода графики через фреймбуфер прошивок на базе CoreBoot.
- Ajouté par поддержка звуковых ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP и WM8962. Улучшена поддержка звуковых устройств с интерфейсом USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
- Добавлен драйвер yogafan для отслеживания скорости вращения кулера на ноутбуках Lenovo Yoga, Legion и IdeaPad.
- Ajouté par поддержка ARM-плат, SoC и устройств: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 и ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
- Supprimé поддержка применяемых в SoC Baikal-T1 контроллеров AHCI SATA и PCIe, а также драйверов таймера, памяти, physmap, шины, hwmon, dwc и bt1-rom. В качестве причины удаления называется отсутствие сопровождения и незавершённая интеграция в состав ядра компонентов платформы Baikal, производство которой в РФ свернули в ноябре 2025 года.
- Supprimé 12 драйверов для Ethernet-устройств с интерфейсами ISA и PCMCIA, выпускавшихся до 2002 года, для которых не нашлись пользователи, применяющие их в рабочих системах. Также из ядра исключены подсистема RNIS, реализации протоколов 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-инструментов ошибок, которые никто не берётся исправлять и вся нагрузка нa устранение серьёзных проблем ложится на сопровождающих основные сетевые подсистемы ядра. Всего удалено более 140 тысяч строк кода.
Source: linux.org.ru
