Egy új kísérleti projekt a FreeBSD bináris kompatibilitását próbálja elhozni Linuxra. A BSDun nevű kernelmodul célja, hogy a Linux rendszerek módosítás nélküli FreeBSD ELF futtatható állományokat is képesek legyenek elindítani, FreeBSD felhasználói környezettel és részleges rendszerhívás-fordítással.

A BSDun egy szokatlan irányból közelíti meg a bináris kompatibilitás kérdését. Míg a FreeBSD régóta kínál Linux-kompatibilitási réteget Linuxulator néven, amely Linux binárisok futtatását teszi lehetővé FreeBSD alatt, a BSDun ennek a fordítottját célozza. A projekt azt próbálja megoldani, hogy Linux alatt lehessen FreeBSD-re fordított programokat futtatni portolás nélkül.
A megoldás Linux kernelmodulként működik, és egy FreeBSD ELF kezelőt regisztrál a kernel binárisformátum-láncába. Amikor a felhasználó elindít egy programot, a modul ellenőrzi, hogy az adott fájl FreeBSD bináris-e. Ezt az ELF OSABI mezője vagy egy FreeBSD ABI note alapján állapítja meg. Ha a fájl nem FreeBSD program, a BSDun nem avatkozik közbe, és a Linux a megszokott módon kezeli az indítást.
Ha viszont FreeBSD binárisról van szó, a modul betölti az ELF képet, előkészít egy FreeBSD-re jellemző auxiliary vectort, majd a futási környezetet egy FreeBSD kompatibilitási gyökér alá irányítja. Ez alapértelmezés szerint a /compat/freebsd útvonal, amelyet a felhasználónak FreeBSD alaprendszerrel kell feltöltenie. Ide tartozik például a FreeBSD dinamikus betöltője, a libc és más szükséges rendszerkomponensek.
A projekt README fájlja szerint a BSDun már most képes valódi FreeBSD binárisok, köztük a FreeBSD /bin/sh futtatására. A szerző működő támogatást említ statikusan linkelt eszközökhöz, valamint dinamikusan linkelt programokhoz is a FreeBSD ld-elf.so.1 betöltőjén és olyan könyvtárakon keresztül, mint a libc.so.7 és a libthr.so.3.
A felsorolt működő funkciók között szerepelnek a shell alapműveletei, a külső parancsok indítása, a pipeline-ok, az átirányítás, a hálózatkezelés, a DNS-feloldás, a FreeBSD pkg csomagkezelője, a ping, a kqueue és kevent, a szálkezelés, a dinamikusan linkelt alaprendszeri segédprogramok, valamint több általános parancssori eszköz, például a sed, az awk, a grep, a find, a stat és a tail.
Fontos azonban, hogy a BSDun jelenleg erősen kísérleti állapotban van. Nem része az upstream Linux kernelnek, és nem tekinthető stabil alrendszernek. A működés több összetevő együttműködésére épül, köztük kernelmodulra, FreeBSD rendszerhívás-fordításra, ELF betöltési logikára, jelkezelési átalakításra, fájlrendszer-átgyökerezésre, hálózati struktúrák fordítására és több, legjobb szándék szerinti kompatibilitási leképezésre a FreeBSD és a Linux ABI között.
Biztonsági szempontból is vannak korlátok. A projekt dokumentációja szerint egyes Capsicumhoz kapcsolódó hívások sikeres, de tényleges művelet nélküli hívásként térhetnek vissza, mivel a Linux nem biztosítja a FreeBSD Capsicum sandboxing modelljét. Ez azt jelenti, hogy bizonyos programok ugyan elindulhatnak, de nem feltétlenül ugyanazzal a biztonsági viselkedéssel futnak, mint FreeBSD alatt.
A BSDun ennek ellenére érdekes technikai kísérlet. Arra a kérdésre keresi a választ, hogy egy Linux rendszer képes lehet-e közvetlenül egy másik Unix-szerű operációs rendszer bináris interfészét kiszolgálni. A jelenlegi válasz inkább az, hogy részben, kísérleti módon, de már most figyelemre méltó eredményekkel.
A projekt a GitLab-oldala alapján még nagyon új, június 23-án jött létre, és egyelőre nem rendelkezik címkézett kiadásokkal.
