BSDun publicerad, en modul för att köra körbara filer av FreeBSD i Linux

Projektet BSDun har publicerats och utvecklar en modul för Linux-kärnan som möjliggör igenkänning, laddning och körning av oförändrade körbara filer i ELF-format, byggda för FreeBSD. För att köra används en emulerad FreeBSD-miljö som placeras i katalogen /compat/freebsd. Generellt är projektet en fullständig motsats till FreeBSD:s Linuxulator. Koden distribueras under GPLv2+-licensen och har skrivits med hjälp av AI-assistenten Claude Code.

Med BSDun har det framgångsrikt varit möjligt att köra många applikationer från FreeBSD-paket, inklusive pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium och VScode. För att köra Chromium och VScode krävs det att sandbox-isoleringen stängs av och att videominne begränsas med alternativen "—no-sandbox —force-gpu-mem-available-mb=1024".

Modulen anses inte vara lämplig för inkludering i kärnans huvudkomponent, eftersom efter borttagandet av ABI Solaris tillåter Linux-kärnan inte inkludering av andra körbara filhanterare (OS Personalities) och förutsätter en enda systemanrops-tabell. För att övervinna detta problem har BSDun använt kprobe-mekanismen som fångar alla systemanrop.

Genom kprobe separerades FreeBSD:s systemanrop från Linux-systemanrop och paketerades i en separat tabell. En del av FreeBSD:s systemanrop kopplades direkt till Linux:s systemanrop, medan en annan del ompaketerade parameter- och resultatstrukturen, den tredje ersattes med stubb-funktioner (till exempel de som är relaterade till Capcicum) och den fjärde implementerades baserat på Linux-kärnans interna strukturer. För att implementera kevent/kqueue ovanpå epoll() tillämpades en modifiering av komponenterna i användarutrymmet, som automatiskt tillämpades vid inläsning av varje FreeBSD-körbar fil.

Totalt har omkring 250 systemanrop realiserats. SystemV IPC, nätverksfunktioner, futexar, sysctl MIB, prctl, timers och ioctl har också implementerats. För att avgränsa filsystemen har ett chroot-miljö använts på Linux-sidan (under experimenten utan chroot, efter att författaren kört "pkg install …", överskrev innehållet i /usr/local/* i Linux). Trots detta kan vissa verktyg fortfarande fungera utan chroot.

Den föreslagna modulen kan användas för utveckling, kompilering och portning av programvara för FreeBSD utan att behöva använda virtuella maskiner. Kort instruktion för användning: make make load ./bsdun-freebsd-root-resetup.sh ./bsdun-freebsd-enter.sh uname -a FreeBSD värd 16.0-CURRENT FreeBSD 16.0-CURRENT (bsdun) amd64

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster