image

Начало 2024 года приятное — вышел релиз ядра Linux 6.7. Как всегда, есть новости, изменения, кроме того, из ядра убрали устаревшие компоненты. Среди новинок можно отметить прекращение поддержки архитектуры Itanium, добавление ФС Bcachefs, а также поддержку futex в io_uring.

Что касается статистики, то в новом релизе сразу 18405 исправлений от 2066 разработчиков. Размер патча составляет 72 МБ (изменения затронули 13467 файлов, добавлено 906147 строк кода, удалено 341048 строк). Как всегда, больше всего изменений связанных с драйверами устройств, их около 45%/. Гораздо меньше — в обновлениях, которые имеют отношение к поддержке архитектур, сетевому стеку, файловым системам и внутренним подсистемам ядра — 14%, 13%, 5% и 3% соответственно. Подробности — под катом.

Оборудование и драйвера


  • Обновился драйвер AMDGPU. Появилась поддержка GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 и DML2. Кроме того, при переключении видеорежима теперь нет мерцания.
  • Для драйвера i915 добавлена поддержка чипов Intel Meteor Lake и добавлена начальная реализация Intel LunarLake (Xe 2).
  • Еще одно важное обновление связано с тем, что в модуль ядра Nouveau добавлена начальная поддержка прошивок GSP-RM. Они применяются в в GPU NVIDIA RTX 20+ для выноса операций инициализации и управления GPU на сторону отдельного микроконтроллера GSP (GPU System Processor). Теперь драйвер может работать не посредством прямого программирования операций взаимодействия с «железом», а через прошивку. В результате добавление поддержки новых адаптеров упрощается, поскольку будут использоваться уже готовые вызовы для инициализации и управления энергопотреблением.
  • Кроме того, появилась поддержка ARM SoC: Qualcomm Snapdragon 720G (применяется в смартфонах Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (применяется в маршрутизаторах и NAS).
  • Важное обновление для любителей DIY — добавлена поддержка ARM-плат Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
  • Кроме того, теперь поддерживается телефон Fairphone 5.
  • Появилась поддержка звуковых интерфейсов ноутбуков HUAWEI, поставляемых с CPU AMD. Добавлена поддержка дополнительных спикеров, устанавливаемых на ноутбуки Dell Oasis 13/14/16. Аналогично и для спикеров ASUS K6500ZC. Добавлена поддержка индикатора отключения звука на ноутбуках HP 255 G8 и G10. Добавлена поддержка звуковых драйверов acp6.3. Добавлена поддержка профессиональных интерфейсов звукозаписи Focusrite Clarett+ 2Pre и 4Pre.

Память и системные сервисы


  • В ядре теперь нет поддержки Intel Itanium. Они сами не продаются с 2021 года, причем их актуальность и тогда уже была невелика, хотя поддерживались они целых 20 лет. Проблемы с процессорами возникли из-за недостаточно высокой производительности — AMD64 их обошли. Единственная платформа, где еще использовались процессоры Itanium — серверы HP Integrity, приём заказов на которые был прекращён три года назад. В итоге, код ia64 был удален, поскольку смысла в нем уже не было. Кстати, Торвальдс заявил, что поддержка может быть возвращена, но только в том случае, если найдется компания, которая сможет сопровождать эту платформу не менее, чем в течение года.
  • Кроме того, удален старый слой videobuf, использовавшийся для управления фреймвбуферами в медиаподсистеме и более 10 лет назад заменённый на новую реализацию videobuf2.
  • Интересный апдейт относительно языка Rust — сейчас продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра. Так, в новой версии выполнен переход на Rust 1.73, плюс предложен набор привязок для работы с рабочими очередями (workqueues).
  • Теперь поддерживается механизм binfmt_misc для добавлена поддержки новых форматов исполняемых файлов (например, для запуска скомпилированных приложений на Java или Python) внутри отдельных непривилегированных пространств имён (namespace).
  • В подсистеме BPF добавлена поддержку исключений. Они обрабатываются как неотложный выход из BPF-программы с возможностью безопасного раскручивания кадров стека.
  • Также появился кольцевой буфер «objpool» c масштабируемой реализацией высокопроизводительной очереди для выделения и возвращения объектов.
  • Важный апдейт относительно архитектуры RISC-V — для нее добавлена возможность использования режима проверки Shadow-Call Stack, доступного в Clang 17. Он предназначен для защиты от перезаписи адреса возврата из функции в случае переполнения буфера в стеке.
  • Для архитектур ARM32 и S390x добавлена поддержка актуального набора (cpuv4) инструкций BPF.
  • Добавлен новый режим сканирования страниц памяти в механизм слияния идентичных страниц памяти (KSM: Kernel Samepage Merging).



Дисковая подсистема и файлы


  • Среди наиболее важных изменений в этой секции, как и было озвучено в анонсе — добавление файловой системы Bcachefs. Это попытка увеличить производительность, надежность и улучшить масштабируемость, характерные для XFS. Все это — вместе с элементами расширенной функциональности, которые свойственны для Btrfs и ZFS. Среди новы возможностей — включение в раздел нескольких устройств, многослойные раскладки накопителей (нижний слой с часто используемыми данными на базе быстрых SSD, а верхний слой с менее востребованными данными из жестких дисков), репликация (RAID 1/10), кэширование, прозрачное сжатие данных (режимы LZ4, gzip и ZSTD), срезы состояния (снапшоты), верификация целостности по контрольным суммам и многое другое.
  • Кроме того, в Btrfs сразу два важных апдейта — появление упрощенного режима квот, который дает возможность добиться более высокой производительности, а также новая структура данных «stripe tree», подходящая для логического маппинга экстентов в ситуациях, когда физических маппинг не совпадает на разных устройствах.
  • Что касается ФС Ceph, то в ней реализована поддержка маппинга идентификаторов пользователей примонтированных файловых систем, применяемого для сопоставления файлов определённого пользователя на примонтированном чужом разделе с другим пользователем в текущей системе.
  • В exFAT добавлены ioctl-вызовы для чтения и изменения атрибутов ФС. Добавлена обработка каталогов нулевого размера.
  • В F2FS реализована возможность использования блоков размером 16K.
  • В OverlayFS предложены опции монтирования «lowerdir+» и «datadir+».
  • В XFS проведена оптимизация нагрузки на CPU в коде распределения блоков в реальном времени
  • Наконец, код EXT2 переведён на использование фолиантов страниц памяти (page folios).

Сеть


  • В драйвере NVMe-TCP (NVMe over TCP) теперь доступна поддержка шифрования канала передачи данных с использованием TLS (применяется KTLS и фоновый процесс в пространстве пользователя tlshd для согласования соединения).
  • Кроме того, в TCP добавили дополнительную возможность использования временных меток (TCP TS) с микросекундной точностью (RFC 7323).
  • Также в TCP-стек добавили поддержку расширения TCP-AO (TCP Authentication Option, RFC 5925). Оно позволяет верифицировать TCP-заголовки по MAC-кодам (Message Authentication Code), используя более современные алгоритмы HMAC-SHA1 и CMAC-AES-128.
  • Планировщик пакетов fq оптимизирован, так что пропускная способность увеличена на 5% при больших нагрузках.
  • В NFS улучшена реализация потоков с RPC-сервирвисами.

Виртуализация и безопасность


  • Не обойдена вниманием архитектура LoongArch — для нее реализована поддержка виртуализации с использованием гипервизора KVM.
  • Также есть и апдейт для систем RISC-V, для них в отношении гипервизора KVM появилась поддержка расширения Smstateen, блокирующего обращение виртуальной машины к регистрам CPU, которые явно не поддерживаются гипервизором.
  • Для KVM на система на базе x86 разрешено использование до 4096 виртуальных CPU.
  • В подсистему fscrypt добавлена возможность шифрования данных блоками, размером меньше, чем размер блока в файловой системе. Подобное может потребоваться для задействования аппаратных механизмов шифрования, поддерживающих только небольшие блоки (например, контроллеры UFS, поддерживающие только размер блока 4096, смогут использоваться с ФС с размером блока 16K).
  • В подсистему AppArmor добавлена возможность управления доступом к механизму io_uring и созданию пространств имён идентификаторов пользователя (user namespaces), что позволяет выборочно разрешать доступ к данным возможностям только определённым процессам.

Как всегда, есть и полностью свободная версия ядра — в ней нет проприетарных элементов. Так, в новом релизе обновлён код чистки блобов в различных драйверах и подсистемах, например, в драйверах amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs и btqca. Убраны блобы и из новых драйверов mt7925, tps6598x, aw87390 и aw88399.

Другие интересные материалы


Комментарии (2)


  1. stikriz1
    10.01.2024 07:12

    Проприетарный драйвер видеокарты  NVIDIA не слетит?


  1. seezon
    10.01.2024 07:12

    Кроме того, появилась поддержка ARM SoC: Qualcomm Snapdragon 720G

    Получается, теперь можно поставить полноценный ARM линукс на телефон?