Megjelent a BSDun, egy modul a FreeBSD futtatható állományainak Linuxban való futtatására

Megjelent a BSDun projekt, amely egy Linux kernel modul fejlesztését tűzte ki célul, lehetővé téve a Linux számára, hogy felismerje, betöltse és elindítsa a nem módosított ELF formátumú végrehajtható fájlokat, amelyek a FreeBSD számára készültek. A futtatás során egy emulált FreeBSD környezetet használnak, amely a /compat/freebsd mappában található. Összességében a projekt teljes ellentéte a FreeBSD Linuxulator-nak. A kód GPLv2+ licenc alatt terjed, és Claude Code AI-asszisztenssel íródott.

A BSDun segítségével sikeresen futtattunk Linuxon számos alkalmazást a FreeBSD csomagokból, köztük a pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium és VScode programokat. A Chromium és VScode indításához ki kell kapcsolni a sandbox-izolációt, és korlátozni a videomemória méretét a „—no-sandbox —force-gpu-mem-available-mb=1024” opciók használatával.

A modul nem igényli a kernel fő összetevőibe való bekerülést, mivel a Solaris ABI eltávolítása óta a Linux kernel architektúrája nem engedi más végrehajtó fájl kezelők (OS Personalities) beépítését, és csak egy rendszerhívás táblát ír elő. A probléma megkerülése érdekében a BSDun használta a kprobe mechanizmust, amely minden rendszerhívást elfogott.

A kprobe segítségével a FreeBSD rendszerhívásai elkülönültek a Linux rendszerhívásaitól és külön táblázatba kerültek. A FreeBSD rendszerhívások egy része közvetlenül kapcsolódott a Linux rendszerhívásaihoz, míg mások paraméter struktúra és eredmény újrapakolását igényelték, egyesek helyettesítőkkel (például a Capcicum-ra vonatkozókat) lettek helyettesítve, míg negyedik csoportot a Linux kernel belső struktúrái alapján valósították meg. A kevent/kqueue mechanizmust az epoll() felett külön felhasználói térbeli komponensmódosítással valósították meg, amely automatikusan végrehajtódik minden FreeBSD végrehajtható fájl betöltésekor.

Összességében körülbelül 250 rendszerhívás került megvalósításra. Továbbá megvalósították a SystemV IPC-t, hálózati funkciókat, futexeket, sysctl MIB-t, prctl-t, időzítőket és ioctl-t. A fájlrendszerek elhatárolására chroot környezetet használtak a Linux oldalán (a kísérletek folyamán chroot nélkül az író a „pkg install ...” parancs futtatásával felülírta a /usr/local/* tartalmát Linuxban). Ennek ellenére egyes segédprogramok chroot nélkül is működhetnek.

A javasolt modul alkalmazható a FreeBSD-hez készült szoftverek fejlesztésére, összeállítására és portolására anélkül, hogy virtuális gépekhez. Rövid használati útmutató: make make load .\/bsdun-freebsd-root-resetup.sh .\/bsdun-freebsd-enter.sh uname -a FreeBSD gazda 16.0-CURRENT FreeBSD 16.0-CURRENT (bsdun) amd64

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster