
Всего два месяца назад, в январе 2024 года, Линус Торвальдс сделал новогодний подарок пользователям Linux и представил ядро 6.7. Сейчас, в марте, выпущен новый релиз, у которого достаточно много нововведений. Например, это драйвер Xe для GPU Intel, драйвер на языке Rust, системные вызовы listmount и statmount и многое другое.
Про объём выполненной работы можно судить по количеству исправлений. Так, в новой версии принято 15 641 исправление от 2 018 разработчиков, размер патча составил 44 Мб. Изменения внесены в 12 212 файлов, добавлено целых 663 864 строки кода. Больше всего изменений связано с драйверами устройств, на втором месте — архитектуры, потом — сетевой стек, файловые системы и внутренние подсистемы ядра.
Оборудование и драйверы

Поскольку больше всего изменений связано с драйверами, то с них и начнём.
-
В анонсе говорилось о драйвере Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake. Его появление важно для операционной системы. Дело в том, что драйвер Xe — главный элемент для обеспечения работы новых чипов. Он создан с использованием новой архитектуры.
-
В Nouveau появилась новая настройка для работы с функциями прошивки GSP. Это нужно для возможности взаимодействия с GPU NVIDIA на базе микроархитектур Turing и Ampere. В них операции инициализации и управления GPU реализуются специфическим микроконтроллером GSP (GPU System Processor).
-
Не менее важно обновление AMDGPU, в котором появилась поддержка ACPI WBRF и VPE DPM, изменена обработка скорости канала PCIe. Кроме того, добавлена поддержка специфических для AMD механизмов управления цветом и решена проблема с переходом в спящий режим.
-
Начинает внедряться поддержка Raspberry Pi 5 — например, добавлена начальная реализация драйвера для GPU Broadcom VideoCore 7.1.
-
Также появились новые драйверы для камер, которые применяются в SoC Starfive, GalaxyCore GC2145/GC0308, Chips & Media Wave и THine THP7312.
-
Важная новость для геймеров: добавлена поддержка игровых контроллеров NSO (Nintendo Switch Online) — это новая инкарнация контроллеров от SNES (Super Nintendo), Genesis и N64 (Nintendo 64), адаптированных для Nintendo Switch.
-
Добавлены Powkiddy RK2023, Powkiddy X55 и Anbernic RG351V.
-
Также актуализирован звук — появилась поддержка систем, которые используются в NXP i.MX8m MICFIL, Qualcomm SM8250, AMD ACP5x, Intel Arrow Lake, SM8550, SM8650 и X1E80100.
-
AMD обновила и добавила модули, связанные с поддержкой будущей серии процессоров на базе новой микроархитектуры Zen 5.
-
Добавлена поддержка ARM64 SoC: Qualcomm SM8650 (Snapdragon 8 Gen 3), Qualcomm X1E80100 (Snapdragon X Elite), Samsung Exynos Auto v920, Google GS101 (Tensor G1), MediaTek MT8188 и Unisoc UMS9620 (Tanggula 7).
-
Добавлена поддержка ARM-плат и устройств: Huashan Pi, Microsoft Lumia, HTC One Mini 2, Motorola MotoG 4G, Huawei Honor 5X/GR5, Anbernic RG351V, Powkiddy RK2023, Powkiddy X55, ComXpress на базе Marvell CN913x, Chromebook Lenovo, Asus и Acer на базе Mediatek MT8183, Toradex Verdin AM62, платы на базе Allwinner H616/H618.
Память и системные сервисы
-
В планировщике задач появился новый механизм SCHED_DEADLINE server, решающий проблему с недополучением ресурсов CPU обычными задачами в условиях монополизации CPU высокоприоритетными (realtime) задачами.
-
В Data Access MONitor добавлен механизм автоматической настройки агрессивности потребления памяти на основе заданных квот.
-
Также добавлена поддержка page folios, что было сделано для анонимной памяти. Это нововведение позволит увеличить производительность за счёт выделения значительных фрагментов памяти во время обращения к невыделенным страницам памяти. К примеру, использование крупных фолиантов позволило на 5% сократить время пересборки ядра.
-
Одно из наиболее важных нововведений — продолжение проекта по добавлению Rust в качестве второго языка для разработки драйверов и модулей ядра (поддержка Rust не активна по умолчанию и не приводит к включению Rust в число обязательных сборочных зависимостей к ядру). Так, в новой версии появились изменения, которые добавляют Rust-обвязку над уровнем абстракции phylib и использующий данную обвязку драйвер ax88796b_rust, обеспечивающий поддержку PHY-интерфейса Ethernet-контроллера Asix AX88772A (100MBit).
-
Значительно расширена функциональность верификатора BPF-программ.
-
Не забыли разработчики и про архитектуру RISC-V. Для неё реализована поддержка перехода в ждущий режим с сохранением состояния в ОЗУ. Добавлена и возможность системного вызова riscv_hwprobe() для получения информации о поддерживаемых разрешениях архитектуры набора команд RISC-V.
Дисковая подсистема и файлы
-
Здесь стоит упомянуть добавление поддержки сжатия субстраниц и улучшение работы в ситуации нехватки памяти для файловой системы EROFS (Extendable Read-Only File System).
-
В F2FS улучшена поддержка зонированных устройств хранения.
-
В файловой системе XFS продолжена работа над реализацией возможности применения утилиты fsck для проверки и исправления выявленных проблем в online-режиме, без отмонтирования файловой системы.
-
В подсистеме device-mapper прекращена поддержка обработчиков MD_LINEAR, MD_MULTIPATH и MD_FAULTY, объявленных устаревшими в 2021 году.
Сеть

-
Здесь минимальное количество нововведений. Можно упомянуть, например, удаление системы bpfilter, которая задействует BPF для фильтрации пакетов. Bpfilter поставлялся начиная с выпуска 4.18, но так и не был доведён до уровня, пригодного для широкого использования. Так что теперь его решили удалить.
-
Кроме того, проведена низкоуровневая реорганизация базовых сетевых структур данных, которая выполнена для повышения эффективности кэширования.
Виртуализация и безопасность
-
Из ядра решено удалить реализацию функции strlcpy(), которая летом была включена в состав Си-библиотеки Glibc 3.38. Это альтернатива функции strncpy(), содержащей защиту от переполнения буфера и обязательно выставляющей замыкающий строку нулевой байт.
-
В гипервизоре KVM появилась поддержка подсистемы guest_memfd (guest-first memory). Она предоставляет возможности управления памятью, что в свою очередь позволяет реализовать возможности и оптимизации, которые недостижимы при использовании общей подсистемы управления памятью.
-
В гипервизор KVM для систем на базе архитектуры ARM64 добавлена поддержка 52-разрядных (LPA2) физических адресов. Для систем с архитектурой x86 предоставлена возможность сборки без эмуляции гипервызовов Hyper-V, позволяющая сократить размер ядра.
-
А ещё добавлен драйвер iaa (IAA Compression Accelerator), который применяется для ускорения операции сжатия и распаковки данных при помощи метода DEFLATE.
-
В SELinux добавлен SID-идентификатор init, позволяющий выделить запускаемые на начальном этапе загрузки процессы, запущенные до применения политик SELinux.
Как всегда, одновременно с релизом появился и вариант свободного ядра 6.8 — Linux-libre 6.8-gnu, очищенного от элементов прошивок и драйверов. Почищены блобы, проведена ревизия различных драйверов и т. п.
Если вы уже опробовали новый релиз, расскажите, как он вам. Всё хорошо или есть какие-то проблемы?
ссылка на оригинал статьи https://habr.com/ru/articles/799895/
Добавить комментарий