Byl zveřejněn projekt BSDun, který vyvíjí modul pro jádro Linux, umožňující rozpoznávat, načítat a spouštět v Linuxu nemodifikované spustitelné soubory ve formátu ELF, sestavené pro FreeBSD. Pro spuštění se používá emulované prostředí FreeBSD uložené v adresáři /compat/freebsd. Celkově je projekt přesným opakem Linuxulatoru FreeBSD. Kód je šířen pod licencí GPLv2+ a byl napsán za pomoci asistenta AI Claude Code.
Díky BSDun se podařilo úspěšně spustit v Linuxu mnoho aplikací z balíčků FreeBSD, mezi nimiž jsou pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium a VScode. Pro spuštění Chromia a VScode je nutné vypnout izolaci sandboxu a omezit velikost video paměti pomocí voleb „—no-sandbox —force-gpu-mem-available-mb=1024“.
Modul si nenárokuje zařazení do hlavního jádra, protože od doby odstranění ABI Solaris architektura jádra Linux neumožňuje zařazení dalších zpracovatelů spustitelných souborů (OS Personalities) a předpokládá existenci pouze jedné tabulky systémových volání. Aby se této problematice obešel, byl v BSDun využit mechanismus kprobe, který zachycuje všechna systémová volání.
Pomocí kprobe se systémová volání FreeBSD oddělovala od systémových volání Linuxu a byly obalena v samostatné tabulce. Některá systémová volání FreeBSD byla přímo spojena se systémovými voláními Linuxu, u jiných byla provedena přestavba struktury parametrů a výsledků, třetí byla nahrazena zástupnými symboly (například ty související s Capcicum), a čtvrtá byla implementována na základě vnitřních struktur jádra Linux. Pro realizaci mechanismu kevent/kqueue nad epoll() byla navíc aplikována modifikace komponentů v uživatelském prostoru, automaticky prováděná při načítání každého spustitelného souboru FreeBSD.
Celkově bylo implementováno přibližně 250 systémových volání. Byly také implementovány SystemV IPC, síťové funkce, futexy, sysctl MIB, prctl, časovače a ioctl. Pro izolaci souborových systémů bylo využito chroot prostředí na straně Linuxu (během experimentů bez chrootu autor provedl „pkg install …“ a přepsal obsah /usr/local/* v Linuxu). Nicméně, některé utilitky stále mohou fungovat bez chroot.
Navržený modul může být použit pro vývoj, kompilaci a portování softwaru pro FreeBSD bez použití virtuálních strojů. Krátký návod k použití: 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
Zdroj: opennet.ru
