После двух месяцев разработки Линус Торвальдс объявил о выпуске ядра Linux 6.2, где наиболее заметные изменения включают лицензионный код Copyleft-Next, улучшенную реализацию RAID5/6 в Btrfs, продолжение интеграции поддержки языка Rust, снижение накладных расходов на защиту от Retbleed, добавленное ограничение на перезапись памяти и добавлен механизм TCP. ) был добавлен.
Новая версия получила 16843 исправления от 2178 разработчиков, размер патча 62 МБ (изменения затронули 14108 файлов, добавлено 730195 строк кода, удалено 409485 строк). Около 42% всех изменений, внесенных в 6.2, связаны с драйверами устройств, около 16% изменений связаны с обновлением кода, характерного для аппаратных архитектур.
Основные новые возможности Linux 6.2
В этой новой версии, которая представлена включая предоставленный код и изменения, разрешено лицензией Copyleft-Next 0.3.1. Лицензия Copyleft-Next была создана одним из участников GPLv3 и полностью совместима с лицензией GPLv2, что подтверждено юристами SUSE и Red Hat. По сравнению с GPLv2, лицензия Copyleft-Next намного компактнее и понятнее (убрана вводная часть и упоминание об устаревших обязательствах), определяет время и порядок устранения нарушений, автоматически снимает требования по авторскому леву при устаревании, что более чем 15 лет.
Еще одно важное изменение: включена утилита «rv», предоставляющая интерфейс для взаимодействия из пользовательского пространства с обработчиками подсистемы RV (Проверка во время выполнения) Проверка выполняется во время выполнения путем присоединения контроллеров к точкам трассировки, которые проверяют фактический ход выполнения в сравнении с эталонной моделью детерминированного автомата по умолчанию, которая определяет ожидаемое поведение системы.
Добавлен API «iommufd» для управления пользовательским пространством модуля управления памятью ввода-вывода (Memory Management Unit). Новый API позволяет управлять таблицами страниц памяти ввода-вывода с помощью файловых дескрипторов.
Для замкового механизма РКО (читать-копировать-обновлять), реализован необязательный механизм обратного вызова в котором таймер обрабатывает несколько обратных вызовов одновременно в пакетном режиме. Применение предложенной оптимизации позволяет снизить энергопотребление на устройствах Android и ChromeOS на 5-10% за счет откладывания запросов RCU во время простоя или низкой загрузки системы.
Добавлена новая опция командная строка ядра «trace_trigger» для запуска триггера трассировки который используется для привязки условных команд, которые вызываются при запуске трассировки стека (например, trace_trigger="sched_switch.stacktrace, если prev_state == 2").
Еще одно важное изменение: запущен порт дополнительного функционала из ветки Rust-for-Linux Относится к использованию Rust в качестве второго языка для разработки драйверов и модулей ядра. Поддержка Rust по умолчанию отключена и не приводит к включению Rust в качестве обязательной зависимости сборки ядра. Базовая функциональность, предлагаемая в последней версии, расширена функциями поддержки низкоуровневого кода, такими как тип Vec и макросы pr_debug!(), pr_cont!() и pr_alert!(), а также макросы "#[vtable ]"макросы.", процедурный макрос, упрощающий работу с таблицами указателей на функции. Ожидается, что в будущих выпусках будут добавлены высокоуровневые оболочки Rust поверх подсистем ядра, что позволит вам создавать полноценные драйверы на Rust.
В дополнение к этому также подчеркивается, что реализован новый метод защиты от уязвимости Retbleed в процессорах Intel и AMD используя отслеживание глубины вызова, которое не так медленно, как представленная выше защита от ретблинга. Для включения нового режима предлагается параметр командной строки ядра «retbleed=stuff».
En Платформа АРМ64, на стадии загрузки, есть возможность включать и отключать программную реализацию механизма Shadow Stack, который используется для защиты от перезаписи адреса возврата функции в случае переполнения буфера стека (суть защиты заключается в сохранении адреса возврата в отдельном стеке после передачи управления функции и восстановлении адреса, заданного перед выходом из функции ).
Из других изменений, которые выделяются:
- Для IPv6 добавлена поддержка PLB (защитная балансировка нагрузки): за счет изменения метки потока IPv6 PLB случайным образом изменяет маршруты пакетов, чтобы сбалансировать нагрузку на порты коммутатора.
- Добавлена поддержка 800 гигабитных ссылок.
- Добавлена возможность переименовывать сетевые интерфейсы на лету, не останавливая работу.
- Добавлено упоминание IP-адреса, на который пришел пакет, в сообщения SYN-флуда, записываемые в журнал.
- Для UDP реализована возможность использования отдельных хэш-таблиц для разных сетевых пространств имен.
- Сетевые мосты поддерживают метод аутентификации MAB (MAC Authentication Bypass).
- Драйвер i915 (Intel) стабилизировал поддержку дискретных графических карт Intel Arc (DG2/Alchemist) и улучшил поддержку графических процессоров Meteor Lake.
- Драйвер Nouveau поддерживает графический процессор NVIDIA GA102 (RTX 30) на базе архитектуры Ampere. Для карт nva3 (GT215) добавлена возможность управления подсветкой.
Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.