Publication de BSDun, un module pour exécuter des fichiers exécutables FreeBSD dans Linux

Le projet BSDun a été publié, développant un module pour le noyau Linux qui permet de reconnaître, charger et exécuter dans Linux des fichiers exécutables au format ELF, compilés pour FreeBSD, sans modifications. Un environnement FreeBSD émulé, situé dans le répertoire /compat/freebsd, est utilisé pour l'exécution. Dans l'ensemble, le projet est complètement opposé au Linuxulator de FreeBSD. Le code est distribué sous la licence GPLv2+ et a été écrit avec l'assistance de l'IA Claude Code.

Grâce à BSDun, de nombreuses applications des paquets FreeBSD ont pu être lancées avec succès dans Linux, parmi lesquelles pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium et VScode. Pour exécuter Chromium et VScode, il est nécessaire de désactiver l'isolement sandbox et de limiter la taille de la mémoire vidéo en utilisant les options « —no-sandbox —force-gpu-mem-available-mb=1024 ».

Le module ne vise pas à être intégré dans le noyau principal, car depuis la suppression de l'ABI Solaris, l'architecture du noyau Linux ne permet pas d'inclure d'autres gestionnaires de fichiers exécutables (OS Personalities) et prévoit seulement une table d'appels système. Pour contourner ce problème, BSDun utilise le mécanisme kprobe, qui intercepte tous les appels système.

Avec kprobe, les appels système de FreeBSD ont été séparés des appels système de Linux et enveloppés dans une table distincte. Une partie des appels système de FreeBSD était directement liée aux appels système de Linux, pour d'autres, la structure des paramètres et des résultats a été réemballée, la troisième a été remplacée par des remplaçants (comme ceux liés à Capcicum), et la quatrième a été réalisée sur la base des structures internes du noyau Linux. Pour implémenter le mécanisme kevent/kqueue au-dessus de epoll(), une modification distincte des composants en espace utilisateur a été appliquée, effectuée automatiquement lors du chargement de chaque fichier exécutable FreeBSD.

En tout, environ 250 appels système ont été réalisés. Les fonctions IPC SystemV, les fonctions réseau, les futex, sysctl MIB, prctl, les minuteries et ioctl ont également été implémentés. Pour délimiter les systèmes de fichiers, un environnement chroot a été utilisé du côté de Linux (au cours des expériences, sans chroot, l'auteur a exécuté « pkg install ... » et a écrasé le contenu de /usr/local/* dans Linux). Cependant, certaines utilitaires peuvent encore fonctionner sans chroot.

Le module proposé peut être utilisé pour développer, compiler et porter des logiciels pour FreeBSD sans utiliser machines virtuelles. Instruction courte d'utilisation : make make load .\/bsdun-freebsd-root-resetup.sh .\/bsdun-freebsd-enter.sh uname -a FreeBSD hôte 16.0-CURRENT FreeBSD 16.0-CURRENT (bsdun) amd64

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster