Новое, старое, улучшенное и поддержка китайских процессоров: что собой представляет ядро Linux 5.19

Kate

Administrator
Команда форума
Прошло совсем немного времени со времени релиза 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 это первый, так сказать, апдейт.

itofnpdennxesh-azfwtlxis82u.jpeg


Память и сервисы​


  • Очень приметный апдейт — начало работы с архитектурой 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, есть ли проблемы, если да, насколько они критичны? Или, наоборот, все нравится и все ок?

4xwgalhrhqzk84eco9dapvkkt0a.jpeg


Напоследок — пара интересных фактов. Во-первых, следующий релиз уже будет выпущен под нумером 6.0. А во-вторых, Линус рассказал о том, что использовал ноутбук Apple на базе архитектуры ARM64 (Apple Silicon) для формирования нового релиза. В качестве ОС — Asahi Linux.

С полным списком исправлений и нововведений можно ознакомиться вот по этой ссылке.

 
Сверху