Se ha publicado BSDun, un módulo para ejecutar archivos ejecutables de FreeBSD en Linux.

Se ha publicado el proyecto BSDun, que desarrolla un módulo para el núcleo de Linux, permitiendo reconocer, cargar y ejecutar en Linux archivos ejecutables en formato ELF sin modificar, compilados para FreeBSD. Se utiliza un entorno emulado de FreeBSD, ubicado en el directorio /compat/freebsd. En general, el proyecto es completamente opuesto al Linuxulator de FreeBSD. El código se distribuye bajo la licencia GPLv2+ y fue escrito con la ayuda del asistente de IA Claude Code.

Con BSDun, se han podido ejecutar con éxito en Linux muchas aplicaciones de los paquetes de FreeBSD, entre las que se incluyen pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium y VScode. Para ejecutar Chromium y VScode, es necesario deshabilitar la aislamiento sandbox y limitar el tamaño de la memoria de video con las opciones «—no-sandbox —force-gpu-mem-available-mb=1024».

El módulo no pretende incluirse en el núcleo principal, ya que desde la eliminación de la ABI de Solaris, la arquitectura del núcleo de Linux no permite incluir otros manejadores de archivos ejecutables (Personalidades de OS) y prevé tener solo una tabla de llamadas al sistema. Para sortear este problema, se utilizó en BSDun el mecanismo kprobe, que intercepta todas las llamadas al sistema.

A través de kprobe, las llamadas al sistema de FreeBSD se separaron de las llamadas al sistema de Linux y se envolvieron en una tabla separada. Una parte de las llamadas al sistema de FreeBSD se vinculó directamente a las llamadas al sistema de Linux, mientras que para otra se realizó una reempaquetado de la estructura de parámetros y resultados, una tercera se reemplazó con "stubs" (por ejemplo, relacionadas con Capcicum), y una cuarta se implementó sobre la base de las estructuras internas del núcleo de Linux. Para implementar el mecanismo kevent/kqueue sobre epoll(), se aplicó una modificación de los componentes en el espacio del usuario, que se activa automáticamente al cargar cada archivo ejecutable de FreeBSD.

En total, se han implementado alrededor de 250 llamadas al sistema. También se han implementado SystemV IPC, funciones de red, futex, sysctl MIB, prctl, temporizadores e ioctl. Para el aislamiento de sistemas de archivos se utilizó un entorno chroot en el lado de Linux (durante los experimentos, sin chroot, el autor realizó «pkg install …» y sobrescribió el contenido de /usr/local/* en Linux). Sin embargo, algunas utilidades aún pueden funcionar sin chroot.

El módulo propuesto puede utilizarse para desarrollar, compilar y portar software para FreeBSD sin necesidad de utilizar máquinas virtuales. Instrucciones breves de uso: 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

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster