A fost publicat BSDun, un modul pentru rularea fișierelor executabile FreeBSD în Linux

Proiectul BSDun a fost publicat, dezvoltând un modul pentru kernelul Linux care permite recunoașterea, încărcarea și rularea fișierelor executabile în format ELF, compilate pentru FreeBSD, fără modificări. Pentru rulare se folosește un mediu emulat FreeBSD, plasat în directorul /compat/freebsd. În general, proiectul este o contrastare completă cu Linuxulator-ul FreeBSD. Codul este distribuit sub licența GPLv2+ și a fost scris cu ajutorul asistentului AI Claude Code.

Cu ajutorul BSDun, a fost posibil să se ruleze cu succes în Linux multe aplicații din pachetele FreeBSD, printre care pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium și VScode. Pentru a rula Chromium și VScode, este necesară dezactivarea izolării sandbox și limitarea dimensiunii memoriei video prin opțiunile „—no-sandbox —force-gpu-mem-available-mb=1024”.

Modulul nu își propune să fie inclus în compunerea principală a kernelului, deoarece de la eliminarea ABI Solaris, arhitectura kernelului Linux nu permite includerea altor manipulatori de fișiere executabile (OS Personalities) și prevede existența unei singure tabele de apeluri sistem. Pentru a ocoli această problemă, BSDun a utilizat mecanismul kprobe, interceptând toate apelurile sistem.

Prin intermediul kprobe, apelurile sistem FreeBSD erau separate de apelurile sistem Linux și înfășurate într-o tabelă separată. O parte din apelurile sistem FreeBSD erau direct legate de apelurile sistem Linux, pentru alte apeluri se realiza reambalarea structurii parametrilor și a rezultatului, iar altele erau înlocuite cu stuburi (de exemplu, cele legate de Capcicum), iar cea de-a patra era implementată pe baza structurilor interne ale kernelului Linux. Pentru a realiza mecanismul kevent/kqueue pe lângă epoll(), a fost aplicată separat o modificare a componentelor în spațiul utilizatorului, efectuată automat la încărcarea fiecărui fișier executabil FreeBSD.

În total, au fost implementate aproximativ 250 de apeluri sistem. De asemenea, sunt implementate SystemV IPC, funcții de rețea, futex-uri, sysctl MIB, prctl, temporizatoare și ioctl. Pentru a separa sistemele de fișiere, a fost folosit un mediu chroot pe partea Linux (în procesul de experimentare, fără chroot, autorul a executat „pkg install ...”, scriind peste conținutul /usr/local/* în Linux). Cu toate acestea, unele utilitare pot continua să funcționeze fără chroot.

Modulul propus poate fi utilizat pentru dezvoltarea, compilarea și portarea software-ului pentru FreeBSD fără utilizare. mașini virtuale. Instrucțiuni rapide pentru utilizare: 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

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster