Вчера, 25 апреля 2021 года, после двух месяцев разработки, Линус Торвальдс представил ядро Linux 5.12. Как пишет сам Торвальдс, эта версия — спокойная и без каких-то глобальных изменений. Более радикальный патч ожидается в версии 5.13, в которой разработчики будут «наверстывать упущенное». Само обновление вышло с недельной задержкой от графика.
Размер патча ядра — 38 Мб, а основные изменения в кодовой базе коснулись драйверов — на них приходится более 40% (43%) внесенных правок и обновлений. Примерно 17% изменений относятся к обновлению кода аппаратных архитектур, 12% — сетевой стек, 5% — файловые системы и 4% — внутренние подсистемы ядра.
Среди наиболее важных изменений и дополнений:
- реализована поддержка зонированных блочных устройств в Btrfs;
- Добавлена возможность маппинга идентификаторов файловых систем;
- был очищен список устаревших ARM-архитектур;
- реализован режим «нетерпеливой» записи в NFS;
- добавлен механизм LOOKUP_CACHED — он определяет файловые пути из кэша;
- поддержка атомарных инструкций в BPF;
- добавлена отладочная система KFENCE для выявления ошибок при работе с памятью;
- режим NAPI — пуллинг в сетевом стеке, теперь работает в отдельном потоке ядра процессора;
- добавлен гипервизор ACRN;
- реализована возможность изменения preempt-модели в планировщике задач «на горячую»;
- добавлена поддержка LTO-оптимизаций при сборке в Clang.
С обширным разбором патча можно ознакомиться тут. Из наиболее заметного стоит отметить изменения в работе с внешними файловыми хранилищами других систем разметки/маппинга.
Теперь есть возможность сопоставить файлы на примонтированном чужом разделе с текущим разделом системы, то есть получить доступ к данным внешнего раздела. Новая система маппинга поддерживается для файловых систем FAT, ext4 и XFS. По задумке разработчиков, это должно упростить совместное использование файлов пользователей на разных компьютерах с разными операционными системами, в том числе и в рамках домашних каталогов systemd-homed. Также рассматривается сценарий предоставления совместного доступа к файлам с внешнего хоста без фактического изменения данных о файловой системе владельца данных. Последнее актуально в текущей ситуации массовой удаленной работы, когда часть инфраструктуры может работать под Linux, а конечные потребители — на Windows или MacOS.
Из облегчающих жизнь пользователей и дающих возможность тонкой настройки изменений стоит отметить новую подсистему DTMP (Dynamic Thermal Power Management). DTMP дает возможность динамически регулировать энергопотребление разных устройств на основе выставленных общих ограничений температуры. Актуально для тех же ноутбуков, которые используются в качестве рабочих станций.
Больше всего по объему кода патч затронул оборудование, конкретно — ARM и видеокарты. Из ядра вычистили драйвера и информацию о неактуальных и уже снятых с сопровождения ARM-платформах. Так, был удален код платформ и драйверы для efm32, picoxcell, prima2, tango, u300, zx и c6x.
Вместо них в систему добавили поддержку следующих ARM-устройств и платформ: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP ,Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
В драйвере
amdgpu
теперь работает система разгона OverDrive для карт на базе GPU Sienna Cichlid: Navi 22, Radeon RX 6xxx. Также была добавлена поддержка пиксельного формата FP16 для DCE (display controller engine) с 8 по 11 поколение. Для GPU Navy Flounder (Navi 21) и APU Van Gogh реализована возможность сброса GPU.В драйвере
nouveau
добавлена начальная поддержка GPU NVIDIA на базе архитектуры GA100 — это семейство ускорителей Ampere, которые ориентированы на массивные научные расчеты. На той же архитектуре реализованы видеокарты серии 3000 — RTX 3060 и до RTX 3090, и хотя A100 — это совершенно иное оборудование, вполне возможно, новый драйвер позволит корректнее работать новым видеокартам NVIDIA на ядре 5.12. Из приятных мелочей: ядро Linux 5.12 теперь поддерживает консоли Nintendo 64, выпущенные с 1996 по 2003 год. Прошлые попытки портировать Linux для Nintendo 64 не были доведены до конца и имели статус Vaporware. Основная цель — упростить портирование и эмулирование классических игр и сохранить их как таковые. Также в ядро был добавлен драйвер для поддержки нового геймпада от PlayStation 5 DualSense.