内核开发模块 BSDun 项目已经发布。 Linux这使您可以识别、加载和运行 Linux 这些是未经修改的 ELF 格式可执行文件,专为 FreeBSD 构建。它们运行在位于 /compat/freebsd 目录下的模拟 FreeBSD 环境中。总的来说,该项目与 FreeBSD 完全相反。 Linux模拟器。该代码以 GPLv2+ 许可证发布,并使用 Claude Code AI 助手编写。
使用 BSDun,我成功运行了 Linux 许多 FreeBSD 软件包中的应用程序,包括 pkg、nginx、mc、ping、xeyes、xfce4-panel、Thunar、xfce4-terminal、Libreoffice、Midori、Epiphany、Chromium 和 VScode,都可以运行。要运行 Chromium 和 VScode,您需要禁用沙盒隔离并使用选项“--no-sandbox --force-gpu-mem-available-mb=1024”限制显存。
该模块并未声称已包含在主内核中,因为 Solaris ABI 已从内核架构中移除。 Linux 它不允许包含其他可执行处理程序(操作系统特性),并且只需要一个系统调用表。为了规避这个问题,BSDun 使用了 kprobe 机制,该机制会拦截所有系统调用。
使用 kprobe,FreeBSD 系统调用与系统调用分离 Linux 它们被封装在一个单独的表中。FreeBSD 系统调用的一部分直接绑定到系统调用。 Linux此外,参数和结果的结构被重新打包;第三个部分被替换为存根(例如,与Capcicum相关的存根);第四部分则基于内核的内部结构实现。 Linux为了在 epoll() 之上实现 kevent/kqueue 机制,对用户空间组件进行了单独的修改,该修改在加载每个 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
来源: opennet.ru
