Avaldati BSDun, moodul FreeBSD täidetavate failide käitamiseks Linuxis

Avalikud BSDun projekt, mis arendab Linuxi tuuma moodulit, mis võimaldab tuvastada, laadida ja käivitada Linuxis muutmata ELF vormindatud käivitatavaid faile, mis on koostatud FreeBSD jaoks. Käivitamiseks kasutatakse emuleeritud FreeBSD keskkonda, mis asub kataloogis /compat/freebsd. Üldiselt on projekt täielik vastand FreeBSD Linuxulatorile. Kood on litsentsitud GPLv2+ all ja on kirjutatud AI-abistaja Claude Code'i abil.

BSDun'i abil õnnestus Linuxis edukalt käivitada mitmeid FreeBSD paketist tulenevaid rakendusi, sealhulgas pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium ja VScode. Chromiumi ja VScode'i käivitamiseks tuleb keelata sandbox-isoleerimine ja piirata videomälu suurust valikute „—no-sandbox —force-gpu-mem-available-mb=1024” abil.

Moodul ei pretendeeri tuuma põhikoosseisu lisamisele, kuna pärast Solaris ABI eemaldamist ei luba Linuxi tuuma arhitektuur teiste käivitatavate failide (OS Personalities) töötlejate lisamist ja eeldab ainult ühe süsteemikutsungite tabeli olemasolu. Selle probleemi ületamiseks kasutati BSDun'is kprobe mehhanismi, mis peidab end kõiki süsteemikutsungite.

Kprobe abil vahetati FreeBSD süsteemikõned Linuxi süsteemikõnedest ja pakiti eraldi tabelisse. Üks osa FreeBSD süsteemikõnedest seoti otse Linuxi süsteemikõnedega, teise jaoks toimus parameetri- ja tulemuse struktuuri ümberpakendamine, kolmas asendati peatuskoodidega (nt seotud Capcicum'iga), neljas rakendati Linuxi tuuma sisemiste struktuuride põhjal. Kevent/kqueue mehhanismi rakendamiseks epoll() peal rakendati eraldi muudatusi kasutaja ruumis, mis tehti automaatselt iga FreeBSD käivitatava faili laadimisel.

Kokku on rakendatud umbes 250 süsteemikõnet. Samuti on rakendatud SystemV IPC, võrgufunktsioonid, futex-id, sysctl MIB, prctl, taimerid ja ioctl. Failisüsteemide eristamiseks kasutati Linuxi poolset chroot-keskkonda (katsete käigus, ilma chrootita, käivitas autor „pkg install …” ja üle kirjutas sisu /usr/local/* Linuxis). Siiski võivad mõned utiliidid töötada ka ilma chrootita.

E proposeeritud moodulit saab kasutada FreeBSD jaoks tarkvara arendamiseks, kogumiseks ja portimiseks ilma kasutamata. virtuaalmasinad. Lühike kasutusjuhend: 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

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster