Objavljen je BSDun, modul za pokretanje izvršnih datoteka FreeBSD u Linuxu

Objavljen je projekt BSDun, koji razvija modul za Linux jezgru, omogućujući prepoznavanje, učitavanje i pokretanje nemodificiranih izvršnih datoteka u ELF formatu sastavljenih za FreeBSD. Za pokretanje se koristi emulirano FreeBSD okruženje smješteno u direktoriju /compat/freebsd. Ukupno, projekt predstavlja potpunu suprotnost FreeBSD Linuxulatoru. Kod se distribuira pod GPLv2+ licencom i napisan je uz pomoć AI asistenta Claude Code.

Uz pomoć BSDun-a uspješno su pokrenute mnoge aplikacije iz FreeBSD paketa u Linuxu, među kojima su pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium i VScode. Za pokretanje Chromiuma i VScode-a potrebno je onemogućiti sandbox izolaciju i ograničiti veličinu video memorije pomoću opcija "—no-sandbox —force-gpu-mem-available-mb=1024".

Modul ne pretendira na uključivanje u glavni sastav jezgra, budući da od trenutka uklanjanja ABI Solaris, Linux jezgro ne dopušta uključivanje drugih izvršnih filtara (OS Personalities) i predviđa postojeće samo jedne tablice sistemskih poziva. Da bi se zaobišao ovaj problem, u BSDun-u je korišten mehanizam kprobe, koji presreće sve sistemske pozive.

Pomoću kprobe-a, sistemski pozivi FreeBSD-a odvođeni su od sistemskih poziva Linux-a i upakovani u zasebnu tablicu. Jedan dio sistemskih poziva FreeBSD-a izravno je povezan sa sistemskim pozivima Linux-a, za drugi je izvršeno ponovno pakiranje strukture parametara i rezultata, treći je zamijenjen zamjenicama (npr. vezani uz Capcicum), a četvrti je realiziran na temelju internih struktura Linux jezgra. Za implementaciju mehanizma kevent/kqueue iznad epoll() posebno je primijenjena modifikacija komponenti u korisničkom prostoru, automatski provedenih pri učitavanju svake izvršne datoteke FreeBSD-a.

Ukupno je implementirano oko 250 sistemskih poziva. Također su implementirane SystemV IPC, mrežne funkcije, futex-i, sysctl MIB, prctl, timere i ioctl. Za ograničavanje datotečnih sustava korišteno je chroot okruženje s Linux strane (u procesu eksperimentiranja bez chroot-a, autor je izvršavajući "pkg install ..." prepisao sadržaj /usr/local/* u Linux). Unatoč tome, neki alati još uvijek mogu raditi bez chroot-a.

Predloženi modul može se koristiti za razvoj, sastavljanje i portiranje softvera za FreeBSD bez korištenja. virtualnih mašina. Kratki vodič za korištenje: 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

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster