Cоздатель операционной системы – Линус Торвальдс традиционно представил важное обновление ядра Linux 5.5. Работа над изменениями заняла у команды около двух месяцев.
О патче в цифрах
Представленные в патче изменения затронули 11,8 тыс. файлов. Над патчем трудились 2 тыс. разработчиков, они:
- добавили 61 тыс. строк кода;
- удалили 29 тыс. строк;
- приняли 15,5 тыс. исправлений.
Значительная часть изменений (44%) затрагивает драйвера устройств. На обновление кода для конкретных аппаратных архитектур пришлось 18% изменений, на сетевой стек – 12%. Еще 4% связаны с файловыми системами, 3% – с внутренними подсистемами ядра ОС.
Файловая и дисковая системы
Файловая система Btrfs теперь поддерживает алгоритмы расчета контрольных сумм sha256, blake2b и xxhash64. Функция зеркалирования для RAID1 позволяет одновременно сохранять данные на 3-4 устройства, а не на 2, как раньше.
Для файловой системы NFS ускорили операции между разными устройствами. Теперь передавать данные с одного сервера на другой можно, не копируя их дополнительно на стороне клиента.
Важные изменения произошли и в родной Ext4. При шифровании можно использовать блоки меньшего размера, добавлена поддержка ввода-вывода iomap – как и для других ОС, код модулей вынесли из системы XFS.
Безопасность
В штатный Crypto API ядра Linux перенесли функции из криптобиблиотеки Zinc. Теперь API поддерживает быстрые версии алгоритмов ChaCha20 и Poly1305, что потенциально делает его безопаснее.
Интеграция blake2b и других хеш-функций повышает производительность расчетов при сохранении уровня защиты. Реализовали в Crypto API и алгоритм эллиптических кривых Curve25519, один из лучших по соотношению производительности и надежности.
Системные сервисы
Linux 5.5 отслеживает состояния live-патчей. Это позволяет применить сразу несколько таких патчей к ОС непосредственно в процессе ее работы. Система определяет, какие изменения уже были внесены, определяет совместимость и не перезаписывает данные повторно.
Для BPF-программ внедрили механизм проверки типов и упростили разработку переносимых продуктов на С. Теперь такой код можно скомпилировать один раз и запускать на всех поддерживаемых платформах.
Тестирование
Linux 5.5 получил поддержку фреймворка KUnit для юнит-тестирования. Кроме того, появились встроенные инструменты для имитации трассировочных событий. Они дают возможность тестировать ПО для трассировки и отладки. В новой версии также можно запускать в пространстве пользователя отдельный обработчик событий в ядре. Это позволяет ему работать независимо от обработчика трассировки.
Сеть
Сетевым интерфейсам теперь можно назначать альтернативные имена. Максимальная длина имени увеличилась с 16 до 128 символов. В будущем интерфейс дополнительно расширят. За счет кэширования проверок входящего трафика пропускная способность системы маршрутизации повысилась на 17%. Такой результат получили в тестах UDP-флудом на единственный адрес назначения.
Архитектуры и драйвера
В Linux 5.5 для x86-архитектуры добавили поддержку 5-уровневых страниц памяти. Это увеличивает объем поддерживаемой оперативной памяти. Для ARM64-архитектуры доступен полный набор функций подсистемы ftrace. Теперь разработчики смогут отслеживать даже аргументы функций.
Остальные изменения затрагивают преимущественно драйверов. Так, теперь Linux 5.5 поддерживает чипы Jasper Lake и эффективнее работает с Tiger Lake. Выводить изображение на экран через Display Port можно в HDR-режиме (расширенный динамический диапазон).
Добавили поддержку новых платформ и плат Raspberry Pi 4 и еще двух десятков вариантов.
Полный список изменений и перечень ключевых разработчиков. Загрузить обновление можно с официального сайта ядра Linux. Также предлагается полностью свободная версия ядра Linux-libre 5.5-gnu. Специалисты латиноамериканского Фонда свободного ПО очистили ее от компонентов драйверов и прошивок с участками кода, распространение которых производители ограничивали.