Projektet BSDun er offentliggjort, som udvikler et modul til Linux-kernen, der gør det muligt at genkende, indlæse og køre uændrede eksekverbare filer i ELF-format, som er samlet til FreeBSD. For at køre anvendes et emuleret FreeBSD-miljø, der placeres i mappen /compat/freebsd. Generelt er projektet en fuldstændig modsætning til FreeBSDs Linuxulator. Koden distribueres under GPLv2+ licensen og er skrevet ved hjælp af AI-assistenten Claude Code.
Med BSDun er det lykkedes at køre mange applikationer fra FreeBSD-pakker i Linux, herunder pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium og VScode. For at køre Chromium og VScode kræves det, at sandbox-isolering deaktiveres, og størrelsen på videoram begrænses ved hjælp af indstillingerne “—no-sandbox —force-gpu-mem-available-mb=1024”.
Modulet har ikke til hensigt at blive en del af den primære kernel, da Linux-kernens arkitektur ikke tillader inclusion af andre executable file handlers (OS Personalities) siden fjernelsen af ABI Solaris, og kun ét system kaldetabel er forudset. For at omgå dette problem er mekanismen kprobe blevet aktiveret i BSDun, som interceptér alle system opkald.
Ved hjælp af kprobe blev FreeBSD-systemopkald adskilt fra Linux-systemopkald og pakket ind i en separat tabel. En del systemopkald fra FreeBSD blev direkte bundet til Linux-systemopkald, mens den anden del fik omarrangeret parameter- og resultatstrukturen, den tredje blev erstattet med store dele (f.eks. dem relateret til Capcicum), mens den fjerde blev implementeret baseret på de interne strukturer i Linux-kernen. For at implementere mekanismen kevent/kqueue oven på epoll() blev der anvendt en modificering af komponenterne i brugerens rum, der automatisk udføres ved indlæsning af hver FreeBSD-eksekverbar fil.
I alt er omkring 250 systemopkald implementeret. SystemV IPC, netværksfunktioner, futexer, sysctl MIB, prctl, timere og ioctl er også implementeret. For at isolere filsystemer bruges et chroot-miljø på Linux-siden (under eksperimenter uden chroot skrev forfatteren indholdet af /usr/local/* over i Linux ved at udføre “pkg install ...”). Ikke desto mindre kan nogle værktøjer stadig fungere uden chroot.
Det foreslåede modul kan anvendes til udvikling, bygning og portering af software til FreeBSD uden anvendelse. virtual machines. Kort vejledning til brug: make make load .\/bsdun-freebsd-root-resetup.sh .\/bsdun-freebsd-enter.sh uname -a FreeBSD værtsystem 16.0-CURRENT FreeBSD 16.0-CURRENT (bsdun) amd64
Kilde: opennet.ru
