Новое, старое, обновленное: что «выросло» в ядре Linux 6.2. Подробности релиза

в 19:43, , рубрики: linux, open source, Блог компании Selectel, Разработка под Linux, релизы, Софт
Новое, старое, обновленное: что «выросло» в ядре Linux 6.2. Подробности релиза - 1

Вчера появилась новость о выходе стабильного релиза ядра Linux 6.2. Изменений и дополнений действительно много, в этот раз принято почти 17 тыс. исправлений от 2178 разработчиков. Изменения при этом внесены в 14108 файлов, с добавлением 730195 строк кода. Большая часть изменений, почти 50%, связана с драйверами устройств, еще примерно 16% — с аппаратными архитектурами, 12% — сетевые технологии, 4% — файловые системы и еще 3% — подсистемы ядра. Под катом — подробности о том, что представляет собой ядро 6.2.

Наиболее актуальные изменения, которые добавлены в ядро, касаются продолжения работы над интеграцией языка Rust, о чем Торвальдс говорил уже давно. Кроме того, разрешен прием кода кода под лицензией Copyleft-Next. А еще — добавлена возможность регулирования потребления памяти при отложенной записи, появился гибридный механизм защиты потока выполнения команд, плюс появилась утилита rv (Runtime Verification). Ну а теперь, собственно, подробности.

Устройства и драйвера

  • В новом ядре добавлена подсистема accel, которая предназначена для реализации фреймворка ускорителей вычислений. Это новшество необходимо для оптимизации ускорения решения задач машинного обучения.
  • В драйвере amdgpu теперь появилась поддержка IP-компонентов GC, PSP, SMU и NBIO. Что касается ARM64, то здесь реализовали поддержку DCN (Display Core Next). Теперь защищенный вывод на экран можно использовать при подключении нескольких мониторов.
  • Что касается i915 (Intel), то здесь стабилизирована поддержка дискретных видеокарт Intel Arc (DG2/Alchemist), плюс оптимизирована поддержка GPU Meteor Lake.
  • Также в ядре появилась поддержка GPU NVIDIA GA102 (RTX 30) на базе архитектуры Ampere для драйвера Nouveau.
  • Появилась поддержка беспроводных модулей связи на базе широкого модельного ряда чипов, включая Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) и MediaTek MT7996, Bluetooth интерфейсов Broadcom BCM4377/4378/4387, а также Ethernet-контроллеров Motorcomm yt8521, NVIDIA Tegra GE.
  • Добавлена поддержка нескольких моделей смартфонов и планшетов, включая Sony Xperia 10 IV, 5 IV, X и X compact, OnePlus One, 3, 3T и Nord N100, Xiaomi Poco F1 и Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
  • Также появилась поддержка ASoC (ALSA System on Chip) для встроенных звуковых чипов HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588. Добавлена поддержка звукового интерфейса Focusrite Saffire Pro 40. Добавлена поддержка звукового кодека Realtek RT1318.
  • Наконец, разработчики добавили поддержку ARM SoC и плат Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695), SDM670 (Snapdragon 670), MSM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), RK3326 Odroid-Go/rg351, Zyxel NSA310S, InnoComm i.MX8MM, Odroid Go Ultra.

Новое, старое, обновленное: что «выросло» в ядре Linux 6.2. Подробности релиза - 2

Сетевые технологии

  • В ядро добавлен драйвер для устройств MediaTek с поддержкой Wi-Fi 7 (802.11be), плюс появилась поддержка 800-гигабитных линков.
  • Теперь можно переименовывать сетевые интерфейсы на лету, без остановки работы, что весьма удобно.
  • В ipset появился новый параметр bitmask, который дает возможность задать маску на основе произвольных битов в IP-адресе (например, «ipset create set1 hash:ip bitmask 255.128.255.0»).
  • В драйвере TUN скорость линка повышена c 10Mbps до 10Gbps. Это дало возможность решить проблемы с ограничением скорости в ряде приложений.
  • Также для IPv6 теперь появилась поддержка механизма балансировки нагрузки между сетевыми линками, который называется PLB. Он предназначен для сокращения точек перегрузки на коммутаторах ЦОД.
  • Ну а для UDP теперь есть возможность использования отдельных хэш-таблиц для разных сетевых пространств имен.

Новое, старое, обновленное: что «выросло» в ядре Linux 6.2. Подробности релиза - 3

Память и система

  • В ядре теперь разрешено включение в состав ядра кода и изменений, которые поставляются под лицензией Copyleft-Next 0.3.1. Что это за лицензия? Она разработана одним из авторов GPLv3, также совместима с GPLv2. Но, в отличие от последней, она проще для понимания, в ней внесены сроки и порядок устранения нарушений. Также лицензия автоматически снимает копилефт-требования для устаревшего кода. Таким считается код старше 15 лет.
  • Появилась утилита rv, о чем коротко говорится выше. Она представляет интерфейс для взаимодействия из пространства пользователя с обработчиками подсистемы Runtime Verification. Соответственно, последняя предназначена для проверки корректности работы на высоконадежных системах с гарантией отсутствия сбоев. Проверку производят во время выполнения через прикрепление обработчиков к точкам трассировки, которые сверяют фактический ход выполнения с ранее предопределенной моделью.
  • Предложена новая реализация блокировок qspinlock для архитектуры PowerPC. Этот шаг позволил увеличить производительность.
  • Для китайских процессоров с архитектурой LoongArch добавлена поддержка ftrace, защиты стека, спящего и ждущего режимов.
  • Что касается ветки Rust-for-Linux, то сейчас активно идет перенос дополнительной функциональности, которая связана с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра. Стоит отметить, что поддержка Rust неактивна по дефолту, так что это не приводит ко включению языка в список обязательных сборочных зависимостей к ядру. Но зато расширена базовая функциональность, в первую очередь, для поддержки низкоуровневого кода, включая тип Vec и макросы pr_debug!(), pr_cont!() и pr_alert!(), а также процедурный макрос "#[vtable]".
  • Механим распределения памяти slab — SLOB (slab allocator) объявлен устаревшим.

Новое, старое, обновленное: что «выросло» в ядре Linux 6.2. Подробности релиза - 4

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

  • В ядре расширены возможности по управлению отложенной записью для блочных устройств. В ряде ситуаций отложенная запись может приводить к большому потреблению оперативной памяти. Для того, чтобы избежать этой ситуации, предложены новые параметры «strict_limit», «min_bytes», «max_bytes», «min_ratio_fine» и «max_ratio_fine».
  • В файловой системе F2FS реализована ioctl-операция атомарной замены. Она дает возможность выполнить запись данных в файл в рамках одной атомарной операции. Также добавлен блочный кэш экстентов, который помогает определить активно используемые данные.
  • В ext4 исправили ряд ошибок. Ну а в ntfs3 появилось несколько новых опций монтирования: «nocase» для управления учётом регистра символов в именах файлов и директорий; windows_name для запрета создания имён файлов, содержащих символы, недопустимые для ОС Windows; hide_dot_files для управления назначением метки скрытых файлов для файлов, начинающихся на точку.
  • Что касается exFAT, то здесь удалось ускорить операции создания как файлов, так и папок.
  • Доработана реализация списков контроля доступа доступа POSIX (POSIX ACL).
  • В подсистеме fscrypt появилась поддержка алгоритма шифрования SM4 (китайский стандарт GB/T 32907-2016).
  • А еще изменен принцип проверки прав доступа к устройствам NVMe. В частности, появилась возможность чтения/записи на устройство в том случае, если записывающий процесс имеет доступ к специальному файлу устройства.

Безопасность и виртуализация

  • В первую очередь стоить отметить новые варианты для блокирования атак, которые используют генерацию состояний «oops», после которых проблемные задачи завершаются и состояние восстанавливается без остановки работы системы. Если вызовов таких состояний много, то возникает переполнение счётчика ссылок (refcount), что позволяет эксплуатировать уязвимости, вызванные разыменованием NULL-указателей. Для того, чтобы избежать этой ситуации, в ядро добавлено ограничение на максимальное число срабатываний oops.
  • Для платформы ARM64 появилась возможность включения и выключения программной реализации механизма Shadow Stack еще на этапе загрузки. В новой сборке ядра аппаратной и программной реализации Shadow Stack появилась возможность использования одного ядра на разных ARM-системах, вне зависимости от поддержки в них инструкций для аутентификации указателей.
  • Добавлена поддержка использования на процессорах Intel механизма асинхронного уведомления о выходе (asynchronous exit notification), позволяющего выявлять single-step атаки на код, выполняемый в анклавах SGX.
  • В механизм Landlock (позволяющий ограничить взаимодействие группы процессов с внешним окружением) добавлена поддержка флага LANDLOCK_ACCESS_FS_TRUNCATE, дающего возможность контролировать выполнение операций усечения файлов.

Возможно, эти тексты тоже вас заинтересуют:

8 вещей, о которых забывают разработчики при переносе приложения в Kubernetes
Чем заняться в 2023? Идеи для пет-проектов и подборка материалов по профессиональному развитию
Почему ARM? Перспективы платформы в серверном применении

Традиционно выложен и вариант полностью свободного ядра 6.2 — Linux-libre 6.2-gnu, в котором нет несвободных компонентов или участков кода. В этом ядре нет ограничений на использование кода. Плюс почищены новые блобы в драйвере nouveau.

Автор: Антон

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js