Релиз ядра Linux 6.6: возможности, обновления и самые заметные изменения
В мире Linux все идет своим чередом, и идет по плану. Спустя два месяца после выхода предыдущего релиза ядра выпущен новый. На днях Линус Торвальдс представил ядро Linux 6.6. Как всегда, в нем достаточно много изменений и исправлений. Всего — 15291 исправлений от 2058 разработчиков. Изменены 14844 файла, добавлено 553359 строк кода, удалено — 284012. Подробности обо всем этом — под катом.
Оборудование и драйвера
- Здесь не так много изменений, но большинство важные. Так, в драйвере AMDGPU реализована поддержка SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 и GFX 9.4.3. Кроме того, был оптимизирован код загрузки прошивок Platform Security Processor. Также добавлена поддержка технологии Freesync Panel Replay V2 (адаптивная синхронизация).
- Что касается драйвера i915, то здесь расширена реализация поддержки чипов Intel Meteor Lake, а также улучшена поддержка технология защиты от копирования, которая называется High-bandwidth Digital Content Protection.
- В Kconfig теперь нет опций отключения загрузки микрокода на этапе сборки, т.е. MICROCODE_INTEL и MICROCODE_AMD.
- Добавлена поддержка Intel LunarLake, Intel ArrowLake и AMD ACP5x, кодеков Cirrus Logic CS42L43, Realtek RT1017 и TI TAS2781, а также усилителей Cirrus Logic CS35L56 и winic aw88261. Добавлена поддержка ASoC AMD Van Gogh.
- Добавлен драйвер USB MIDI 2.0 Gadget, который эмулирует USB MIDI 2.0, привязанный к устройству ALSA UMP rawmidi.
- Добавлена поддержка Ethernet-контроллеров Broadcom ASP 2.0 и Marvell 88Q2XXX.
- Добавлена поддержка панелей Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 и EDT ET028013DMA, дисплейных контроллеров Loongson и контроллеров сенсорных экранов Azoteq IQS7222D/IQS7210A/7211A.
- Добавлена поддержка ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7)
- Добавлена поддержка ARM-плат Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3, Radxa ROCK 4SE.
Память и системные сервисы
- Одно из наиболее важных изменений — появление нового планировщика задач EEVDF (Earliest Eligible Virtual Deadline First). Им заменили CFS (Completely Fair Scheduler). EEVDF умеет учитывать процессы, которые не получили достаточное количество вычислительных ресурсов. Либо, наоборот, получили слишком много процессорного времени. Все это учитывается при выборе следующего процессора для передачи выполнения.
- Кроме того, добавлены дополнительные настройки рабочих очередей. Они нужны для повышения эффективности повторного использования процессорного кэша на крупных системах, которые имеют несколько кэшей третьего уровня (L3). В составе ядра теперь есть и утилита tools/workqueue/wq_dump.py для проверки текущей конфигурации рабочих очередей.
- Также добавлена начальная поддержка операций и команд для сетевых сокетов в подсистему io_uring. Также в подсистеме ускорен прямой ввод/вывод (Direct I/O) в асинхронном режиме. Тесты после добавленных изменений показали прирост пропускной способности и снижение задержек при выполнении операций ввода-вывода в 37%.
- В настройке /sys/devices/system/cpu/smt/control добавлена поддержка числовых параметров, определяющих число потоков, доступных для каждого ядра CPU. Эта возможность применима для процессоров PowerPC, поддерживающих режим горячего включения симметричной многопоточности («hotplug SMT»).
- Еще важное изменение — продолжается перенос изменений из ветки Rust-for-Linux. Так, сейчас реализован переход на Rust 1.71.1 и bindgen 0.65.1. Кроме того, добавлены процедурные макросы 'paste!' и '#[derive (Zeroable)]'.
- Появилась подсистема «eventfs», которая дает возможность снизить потребление памяти в системе трассировки. В первую очередь, за счет избавления от хранения лишних структур, которые применяются для предоставления точек трассировки в файловой системе.
- Расширена поддержка архитектуры RISC-V. В частности, для нее добавлена поддержка доступа к счётчикам производительности из пространства пользователя и возможность размещения дампа ядра после сбоя в области за границей 4GB.
- Также расширена и поддержка архитектуры LoongArch, для нее добавили поддержку отладочных инструментов KDB, KGDB, kcov, KFENCE и KASAN.
Дисковая подсистема и файлы
- Здесь немало изменений, гораздо больше, чем в предыдущем релизе. В частности, система OverlayFS получила поддержку сохранения хэшей fs-verity в расширенном атрибуте (xattr) overlay.verity. Это нужно для проверки целостности и подлинности файлов в нижних слоя OverlayFS при помощи криптографических хэшей и ключей.
- В системе XFS провели подготовку к использованию утилиты fsck. Ее можно использовать для проверки и исправления проблем в онлайн-режиме, при этом нет необходимости отмонтировать файловую систему.
- В VFS добавили поддержку оперативного изменения параметров со временем доступа и изменения.
- В Btrfs объявили устаревшим встроенный механизм проверки целостности, включаемый на этапе сборки через параметр BTRFS_FS_CHECK_INTEGRITY.
- В Ext4 добавлены периодические проверки обновления суперблока и ускорены операции выделения памяти при дозаписи в конец файла.
- Также обновлена EROFS, которая применяется для использования на разделах, доступных в режиме только для чтения. Изменения касаются добавления поддержки алгоритма сжатия Deflate. Для ускорения поиска расширенных атрибутов задействована вероятностная структура bloom filter.
- Также добавлена настройка CONFIG_BUFFER_HEAD, которая позволяет собрать ядро без использования структуры buffer_head.
- Что касается ReiserFS, то эта система переведена в разряд устаревших. Ее прекратят поддерживать в 2025 году. Основная проблема, из-за которой ФС и перестанут поддерживать — практическое отсутствие сопровождения файловой системы.
- В NFS-сервере появился механизм делегирования операций записи для NFSv4.
Сеть
- Здесь изменений не так много, но есть важные. В частности, в BPF добавлена поддержка дефрагментации пакетов IPv4 и IPv6, а также возможность фильтрации фрагментированных пакетов. Кроме того, появился новый обработчик update_socket_protocol, который дает возможность BPF-программам изменять запрошенный протокол для новых сокетов.
- В реализации семейства адресов F_XDP (eXpress Data Path) расширена возможностью работы с пакетами, хранимыми в нескольких буферах.
- Также снят признак экспериментальной разработки с такого модуля, как ksmbd. Он предлагает работающую на уровне ядра реализацию файлового сервера на базе протокола SMB3.
Виртуализация и безопасность
- Снова стоит упомянуть изменения для архитектуры RISC-V. В нее включена рандомизация размещения ядра в памяти при загрузке.
- Также теперь появился механизм реализации Shadow Stack, благодаря которому можно блокировать большое количество различных эксплоитов посредством аппаратных возможностей процессоров Intel для защиты от перезаписи адреса возврата из функции в случае переполнения буфера в стеке. Дело в том, что после передачи функции адреса возврата сохраняются процессором не только в обычном стеке, но и в отдельном, так называемом, «теневом», стеке, который напрямую изменить нельзя. Аппаратный теневой стек поддерживается только в 64-разрядных сборках.
- В системный вызов userfaultfd () добавлена операция UFFDIO_POISON, позволяющая пометить страницы памяти «отравленными» (poisoned), что может быть использовано для переноса повреждённых страниц памяти при миграции виртуальных машин с одной системы на другую.
- Что касается NFS-сервера, то для него прекращена поддержка устаревших типов шифрования Kerberos, где используются алгоритмы DES и 3DES.
- В окружении гипервизора Hyper-V при запуске добавлена поддержка гостевых систем, которые защищаются при помощи AMD SEV-SNP (Secure Nested Paging) и Intel TDX (Trusted Domain Extensions).
- В системный вызов seccomp () добавлен флаг SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP, позволяющий обрабатывать события из отслеживаемых процессов в синхронном режиме для более эффективной работы планировщика задач.
После выхода нового релиза, как обычно, выложено и полностью свободное ядро 6.6 — Linux-libre 6.6-gnu. Оно очищено от элементов прошивок и драйверов, которые содержат несвободные компоненты или участки кода, связанные с ограничениями производителей.