Экспериментальный модуль ядра BSDun запускает бинарные файлы FreeBSD в Linux
Новый экспериментальный проект под названием BSDun пытается привнести в Linux нечто довольно необычное: возможность запускать немодифицированные двоичные файлы FreeBSD непосредственно в системе Linux.
Он разработан как модуль ядра Linux, который учит ядро распознавать и загружать исполняемые файлы FreeBSD в формате ELF. После загрузки эти программы запускаются в пользовательском пространстве FreeBSD под управлением /compat/freebsd, что позволяет Linux запускать инструменты FreeBSD без их перекомпиляции.
Проект позиционирует себя как зеркальное отражение Linuxulator от FreeBSD. В то время как Linuxulator позволяет системам FreeBSD запускать двоичные файлы Linux, BSDun делает обратное — позволяет Linux запускать двоичные файлы FreeBSD.
Технически BSDun работает за счет регистрации обработчика ELF FreeBSD в цепочке двоичных форматов Linux. При запуске программы модуль проверяет, является ли файл бинарным файлом FreeBSD, с помощью поля ELF OSABI или примечания FreeBSD ABI.
Если это не так, BSDun не вмешивается и позволяет Linux обработать файл обычным образом. Если это так, BSDun загружает ELF-образ, подготавливает вспомогательный вектор в стиле FreeBSD и перенаправляет среду выполнения в корень совместимости FreeBSD.
По умолчанию этот корневой каталог совместимости имеет значение /compat/freebsd. Проект предполагает, что пользователи будут использовать в нем базовую систему FreeBSD, включая такие компоненты, как динамический загрузчик FreeBSD и libc.
Согласно README проекта, BSDun уже может запускать настоящие бинарные файлы FreeBSD, в том числе /bin/sh. Автор также сообщает о поддержке как статически связанных инструментов, так и динамически связанных программ через ld-elf.so.1 FreeBSD и такие библиотеки, как libc.so.7 и libthr.so.3.
Кроме того, здесь перечислены функции командной оболочки, выполнение внешних команд, конвейеры, перенаправление, сетевые возможности, разрешение DNS, менеджер пакетов pkg FreeBSD, ping, kqueue/kevent, многопоточность, динамически подключаемые базовые утилиты и распространенные инструменты командной строки, такие как sed, awk, grep, find, stat, tail и другие.
Однако это все еще экспериментальная разработка. BSDun не является частью основного ядра Linux, и обычным пользователям не следует воспринимать его как стабильную подсистему. Он основан на модуле ядра, трансляции системных вызовов FreeBSD, логике загрузки ELF, трансляции обработки сигналов, перенастройке корневой файловой системы, трансляции сетевых структур и нескольких попытках обеспечить совместимость между интерфейсами прикладного программирования FreeBSD и Linux.
Один из важных моментов — семантика безопасности. В проекте отмечается, что некоторые вызовы, связанные с Capsicum, считаются успешными, но не выполняющими никаких действий, поскольку в Linux нет модели песочницы Capsicum, как в FreeBSD. Это означает, что некоторые программы могут работать, но не с тем уровнем безопасности, который был бы у них на FreeBSD.
Тем не менее идея интересная. Итак, ответ на вопрос «Может ли Linux напрямую использовать двоичный интерфейс другой Unix-подобной операционной системы?» на данный момент — «частично, экспериментально и впечатляюще».
Судя по странице проекта на GitLab, ему всего несколько дней. Согласно информации, он был создан 23 июня 2026 года и на данный момент не имеет помеченных релизов. Мы, конечно, будем внимательно следить за его развитием.
Дополнительную информацию можно найти на странице проекта в GitLab.
Редактор: AndreyEx