[ON] Опубликован BSDun, модуль для запуска исполняемых файлов FreeBSD в Linux

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6000
ОС: gnu/linux

[ON] Опубликован BSDun, модуль для запуска исполняемых файлов FreeBSD в Linux

Сообщение rssbot »

Опубликован проект BSDun, развивающий модуль для ядра Linux, позволяющий распознавать, загружать и запускать в Linux немодифицированные исполняемые файлы в формате ELF, собранные для FreeBSD. Для запуска применяется эмулируемое окружение FreeBSD, размещаемое в каталоге /compat/freebsd. В целом проект является полной противоположностью FreeBSD Linuxulator. Код распространяется под лицензией GPLv2+ и написан с использованием AI-ассистента Claude Code.


При помощи BSDun удалось успешно запустить в Linux многие приложения из пакетов FreeBSD, среди которых pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium и VScode. Для запуска Chromium и VScode требуется отключение sandbox-изоляции и ограничение размера видеопамяти при помощи опций "--no-sandbox --force-gpu-mem-available-mb=1024".


Модуль не претендует на включение в основной состав ядра, поскольку с момента удаления ABI Solaris архитектура ядра Linux не допускает включения иных обработчиков исполняемых файлов (OS Personalities) и предусматривает наличие только одной таблицы системных вызовов. Для обхода этой проблемы в BSDun был задействован механизм kprobe, перехватывающий все системные вызовы.


При помощи kprobe cистемные вызовы FreeBSD отделялись от системных вызовов Linux и заворачивались в отдельную таблицу. Одна часть системных вызовов FreeBSD напрямую привязывалась к системным вызовам Linux, для другой выполнялась переупаковка структуры параметров и результата, третья заменялась заглушками (например, связанные с Capcicum), а четвёртая реализовывалась на основе внутренних структур ядра Linux.
Для реализации механизма kevent/kqueue поверх epoll() отдельно была применена модификация компонентов в пространстве пользователя, автоматически осуществляемая при загрузке каждого исполняемого файла FreeBSD.



В общей сложности реализовано около 250 системных вызовов. Также реализованы SystemV IPC, сетевые функции, futex-ы, sysctl MIB, prctl, таймеры и ioctl. Для разграничения файловых систем использовано chroot-окружение на стороне Linux (в процессе экспериментов без chroot автор выполнив "pkg install ..." перезаписал содержимое /usr/local/* в Linux). Тем не менее, некоторые утилиты все ещё могут работать без chroot.


Предложенный модуль может применяться для разработки, сборки и портирования ПО для FreeBSD без использования виртуальных машин. Краткая инструкция по использованию:

Код:

make
make load
./bsdun-freebsd-root-resetup.sh
./bsdun-freebsd-enter.sh
uname -a

FreeBSD host 16.0-CURRENT FreeBSD 16.0-CURRENT (bsdun) amd64


Источник: https://www.opennet.ru/opennews/art.shtml?num=65846
(opennet.ru, основная лента)
Спасибо сказали:
Аватара пользователя
yoricI
Сообщения: 3088
ОС: gentoo fluxbox

Re: [ON] Опубликован BSDun, модуль для запуска исполняемых файлов FreeBSD в Linux

Сообщение yoricI »

Бздун, понимаешь. Извините за французский
Спасибо сказали: