Релиз ядра Linux 5.11
15 февраля 2021 года
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.11. Среди наиболее заметных изменений: поддержка анклавов Intel SGX, новый механизм перехвата системных вызовов, запрет сборки модулей без MODULE_LICENSE(), режим быстрой фильтрации системных вызовов в seccomp, прекращение сопровождения архитектуры ia64, перенос технологии WiMAX в ветку "staging", возможность инкапсуляции SCTP в UDP.
- Дисковая подсистема, ввод/вывод и файловые системы
- В Btrfs добавлено несколько опций монтирования для применения при восстановлении данных с повреждённой ФС: "rescue=ignorebadroots" для монтирования, несмотря на повреждения некоторых корневых деревьев (extent, uuid, data reloc, device, csum, free space), "rescue=ignoredatacsums" для отключения проверки контрольных сумм для данных и "rescue=all" для одновременного включения режимов 'ignorebadroots', 'ignoredatacsums' и 'nologreplay'.
Прекращена поддержка опции монтирования "inode_cache", которая ранее была объявлена устаревшей. Проведена подготовка кода для реализации поддержки блоков с метаданными и данными, размером меньше страницы (PAGE_SIZE), а также поддержки режима зонированного выделения места.
- В XFS реализован флаг "needsrepair", сигнализирующий о необходимости восстановления. При установке данного флага ФС нельзя примонтировать до тех пор, пока флаг не будет сброшен утилитой xfs_repair.
- В Ext4 предложены только исправления ошибок и оптимизации, а также проведена чистка кода.
- Разрешён повторный экспорт файловых систем, примонтированных поверх NFS (т.е. примонтированный через NFS раздел теперь можно экспортировать через NFS и использовать в качестве промежуточного кэша).
- В системный вызов close_range(), позволяющий процессу разом закрыть целый диапазон открытых файловых дескрипторов, добавлена опция CLOSE_RANGE_CLOEXEC для закрытия дескрипторов в режиме close-on-exec.
- В файловой системе F2FS добавлены новые вызовы ioctl(), позволяющие из пространства пользователя управлять тем, какие файлы сохраняются в сжатом виде. Добавлена опция монтирования "compress_mode=" для выбора размещения управляющего сжатием обработчика на стороне ядра или в пространстве пользователя.
- Предоставлена возможность монтирования Overlayfs непривилегированными процессами, используя отдельное пространство идентификаторов пользователей (user namespace).
Для проверки соответствия реализации модели безопасности проведён полный аудит кода. В Overlayfs также добавлена возможность запуска с использованием копий образов файловой системы через опциональное отключение проверки UUID.
- В файловую систему Ceph добавлена поддержка протокола
msgr2.1, позволяющего применять алгоритм AES-GCM при передаче данных в зашифрованном виде.
- В модуле dm-multipath реализована возможность учёта привязки к CPU ("IO affinity") при выборе маршрута запросов ввода/вывода.
- Память и системные сервисы
- Добавлен новый механизм перехвата системных вызовов, основанный на prctl() и позволяющий из пространства пользователя генерировать исключения при обращении к определённому системному вызову и эмулировать его выполнение. Указанная функциональность востребована в Wine и Proton для эмуляции системных вызовов Windows, что необходимо для обеспечения совместимости с играми и программами, напрямую выполняющими системные вызовы в обход Windows API (например, для защиты от несанкционированного использования).
- В системный вызов userfaultfd(), предназначенный для обработки page faults (обращение к невыделенным страницам памяти) в пространстве пользователя, появилась возможность отключения обработки исключений, возникающих на уровне ядра, для усложнения эксплуатации некоторых уязвимостей.
- В подсистему BPF добавлена поддержка локального для задачи хранилища данных (task-local storage), обеспечивающего привязку данных к конкретному BPF-обработчику.
- Полностью переделан учёт потребления памяти программами BPF - для управления использованием памяти в объектах BPF вместо memlock rlimit предложен контроллер cgroup.
- В механизме BTF (BPF Type Format), предоставляющем информацию для проверки типов в псевдокоде BPF, реализована поддержка модулей ядра.
- В интерфейс асинхронного ввода/вывода io_uring добавлена поддержка системных вызовов shutdown(), renameat2() и unlinkat(). При вызове io_uring_enter() добавлена возможность указания таймаута (проверить поддержку аргумента для указания таймаута можно при помощи флага IORING_FEAT_EXT_ARG).
- Архитектура ia64, применяемая в процессорах Intel Itanium, переведена в категорию оставленных без сопровождения ("orphaned"), что подразумевает прекращение тестирования. Компания Hewlett Packard Enterprise прекратила приём заказов на новое оборудование Itanium, а Intel сделал это ещё в прошлом году.
- Прекращена поддержка систем на базе архитектуры MicroBlaze, не укомплектованных блоком управления памятью (MMU). Подобные системы давно не встречаются в обиходе.
- Для архитектуры MISP добавлена поддержка тестирования покрытия кода (coverage testing) при помощи утилиты gcov.
- Добавлена поддержка виртуальной шины auxiliary для взаимодействия с многофункциональными устройствами, сочетающими функциональность, требующую разных драйверов (например, сетевые карты с поддержкой Ethernet и RDMA). Шина может использоваться для назначения для устройства первичного и вторичного драйвера, в ситуации, когда проблематично использование подсистемы MFD (Multi-Function Devices).
- Для архитектуры RISC-V добавлена поддержка системы распределения памяти CMA (Contiguous Memory Allocator), которая оптимизирована на выделение больших непрерывных областей памяти с использованием техники перемещения страниц памяти. Для RISC-V также реализованы средства ограничения доступа к /dev/mem и аккаунтинга времени обработки прерываний.
- Для 32-разрядных систем ARM добавлена поддержка отладочного инструмента KASan (Kernel address sanitizer), обеспечивающего выявление ошибок при работе с памятью. Для 64-разрядных ARM реализация
KASan переведена на использование тегов MTE (MemTag).
- Добавлен системный вызов epoll_pwait2(), позволяющий использовать таймауты с наносекундной точностью (вызов epoll_wait манипулирует миллисекундами).
- В системе сборки запрещена сборка загружаемых модулей ядра, в которых при помощи макроса MODULE_LICENSE() не определена лицензия на код. Попытка сборки подобных модулей теперь будет приводить к ошибке. Ошибку при сборке также будет вызывать использование макроса EXPORT_SYMBOL() для статических функций.
- Добавлена поддержка маппинга GEM-объектов из памяти, задействованной для ввода/вывода, позволившего ускорить работу с фреймбуфером на некоторых архитектурах.
- Виртуализация и безопасность
- Интегрированы компоненты ядра для создания и управления анклавами на базе технологии Intel SGX (Software Guard eXtensions), позволяющей приложениям выполнять код в изолированных зашифрованных областях памяти, доступ остальной системы к которым ограничен.
- В рамках инициативы по ограничению доступа из пространства пользователя к регистрам MSR (model-specific register) запрещена запись в регистр MSR_IA32_ENERGY_PERF_BIAS, позволяющий изменить режим энергоэффективности процессора ("normal", "performance", "powersave").
- И ветки kernel-rt для систем реального времени перенесена возможность отключения миграции высокоприоритетных задач между CPU.
- Для систем ARM64 добавлена возможность применения тегов MTE (MemTag, Memory Tagging Extension) для адресов памяти обработчиков сигналов. Использование MTE включается через указание опции SA_EXPOSE_TAGBITS в sigaction() и позволяет организовать проверку корректности использования указателей для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнениями буфера, обращениями до инициализации и использованием вне текущего контекста.
- В системный вызов seccomp() добавлена поддержка режима быстрого реагирования, позволяющего очень быстро определять разрешён или запрещён определённый системный вызов на основе прикреплённой к процессу таблицы полномочий ( constant-action bitmap), не требующей запуска BPF-обработчика.
- Добавлен параметр "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", разрешающая подсистеме dm-verity проверять хэш-сигнатуры сертификатов, размещаемых во вторичном хранилище ключей (keyring). На практике настройка позволяет верифицировать не только сертификаты встроенные в ядро, но и сертификаты загруженные во время работы, что позволяет обновлять сертификаты без обновления всего ядра.
- В User-mode Linux добавлена поддержка режима suspend-to-idle, позволяющего заморозить окружение и использовать сигнал SIGUSR1 для вывода из спящего режима.
- В механизм virtio-mem, позволяющий выполнять горячее подключение и отключение памяти к виртуальным машинам, добавлена поддержка режима большого блока (BBM, Big Block Mode), дающего возможность передавать или забирать память блоками, превышающими размер блока памяти ядра, что необходимо для оптимизации VFIO в QEMU.
- В работающую на уровне ядра реализацию TLS добавлена поддержка шифра CHACHA20-POLY1305.
- Сетевая подсистема
- Для 802.1Q (VLAN) реализован механизм управления сбоями подключения (CFM, Connectivity Fault Management), позволяющий выявлять, верифицировать и изолировать сбои в сетях с виртуальными мостами (Virtual Bridged Networks). Например, CFM может использоваться для локализации проблем в сетях, охватывающих несколько независимых организаций, сотрудники которых имеют доступ только к своему оборудованию.
- Реализация технологии WiMAX перемещена staging и в будущем намечена для удаления, если не найдутся пользователи, которым необходим WiMAX. WiMAX уже не используется в публичных сетях, а в ядре единственным драйвером с которым можно использовать WiMAX остаётся устаревший драйвер Intel 2400m. В сетевом конфигураторе NetworkManager поддержка WiMAX была прекращена в 2015 году. В настоящее время WiMax практически полностью вытеснена такими технологиями, как LTE, HSPA+ и Wi-Fi 802.11n.
- Добавлена поддержка инкапсуляции пакетов протокола SCTP в UDP-пакеты ( RFC 6951), что позволяет использовать SCTP в сетях со старыми трансляторами адресов, напрямую не поддерживающими SCTP, а также реализовывать SCTP на системах, не предоставляющих прямого доступа к уровню IP.
- Проведена работа по оптимизации производительности обработки входящего TCP-трафика в режиме zerocopy, т.е. без дополнительного копирования в новые буферы. Для трафика среднего размера, охватывающего десятки или несколько сотен килобайт данных, применение zerocopy вместо recvmsg() заметно эффективнее. Например, реализованные изменения позволили повысить эффективность обработки трафика в стиле RPC с сообщениями в 32 КБ при использовании zerocopy на 60-70%.
- Добавлены новый вызовы ioctl() для создания сетевых мостов, охватывающих несколько каналов PPP. Предложенная возможность позволяет кадрам перемещаться из одного канала в другой, например, из PPPoE в сеанс PPPoL2TP.
- Продолжена интеграция в ядро MPTCP (MultiPath TCP), расширения протокола TCP для организации работы TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. В новом выпуске реализована поддержка опции ADD_ADDR, которую можно использовать для анонса доступных IP-адресов к которым возможно соединение при добавлении новых потоков к существующему соединению MPTCP.
- Добавлена возможность настройки действий при превышении бюджета поллинга соединений (busy-polling). Ранее доступный режим SO_BUSY_POLL подразумевал переключение на softirq при исчерпании бэджета. Для приложений, которым необходимо продолжать использовать поллинг предложена новая опция SO_PREFER_BUSY_POLL.
- В IPv6 реализована поддержка режимов SRv6 End.DT4 и End.DT6, применяемых для создания многопользовательских IPv4 L3 VPN и устройств VRF (Virtual routing and forwarding).
- В Netfilter унифицирована реализация выражений set, что позволило обеспечить возможность указания нескольких выражений для каждого элемента set-списков.
- В беспроводной стек 802.11 добавлены API для настройки ограничений мощности SAR, а также параметров AE PWE и HE MCS.
- Оборудование
- В драйвере amdgpu [реализована поддержка APU AMD "Green Sardine" (Ryzen 5000) и GPU "Dimgrey Cavefish" (Navi 2), а также начальная поддержка APU AMD Van Gogh с ядром Zen 2 и GPU RDNA 2 (Navi 2). Добавлена поддержка новых идентификаторов APU Renoir (на базе CPU Zen 2 CPU и GPU Vega).
- В драйвере i915 для видеокарт Intel реализована поддержка
технологии IS (Integer scaling) с реализацией фильтра для увеличения масштаба с учётом состояния соседних пикселей (интерполяция Nearest-neighbor) для определения цвета отсутствующих пикселей. Расширена поддержка дискретных карт Intel DG1. Реализована поддержка технологии "Big Joiner", присутствующей начиная с чипов Ice Lake / Gen11 и позволяющей использовать один транскодер для обработки двух потоков, например, для вывода на 8K экран через один DisplayPort. Добавлен режим асинхронного переключения между двумя буферами в видеопамяти (async flip).
- Добавлена поддержка протокола 3WIRE, используемого в LCD-панелях. Добавлена поддержка панелей novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 и ABT Y030XX067A 3.0, а также поддержка панели для смартфона OnePlus 6/T.
- Добавлена поддержка ARM-плат, устройств и платформ: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik на базе Marvell Prestera 98DX3236, серверы с Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol Helios64, Engicam PX30.Core.
- Встроена поддержка игровой консоли Ouya на базе NVIDIA Tegra 3.
Одновременно латиноамериканский Фонд свободного ПО сформировал вариант полностью свободного ядра 5.11 - Linux-libre 5.11-gnu (Архивная копия от 30 апреля 2021 на Wayback Machine), очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске проведена чистка драйверов для qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver и mhi pci controller. Обновлён код чистки блобов в драйверах и подсистемах amdgpu, btqca, btrtl, btusb, i915 csr. Отключены новые блобы в m3 rproc, idt82p33 ptp clock и qualcomm arm64.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.