Инструменты16 августа 2026 г., 14:17 МСК🤖 Auto

Linux 7.3: BPF-программы теперь управляют запуском бинарников

В ядро Linux 7.3 войдет масштабное обновление binfmt_misc, позволяющее BPF-программам динамически выбирать интерпретаторы и среды выполнения для каждого файла.

Баннер новости 5878

Разработчики ядра Linux, возглавляемые Christian Brauner, подготовили к слиянию в ветке 7.3 (ожидаемому 17 августа 2026 года) значительное расширение функциональности binfmt_misc. Эта подсистема, традиционно используемая для запуска нестандартных форматов файлов (например, Windows EXE через Wine или JAR через Java), теперь получает возможность программной маршрутизации. Ключевое изменение заключается в том, что интерпретатор больше не является фиксированной строкой при регистрации формата, а вычисляется динамически для каждого вызова exec.

Технические детали и новые режимы диспетчеризации

Обновление не только исправляет старые ошибки блокировки, но и внедряет два новых режима диспетчеризации, решающих специфические проблемы отладки и переносимости:

  • Transparent Dispatch (Прозрачная диспетчеризация): Интерпретатор загружает бинарный файл через AT_EXECFD, сохраняя исходный вектор аргументов (argv) и метки процесса. Это решает проблемы с /proc/pid/cmdline и отладкой в GDB, когда символы PIE не могут быть корректно переопределены.
  • Loader Substitution (Подстановка загрузчика): Позволяет выполнить бинарный файл нативно, изменив только используемый интерпретатор (динамический линкер). Это критически важно для дистрибутивов типа NixOS, где требуется реализация переносимых бинарных файлов, чей загрузчик определяется относительно самого файла.

Роль BPF в управлении окружением

Главная инновация — возможность прикреплять BPF-программы к записям binfmt_misc. Это открывает путь к созданию гибких политик безопасности и виртуализации, где среда выполнения выбирается на основе анализа конкретного бинарного файла в момент его запуска, а не на основе жестко заданных правил.

Характеристика Старое поведение (до Linux 7.3) Новое поведение (Linux 7.3)
Выбор интерпретатора Фиксированная строка при регистрации формата Динамический расчет при каждом exec
Управление процессом Интерпретатор полностью владеет идентичностью процесса Поддержка прозрачной диспетчеризации и подстановки загрузчика
Интеграция с BPF Не поддерживалась Возможно прикрепление BPF-программ для выбора окружения
Отладка (GDB/PIE) Проблемы с несоответствием AT_ENTRY/AT_PHDR Корректная работа с PIE-символами через прозрачный режим

Если изменения будут одобрены Линусом Торвальдсом в течение окна слияния, эта архитектура станет фундаментом для новых подходов к изоляции процессов и кросс-платформенному выполнению кода в Linux.

Источник: Phoronix ↗