Pubblicato BSDun, un modulo per eseguire file eseguibili FreeBSD in Linux.

È stato pubblicato il progetto BSDun, che sviluppa un modulo per il kernel Linux, consentendo di riconoscere, caricare ed eseguire in Linux file eseguibili non modificati nel formato ELF, compilati per FreeBSD. Per l'esecuzione viene utilizzato un ambiente emulato FreeBSD, collocato nella directory /compat/freebsd. In generale, il progetto è l'opposto completo del Linuxulator di FreeBSD. Il codice è distribuito con licenza GPLv2+ ed è stato scritto utilizzando l'assistente AI Claude Code.

Grazie a BSDun, è stato possibile avviare con successo in Linux molte applicazioni dai pacchetti FreeBSD, tra cui pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium e VScode. Per eseguire Chromium e VScode è necessario disabilitare l'isolamento sandbox e limitare la dimensione della memoria video utilizzando le opzioni ‘—no-sandbox —force-gpu-mem-available-mb=1024’.

Il modulo non mira a essere incluso nel core del kernel, poiché a partire dall'eliminazione dell'ABI Solaris, l'architettura del kernel Linux non consente l'inclusione di altri gestori di file eseguibili (OS Personalities) e prevede solo una tabella delle chiamate di sistema. Per aggirare questo problema, in BSDun è stato impiegato il meccanismo kprobe, che intercetta tutte le chiamate di sistema.

Attraverso kprobe, le chiamate di sistema FreeBSD sono state separate dalle chiamate di sistema Linux e incapsulate in una tabella separata. Una parte delle chiamate di sistema FreeBSD è stata direttamente collegata alle chiamate di sistema Linux, per un'altra è stata effettuata la riimpacchettazione della struttura dei parametri e del risultato, una terza è stata sostituita con delle stub (ad esempio, quelle relative a Capcicum), e una quarta è stata realizzata sulla base delle strutture interne del kernel Linux. Per implementare il meccanismo kevent/kqueue sopra epoll(), è stata utilizzata una modifica separata dei componenti nello spazio utente, eseguita automaticamente al caricamento di ogni file eseguibile FreeBSD.

In totale, sono state implementate circa 250 chiamate di sistema. Sono stati implementati anche SystemV IPC, funzioni di rete, futex, sysctl MIB, prctl, timer e ioctl. Per delimitare i file di sistema è stato utilizzato un ambiente chroot dal lato di Linux (durante gli esperimenti, senza chroot, l'autore ha eseguito 'pkg install ...' sovrascrivendo il contenuto di /usr/local/* in Linux). Tuttavia, alcune utility possono ancora funzionare senza chroot.

Il modulo proposto può essere utilizzato per lo sviluppo, la compilazione e il porting di software per FreeBSD senza utilizzo. macchine virtuali. Istruzioni brevi per l'uso: 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

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster