Два месяца работы и готово: что нового в ядре Linux 5.17

-wu8alv99xregwtiqwqnle9l85o.jpeg
Источник картинки: OMG! Ubuntu!

Выхода нового ядра Linux ожидали многие, о чем можно судить хотя бы по количеству публикаций в технологических СМИ, предвкушавших новинки Linux 5.17. И, наконец, Линус Торвальдс представил новый релиз, опубликовав его 21 марта. Нового и хорошего действительно много, так что опробовать новую версию обязательно стоит, если вы этого еще не сделали.

Объём проделанной работы достаточно большой. Так, в новой версии приняли 14203 исправления от 1995 разработчиков. Общий размер патча составляет 37 МБ. Что касается изменений, то они затронули 11366 файлов, добавлено 506043 строк кода, удалено 250954 строк. Весьма значительная часть изменений в ядре, а это около 44%, связаны с драйверами устройств. Еще около 16% изменений имеют отношение к обновлению кода, имеющего отношение к аппаратным архитектурам, 15% — сетевой стек, 4 — файловые системы, ну и еще 4% изменений связаны с подсистемами ядра. О подробностях — ниже.

Железо и драйвера


Коль уж большая часть изменений связана с оборудованием и его драйверами, то начнем как раз с этого блока:

  • В драйвере i915 появилась поддержка чипов Intel Raptor Lake S, плюс активирована поддержка графической подсистемы чипов Intel Alder Lake P, она поддерживается по умолчанию. Кроме того, для Intel Ice Lake включена поддержка технологии Adaptive-Sync (VRR). Она дает возможность адаптивно изменять частоту обновления экрана дисплея для обеспечения плавного вывода изображения.
  • Активирована поддержка отладочной технологии STB (Smart Trace Buffer) для всех поддерживающих её GPU AMD. Она дает возможность анализировать сбои и без особых проблем выявлять источник сбоев путем сохранения в выделенном буфере данных о функциях, которые выполнялись перед сбоем системы.
  • Еще одна интересная новинка — включение поддержки экранов для вывода конфиденциальной информации в подсистему drm (Direct Rendering Manager) и драйвер i915. Дело в том, что некоторые устройства оснащаются дисплеями со встроенным режимом конфиденциального просмотра, который не дает возможности подсмотреть, что там на экране, со стороны. Так вот, нововведения позволяют подключать специализированные драйверы для этих устройств, управляя режимами конфиденциального просмотра при помощи изменения свойств в KMS-драйверах.
  • Вернулась поддержка аппаратного ускорения прокрутки в консоли в драйверы fbcon/fbdev.
  • Продолжается работа по расширению поддержки чипов Apple M1. Например, теперь появилась возможность работы драйвера посредством фреймбуфера, предоставляемого прошивкой.
  • Добавилась поддержка кучи дополнительных устройств, включая Snapdragon 7c, 845 и 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (применяется в Wi-fi маршрутизаторах), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4–8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
  • Теперь поддерживается работа процессоров ARM Cortex-M55 и Cortex-M33.
  • Кроме того, поддерживаются и системы на базе CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
  • Хорошие новости относительно архитектуры RISC-V — теперь поддерживается SoC StarFive JH7100.
  • А еще расширена поддержка датчиков в ультратонком (Lenovo Yoga Book). У меня такой есть, используется в работе, так что новость отличная, давно ждал апдейта драйверов.
  • Кроме этого ноутбука, новая версия ядра поддерживает работу с датчиками, которые используются на материнских платах Asus X370, X470, B450, B550 и X399 на базе процессоров AMD Ryzen.
  • Возможно, кто-то ждал появления возможности работать с модулями Intel Wi-Fi AX211, так вот, теперь он есть.
  • Обновлена поддержка управления питанием и напряжением в старых 32-разрядных устройствах на базе SoC Tegra, таких как ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 и Pad TF300TG.
  • Отличная новость для производства — теперь поддерживаются промышленные компьютеры Siemens.
  • Ну и как завершающий штрих, добавлена еще и поддержка звуковых систем и кодеков AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel systems using NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx.


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


В этом блоке тоже достаточно много изменений, некоторые из которых были давно ожидаемыми:

  • Обновленная реализация генератора псевдослучайных чисел RDRAND. Стоит напомнить, что он отвечает за работу устройств /dev/random и /dev/urandom. Таким образом, безопасность генератора случайных чисел повышена. Этого удалось достичь путем ухода от алгоритма SHA1 и исключению перезаписи вектора инициализации RNG.
  • Появилась расширенная проверка новых записей в таблице страниц памяти. Нововведение дает возможность выявлять нелегальные операции совместного доступа к страницам памяти разных процессов. Если обнаружена атака, она блокируется на ранней стадии.
  • Важный момент — добавлена защита от уязвимостей в процессорах, что вызвано спекулятивным выполнением инструкций после операций безусловного прямого перехода.
  • Еще хорошая новость — добавление виртуального хостового драйвера pvUSB для гипервизора Xen, который предоставляет доступ к USB-устройствам, проброшенным в гостевые системы. Таким образом, из гостевых систем теперь можно обращаться к физическим USB-девайсам, которые закреплены за гостевой системой.
  • Появилась поддержка отладочного инструмента KCSAN (Kernel Concurrency Sanitizer), который используется для динамического выявления состояний гонки внутри ядра.
Если вы читаете наш блог, вас могут заинтересовать эти тексты:

→ Как мы выбирали лучшие из новых видеокарт NVIDIA
→ Зачем дата-центры устанавливают динамические источники бесперебойного питания
→ Стоит ли создавать собственный корпус для сервера


Файловые системы, диски, I/O


  • Появилась возможность вложенного маппинга идентификаторов пользователей примонтированных файловых систем. Он используется для сопоставления файлов определенного пользователя на примонтированном чужом разделе с другим пользователем в текущей системе.
  • Кроме того, с нуля переписана подсистема fscache. Она используется для организации кэширования в локальной файловой системе данных, кторые проходят через сетевые файловые системы. Новая реализация отличается от прежней оптимизацией и упрощением кода.
  • Важный момент — проведена оптимизаций операций логгирования и fsync для больших каталогов в файловой системе Btrfs. Обеспечена поддержка индексации и поиска по размеру записей о свободном пространстве. Нововведение позволило на треть снизить задержки, одновременно сократив время поиска.
  • Ext4 перевели на новый API для монтирования. Убраны опции монтирования lazytime и nolazytime. Они добавлялись как временное изменение для упрощения перевода util-linux на использование флага MS_LAZYTIME.


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


  • В новом ядре появилась поддержка нововведения от Intel. Речь идет об интерфейсе PFRUT (Platform Firmware Runtime Update and Telemetry), который дает возможность обновлять прошивки без перезагрузки системы.
  • Включен в ядро драйвер amd-pstate. Он обеспечивает динамическое управление частотой для достижения оптимальной производительности. Поддерживает он новые чипы CPU и APU AMD, включая некоторые чипы поколения Zen 2 и Zen 3. К слову, разрабатывался он вместе с Valve. Основная цель — повышение эффективности управления энергопотреблением.
  • Плюс добавлен набор утилит rtla, что дает возможность анализировать работу в режиме реального времени, выявляя причины непредвиденных задержек.
  • Ну и еще в ядро интегрирована вторая серия патчей с реализацией концепции фолиантов страниц памяти (page folios).


Сеть


  • Одно из заметных нововведений — возможность использования протокола MCTP (Management Component Transport Protocol) поверх устройств с последовательным интерфейсом.
  • В отношении IPv4 разрешено прикрепление raw-сокетов не к локальным IP-адресам, используя опции IP_FREEBIND и IP_TRANSPARENT.
  • API ethtool обновлен, теперь здесь есть возможность установки и определения размера буферов входящих и исходящих пакетов.
  • Функция x86_64 csum_partial (), которая нужна для вычисления контрольных сумм TCP, гораздо меньше загружает аппаратные ресурсы системы с ОС.


Что касается следующего релиза, то он ожидается где-то к концу весны. Некоторые возможные нововведения уже известны, но говорить о них пока еще рано, все еще может измениться. Наверное, ждать придется снова пару месяцев, но результат ожиданий того стоит.

9qjtzxam6gpk-3rhl5tanrpfdze.gif

© Habrahabr.ru