
Линус Торвальдс представил ядро Linux 6.15 всего через два месяца после предыдущего релиза. Среди ключевых новшеств: механизм аудита в Landlock, режим закрепления маппинга памяти, подсистема fwctl, драйвер Nova для GPU NVIDIA, поддержка Hyper-V как хост-системы, зонированные устройства хранения в XFS, оптимизации сетевой подсистемы, удаление опции HIGHMEM64G, scrub-проверка в Bcachefs и управление операциями через io_uring. Все подробности — под катом.
Системные сервисы и память
Давайте посмотрим, что есть нового.
Прежде всего, стоит сказать о поддержке 32-разрядных систем x86 с более чем 8 CPU и 4 ГБ ОЗУ прекращена, так как такое оборудование устарело, а современные системы используют 64-разрядные процессоры. Опция CONFIG_HIGHMEM64G, включавшая режим PAE для систем с более чем 4 ГБ ОЗУ, удалена. Рассматривается прекращение поддержки процессоров 486 (M486, M486SX, AMD ELAN), не поддерживающих инструкции CX8 и регистр TSC. Минимальная версия GCC для сборки ядра повышена до 8.1, Clang — до 15.0.0.
Добавлена подсистема fwctl (Firmware Control), предоставляющая API для безопасного управления прошивками и выполнения обработчиков из пространства пользователя. На её основе реализованы драйверы для устройств CXL, Ethernet-адаптеров Mellanox ConnectX (mlx5) и сервисных карт AMD/Pensando. Механизм pidfd расширен: теперь можно извлекать данные о завершении процесса через pidfd после освобождения ресурсов родительским процессом, а флаг PIDFD_SELF позволяет процессу ссылаться на себя.
Для архитектуры RISC-V реализовали поддержку расширений BFloat16, Zaamo (атомарные операции с памятью), Zalrsc (Load-Reserved/Store-Conditional) и ZBKB (битовые операции для криптографии). При трассировке теперь есть возможность сохранять аргументы функций в логах. В подсистему io_uring добавлена поддержка чтения событий epoll, что снижает число переключений контекста и позволяет обрабатывать несколько событий одновременно.
В eBPF улучшена верификация программ с циклами, добавлены инструкции timed_may_goto, load-acquire и store-release, а также возможность изменения расширенных атрибутов файлов. Новая функция try_alloc_pages() предназначена для выделения памяти в ограниченных контекстах. Новый примитив блокировок rqspinlock выявляет ситуации взаимных блокировок, позволяя загружать BPF-программы с неподтвержденной корректностью блокировок.
Надежность выделения больших страниц памяти (huge-page) значительно повышена. Вычисление контрольных сумм CRC64 на x86 ускорено в 100 раз благодаря векторным инструкциям AVX-512. Продолжен перенос изменений из ветки Rust-for-Linux: добавлена поддержка ARMv7, модули dma и hrtimer, макрос #[kunit_tests()] для unit-тестов, расширены модули list, str, sync, error и alloc с новым синтаксисом &raw. В подсистеме perf реализована возможность профилирования задержек на основе данных планировщика задач. Параметр traceoff_after_boot отключает трассировку после загрузки init. POSIX-таймеры доработаны для поддержки CRIU, позволяя сохранять и восстанавливать идентификаторы таймеров.

Безопасность с виртуализацией
Linux теперь может использоваться как корневое окружение (Dom0) для гипервизора Hyper-V через устройство /dev/mshv, обеспечивая управление гипервизором, запуск гостевых систем, выделение ресурсов и взаимодействие с оборудованием. В модуль Landlock добавлен механизм аудита, позволяющий анализировать причины блокировок доступа, включая информацию о заблокированных операциях и сработавших правилах.
LSM-модули получили возможность контролировать обращения к io_uring, блокируя попытки обхода ограничений системных вызовов; поддержка реализована в SELinux. SELinux также позволяет применять политики к любым данным, загружаемым ядром, включая прошивки, политики безопасности и сертификаты. Режим закрепления (seal) маппинга памяти (vDSO, vsyscall, vvar, sigpage, uprobes) переводит их в режим только для чтения, защищая от уязвимостей. Режим отключен по умолчанию (CONFIG_MSEAL_SYSTEM_MAPPINGS), чтобы не нарушить работу некоторых приложений.
Сеть
Глобальную блокировку RTNL продолжают устранять, заменяя на блокировки для отдельных сетевых пространств. Добавлена поддержка получения сетевых пакетов через io_uring с zero-copy, что позволило обработать 200 Гбит/с трафик на одном ядре CPU. Введены sysctl tcp_rto_max_ms и опция TCP_RTO_MAX_MS для задания максимального времени между попытками повторной передачи пакетов. В BPF добавлены callback-вызовы для диагностики сетевых задержек.
Среди ключевых оптимизаций производительности в Linux 6.15 — улучшение GRO для XDP, что позволило удвоить скорость TCP-потоков при балансировке нагрузки, и замена spin-блокировки на RCU в функции connect(), давшая двукратный прирост производительности, с дополнительным ускорением на 229% за счёт оптимизации хэширования. Ускорена работа MPTCP в однопоточном режиме на 29%, производительность netfilter увеличена на 20% благодаря исключению поиска маршрутов в FIB, а UDP стал на 10% быстрее при флуде за счёт исключения лишних операций с полем sk_tsflags. Также добавлен драйвер для протокола MCTP-over-USB.
Дисковая подсистема, файловые системы
В fanotify добавлено отслеживание событий монтирования и отмонтирования. XFS поддерживает зонированные устройства хранения (последовательная запись в зоны групп блоков), флаг rwf_dontcache для отключения кэширования при записи и атомарную запись нескольких блоков. В Btrfs реализована возможность задания отрицательных уровней сжатия zstd (-15..-1, например, compress=zstd:-5) для ускорения работы, улучшено кэширование путей (ускорение операции send на 30%) и добавлена поддержка блоков размером 2 КБ.
EXT4 оптимизирована для воспроизведения журнала при нагрузках, характерных для Lustre, добавлен линейный поиск записей dentry для режима без учета регистра и повышена стойкость при обработке поврежденных ФС. Опция монтирования errors=remount-ro доработана. F2FS поддерживает ioctl для получения приоритета операций ввода/вывода и переходит на page folios. Bcachefs добавляет режим scrub для проверки данных и метаданных с восстановлением ошибок, а также поддержку блоков, превышающих размер страницы. Формат дисковых структур Bcachefs стабилизирован, дальнейшие изменения будут опциональными.
EROFS поддерживает 48-разрядную адресацию блоков. FUSE добавляет sysctl default_request_timeout и max_request_timeout для отслеживания зависаний, а максимальный размер имен файлов увеличен до 1024 символов. Системный вызов statmount() предоставляет данные о маппинге идентификаторов пользователей примонтированных ФС. Реализована возможность создания точки монтирования с иным маппингом идентификаторов. API монтирования упрощает создание сложных иерархий ФС, скрывая отдельные части.
Подсистема блочных устройств поддерживает аппаратные устройства защиты ключей шифрования. SMB включает опцию is_network_name_deleted и режим smb_server_kerberos5 по умолчанию. OverlayFS поддерживает опцию override_creds, использующую учетные данные вызывающего пользователя для доступа к нижним уровням хранилища. ExFAT ускоряет удаление файлов, группируя запросы discard (время удаления файла 80 ГБ сократилось с 286 до 1.6 секунд). Все псевдо-ФС и EXT2 переведены на новое API монтирования. Удален код для устаревших ФС SYSV (SystemV/386, Xenix, Coherent).
Оборудование
Добавлен драйвер Nova для GPU NVIDIA с GSP-прошивками (GeForce RTX 2000, Turing), написанный на Rust. Каркас nova-core (400 строк кода) реализует базовые абстракции над интерфейсами GSP. Планируется добавление nova-drm и VFIO-драйвера для vGPU. Драйвер Xe для Intel Xe (Arc, Tiger Lake) поддерживает SVM для разделяемой памяти CPU/GPU. В i915 добавлены идентификаторы новых GPU, в Nouveau переработан GSP RPC и добавлен drm_slave_encoder. AMDGPU поддерживает DCN36 и пользовательские кривые яркости. Adreno добавляет поддержку Qualcomm Adreno 623.
Поддержаны сенсорные панели Apple Touch Bar и eUSB2V2 (скорость до 4.8 Гбит/с, напряжение 1.2 В). Добавлены Ethernet-адаптеры Intel Killer E5000 (RTL8126), экранные панели Visionox RM692E5, Rockchip w552793dba-v10, kingdisplay-kd110n11-51ie, starry-2082109qfh040022-50e и ноутбуки Samsung Galaxy Book. Звуковые системы включают Presonus Studio 1824c, Jabra Evolve 65, DSP-модули AMD ACP 7.x, AWINC WM88166, Everest ES8388, Intel AVS PEAKVOL и GAIN, с улучшенной поддержкой звука на ASUS, HP и Lenovo.
Добавлена поддержка ARM-плат и SoC: Arm Morello, AMD Versal NET, Google Pixel Pro 6, NetCube Kumquat, MYIR Remi Pi, Huawei Matebook E Go, Milk-V Jupiter ST STM32MP2, Mediatek MT8370, Apple T2, Skov (i.MX8MP), EVK (i.MX95), Rockchip RK35xx, Allwinner A523, 11 плат Toradex на i.MX6.
В Linux 6.15 принято 15 945 исправлений от 2 154 разработчиков, размер патча — 59 МБ (изменено 13 596 файлов, добавлено 739 608 строк кода, удалено 312 168 строк). Около 41% изменений связаны с драйверами, 16% — с архитектурным кодом, 13% — с сетевым стеком, 5% — с файловыми системами, 4% — с внутренними подсистемами.
А еще вышел Linux-libre 6.15-gnu, очищенный от несвободных компонентов: нейтрализована загрузка блобов в драйверах nova, Qualcomm iris v4l2, Airoha NPU, Tehuti Networks TN40xx, Realtek 8814A, Apple Silicon SoC touchscreen, Renesas UFS, aw88166 audio. Удалены ссылки на тивоизированные файлы, прекращена чистка драйвера Spider 1Gb ethernet.
Sulerad
Так они последние лет так 20 выходят почти всегда через каждые два месяца: https://en.wikipedia.org/wiki/Linux_kernel_version_history
Ну разве что на новогодние праздники стабильно задерживаются.