Адрес: ул. Б. Очаковская 32 Москва Россия
Наши официальные канал и чат в telegram
Поднимем Devuan на вершину Distrowatch! Просто перейдите по ссылке один раз в день.

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

Новости собранные из разных RSS источников
Аватара пользователя
root:#
Site Admin
Сообщения: 2042
Зарегистрирован: Вт ноя 08, 2022 3:27 pm
Благодарил (а): 59 раз
Поблагодарили: 28 раз

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

Сообщение root:# »

Опубликован BSDun, модуль для запуска исполняемых файлов FreeBSD в Linux
Опубликован проект 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