Представлено ядро Linux 4.9
Прошло два месяца активной работы над новой версией ядра, и сегодня Линус Торвальдс наконец-то представил ядро Linux 4.9. Наиболее заметными измерениями можно назвать инструменты для диагностики и блокирования переполнений стека ядра, а также включение поддержки SELinux в OverlayFS, плюс реализация шины Gerybus, чего хотелось многим.
Что касается статистики, то она, как всегда, обширна. В новой версии было принято 15 тысяч исправлений от 1400 разработчиков. Общий размер патча составляет 45 Мб. Изменения в патче затронули 11042 файлов, с добавлением 632157 строк кода и удалением 354728 строк. Не является сюрпризом и то, что большая часть (около 42%) представленных в этой версии изменений так либо иначе связаны с драйверами устройств. Еще 19% изменений связаны с обновлением кода для различных аппаратных архитектур, 12% — сетевой стек, 5% — файловые системы, 4% — подсистемы ядра.
Ну, а теперь немного чуть подробнее о том, что же является значимыми изменениями в новой версии ядра.
Сетевая подсистема
- Наконец-то в ядро добавлена реализация алгоритма контроля перегрузки TCP, который предложила корпорация Google. Речь идет о так называемом BBR (Bottleneck Bandwidth and RTT), который успешно применяется для того, чтобы сократить задержки передачи данных для трафика с таких ресурсов, как google.com и YouTube;
- В netfilter был добавлен модуль генерации случайных чисел. Этот модуль рекомендуется использовать для выбора случайного назначения пакета, например, это может быть рэндомное распределение по очередям;
- Представлен новый механизм настройки сетевого mesh-протокола B.A. T.M.A. N. («Better Approach To Mobile Adhoc Networking), реализованный на основе интерфейса netlink;
- Плюс ко всему в netfilter добавили механизм «quota», где реализованы байтовые квоты. В качестве примера можно привести возможность установки квоты в 100 Мб, где после того, как исчерпан лимит трафика для этого правила, действие самого правила прекратится.
Безопасность и виртуализация
- Здесь, главным образом, нужно выделить добавление нескольких изменений с реализацией механизма виртуального маппинга стека ядра (CONFIG_VMAP_STACK), который предоставляет целый ряд инструментов для определения и блокирования переполнений стека. Все сказанное актуально для архитектуры х86. Новая возможность, скорее всего, станет проблемой для злоумышленников, которые планируют эксплуатировать уязвимости в ядре. Эти изменения позволяют сократить число операций по распределению памяти, повысить безопасность и реализовать различные средства для того, чтобы осуществить диагностику выхода за границы стека. Все это реализовано благодаря разработчикам, минимизировавшим задержку за счет оптимизаций и кэширования;
- Для SELinux добавили поддержку многослойных файловых систем — это, в первую очередь, OverlayFS. Они используются для построения окружений в системах так называемой контейнерной изоляции;
- Также реализованы такие системные вызовы, как pkey_alloc (), pkey_free () и pkey_mprotect (), где добавлена поддержка специфического механизма PKU (Memory Protection Keys for Userspace), который работает в будущих моделях процессоров Intel.
Системные сервисы и память
- Здесь основным изменением является добавление подсистемы Greybus. Она разработана специально для того, чтобы обеспечить взаимодействие компонентов модульного смартфона Ara (да, про него не забыли!). Так вот, Greybus позволяет использовать внутреннюю шину для взаимодействия аппаратных компонентов, которые подключаются по мере необходимости. Здесь есть поддержка маршрутизации вызовов и приватного взаимодействия. А это позволяет двум компонентам взаимодействовать друг с другом в закрытом режиме. Возможно, энтузиасты проекта модульного смартфона теперь смогут продолжить работу;
- Добавлен новый набор файлов в /sys/kernel/irq, где описывается состав таблицы обработчиков прерываний. Новый набор позиционируется, как замена /proc/interrupts;
- Появилась опция CONFIG_DEBUG_TEST_DRIVER_REMOVE, которая позволяет протестировать работоспособность выгрузки драйвера устрйоства через выполнение цикла загрузки, выгрузки и повторной загрузкий драйвера на начальном этапе — инициализации устройства. Все это работает в автоматическом режиме;
- Также разработчики продолжили развивать средства форматирования документации к ядру.
Файлы и диски
- Модуль FUSE получил поддержку списков контроля доступа, которые соответствуют POCIX ACL;
- В файловую систему XFS добавлена поддержка ряда общих экстентов, которые позволяют нескольким владельцам использовать совместно информацию о непрерывных областях данных. Эта возможность позволяет реализовать в XFS вызова copy_file_range () ;
- Ну, а в NFS-сервер разработчики добавили поддержку операции COPY, которая определена в спецификации NFS4.2 и позволяет выполнить копирование содержимого файла без перемещения информации от сервера к клиенту и обратно.
Аппаратное обеспечение
- В драйвере AMDGPU появилась поддержка (пока экспериментальная) семейства GPU Southern Islands на базе микроархитектуры GCN 1.0. Добавлены инструменты для работы с виртуальными дисплеями;
- Добавлена поддержка систем платформы Mellanox Technologies;
- Также добавлена поддержка процессоров Loongson 1C;
- Теперь поддерживаются контроллеры USB 3.0 Broadcom Northstar и контроллеров USB 2.0 Rockchip/Innosilicon.
Что же, спасибо Линусу и всему сообществу разработчиков — теперь ждем новых свершений, которые позволяют развивать Linux.