Прошло совсем немного времени со времени релиза 5.18, и Линус Торвальдс представил новый — 5.19. Как всегда, исправлений огромное количество — свыше 16 000 от 2190 разработчиков. В прошлом релизе было примерно столько же, так что в мире Linux, можно сказать стабильность.
Объем патча составил 90 МБ, при этом изменены в разной степени почти 14 000 файлов. Добавлено 1,14 млн строк кода, удалено при этом 349 177 тыс. Что касается фокуса изменений, то активнее всего велась работа с драйверами устройств, это около 39% всех изменений, еще около 21% — обновление кода, связанное с различными аппаратными архитектурами. Ну и уже меньше изменений, связанных с сетевым стеком, файловыми системами и внутренними подсистемами. Под катом подробности о главных новшествах и апдейтах.
Железо
Поскольку больше всего внимания разработчики уделили аппаратному обеспечению, то с него и начнем.
- Главное, на что обратило внимание комьюнити — драйвер amdgpu, здесь сразу 400+ тысяч строк, которые связаны с работой над ним. Подавляющее большинство, правда, являются автоматически сгенерированными заголовочными файлами с данными для регистров ASIC в драйвере для GPU AMD. Еще почти 23 тыс. строк связаны с реализацией поддержки AMD SoC21, начальную его реализацию. Ну и если говорить об общем размере драйвера, о котором идет речь, то его размер превысил 4 млн строк кода. Стоит отметить также, что в этот драйвер теперь добавлена поддержка SMU 13.x (System Management Unit), а также обновлена поддержка USB-C и GPUVM.
- Второй по важности момент — это драйвер i915 (Intel), где здорово расширены возможности, которые так либо иначе связаны с управлением энергопотреблением. Кроме того, добавены GPU Intel DG2 (Arc Alchemist) для лэптопов, внедрена поддержка платформы Intel Raptor Lake-P (RPL-P), а также плюс появилась информация о графических картах Arctic Sound-M. Из дополнительных апдейтов — реализация ABI для вычислительных движков, а для DG2 появилась поддержка Tile4. Ну и еще один из приятных моментов — системы Haswell, наконец, получили поддержку DisplayPort HDR.
- Третий драйвер, о котором стоит подробно поговорить — Nouveau. Здесь теперь используется обработчик drm_gem_plane_helper_prepare_fb, в ряде случаев применяется статическое выделение памяти.
Виртуализация и безопасность
- Прежде всего, в EFI появилась возможность безопасной передачи гостевыми системам секретной информации без ее последующего раскрытия хост-системе. Эти данные предоставляются через security/coco в securityfs.
- Исправлена уязвимость, связанная с обходом защиты через манипуляции с отладчиком ядра в режиме защиты Lockdown. Стоит напомнить, что он ограничивает доступ root-пользователя к ядру, блокируя пути обхода UEFI Secure Boot.
- Добавлены исправления, которые позволяют усилить надежность и производительность генератора псевдослучайных чисел. Кстати, если вам интересна эта тема, то мы писали о том, как в Cloudflare усиливают защиту при работе с псевдослучайными числами (с Linux та статья никак не связана, но тем не менее).
- Разработчики изменили логику действий при отключении непривилегированного доступа к подсистеме eBPF. Ранее в этом случае отключались практически все команды, которые связаны с системным вызовом bpf(). Начиная же с новой версии ядра доступ оставлен только к тем командам, которые не приводят к созданию объектов.
- Появилась поддержка механизма Intel TDX (Trusted Domain Extensions), который позволяет блокировать попытки стороннего доступа к зашифрованной памяти виртуальных машин.
Файловые системы, диски, ввод и вывод
Много изменений, что, конечно, неудивительно. Вот только некоторые из наиболее интересных:
- Так, файловая система EROFS, которая предназначена для работы с разделами, доступными лишь для чтения, переведена на работу с подсистемой fscache, которая обеспечивает кэширование данных. Благодаря этому решению повысилась производительность тех систем, где большое число контейнеров запускается на базе EROFS.
- В fscache появился режим чтения по требованию («on-demand»), который задействован для оптимизации EROFS. Он введен не просто так, а для организации кэширования чтения из образов ФС, которые находятся в локальной системе. Это способ делегирует функции извлечения данных и их записи в кэш отдельному фоновому процессу, который выполняется в пространстве пользователя.
- XFS теперь предоставляет возможность хранения миллиардов расширенных атрибутов в i-node. Максимальное их количество увеличено с 4 миллиардов до сразу 247.
- А еще оптимизирована работа с блокировками в Btrfs, что дает возможность увеличить производительность системы примерно на 7% в случае прямой записи nowait.
- В NFS-сервере появился новый режим продления сохранения состояния блокировки, которая выставлена внезапно замолчавшим клиентом, который не отвечает на запросы. Очистку блокировки можно теперь задержать вплоть до 24 ч.
- В драйвер для ФС FAT32 добавлена поддержка получения сведений о времени создания файла через системный вызов statx с реализацией более эффективного и функционального варианта stat().
- А еще внесены заметные оптимизации в драйвер exFAT, которые связаны с обеспечением одновременной очистки группы секторов при активном режиме 'dirsync'.
- Ну и еще одно заметное изменение — в составе ядра появилось первое корректирующее обновление драйвера ntfs3. С момента его включения в состав ядра 5.15 это первый, так сказать, апдейт.
Память и сервисы
- Очень приметный апдейт — начало работы с архитектурой LoongArch, процессора, разработанного китайцами. Это пока что лишь начальная поддержка архитектуры, но событие значимое. Архитектура LoongArch доступна в трёх вариантах: урезанный 32-разрядный (LA32R), обычный 32-разрядный (LA32S) и 64-разрядный (LA64).
- А вот поддержку устаревшей архитектуры CPU h8300 (Renesas H8/300), наоборот, убрали.
- Появилась возможность добавления в ядро файла bootconfig, который позволяет, кроме опций командной строки, определять параметры работы ядра через файл с настройками. Встраивание осуществляется посредством опции CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'.
- Для m68k (Motorola 68000) реализована виртуальная машина (симулятор платформы), основанная на эмуляторе Android Goldfish.
- Для архитектуры AArch64 появилась поддержка расширений Armv9-A SME (Scalable Matrix Extension).
- Стоит упомянуть также упреждающий механизм вытеснения памяти, который поддерживает управление из пространства пользователя посредством файла memory.reclaim.
- Еще интересное — для архитектуры RISC-V обеспечена поддержка запуска 32-разрядных исполняемых файлов на 64-разрядных системах.
Сеть
- Здесь есть, о чем поговорить. Например, в состав ядра включили серию патчей BIG TCP, которые дают возможность увеличить максимальный размер пакета TCP-пакета до 4ГБ для оптимизации работы высокоскоростных внутренних сетей дата-центров.
- А еще продолжается работа по интеграции средств для отслеживания причин отбрасывания пакетов (коды reason).
- Ну и из важного — добавление поддержки отката соединений MPTCP (MultiPath TCP) на использование обычного TCP, в ситуациях, когда определённые возможности MPTCP не могут быть использованы.
На этом все, если вдруг о чем-то важном не упомянули — пишите в комментариях. И да, мы решили опубликовать статью о новом релизе спустя неделю, чтобы получить фидбек от сообщества. Как вам ядро 5.19, есть ли проблемы, если да, насколько они критичны? Или, наоборот, все нравится и все ок?
Напоследок — пара интересных фактов. Во-первых, следующий релиз уже будет выпущен под нумером 6.0. А во-вторых, Линус рассказал о том, что использовал ноутбук Apple на базе архитектуры ARM64 (Apple Silicon) для формирования нового релиза. В качестве ОС — Asahi Linux.
С полным списком исправлений и нововведений можно ознакомиться вот по этой ссылке.
Автор:
Seleditor