Το έργο BSDun, μια ενότητα ανάπτυξης για τον πυρήνα, έχει δημοσιευτεί. Linux, το οποίο σας επιτρέπει να αναγνωρίζετε, να φορτώνετε και να εκτελείτε Linux Μη τροποποιημένα εκτελέσιμα αρχεία σε μορφή ELF, κατασκευασμένα για FreeBSD. Εκτελούνται σε ένα εξομοιωμένο περιβάλλον FreeBSD που βρίσκεται στον κατάλογο /compat/freebsd. Συνολικά, το έργο είναι το εντελώς αντίθετο από το FreeBSD. Linuxιουλωτής. Ο κώδικας διανέμεται με την άδεια GPLv2+ και γράφτηκε χρησιμοποιώντας τον βοηθό Claude Code AI.
Χρησιμοποιώντας το BSDun, κατάφερα να το εκτελέσω με επιτυχία. Linux Πολλές εφαρμογές από πακέτα FreeBSD, συμπεριλαμβανομένων των pkg, nginx, mc, ping, xeyes, xfce4-panel, Thunar, xfce4-terminal, Libreoffice, Midori, Epiphany, Chromium και VScode. Για να εκτελέσετε το Chromium και το VScode, πρέπει να απενεργοποιήσετε την απομόνωση sandbox και να περιορίσετε τη μνήμη βίντεο χρησιμοποιώντας τις επιλογές "--no-sandbox --force-gpu-mem-available-mb=1024".
Η ενότητα δεν ισχυρίζεται ότι περιλαμβάνεται στον κύριο πυρήνα, καθώς το ABI του Solaris έχει αφαιρεθεί από την αρχιτεκτονική του πυρήνα. Linux Δεν επιτρέπει την συμπερίληψη άλλων εκτελέσιμων χειριστών (OS Personalities) και απαιτεί μόνο έναν πίνακα κλήσεων συστήματος. Για να παρακάμψει αυτό το πρόβλημα, το BSDun χρησιμοποίησε τον μηχανισμό kprobe, ο οποίος αναχαιτίζει όλες τις κλήσεις συστήματος.
Χρησιμοποιώντας το kprobe, οι κλήσεις συστήματος του FreeBSD διαχωρίστηκαν από τις κλήσεις συστήματος. Linux και ήταν τυλιγμένα σε ξεχωριστό πίνακα. Ένα μέρος των κλήσεων συστήματος του FreeBSD ήταν άμεσα συνδεδεμένο με τις κλήσεις συστήματος. Linux, για μια άλλη περίπτωση, η δομή των παραμέτρων και των αποτελεσμάτων ανασυσκευάστηκε, η τρίτη αντικαταστάθηκε με stubs (για παράδειγμα, που σχετίζονται με το Capcicum) και η τέταρτη υλοποιήθηκε με βάση τις εσωτερικές δομές του πυρήνα. LinuxΓια την υλοποίηση του μηχανισμού kevent/kqueue πάνω από την epoll(), εφαρμόστηκε μια ξεχωριστή τροποποίηση των στοιχείων του χώρου χρήστη, η οποία εκτελείται αυτόματα κατά τη φόρτωση κάθε εκτελέσιμου αρχείου του FreeBSD.
Συνολικά, υλοποιούνται περίπου 250 κλήσεις συστήματος. Υλοποιούνται επίσης οι συναρτήσεις SystemV IPC, οι συναρτήσεις δικτύου, οι futexes, οι συναρτήσεις sysctl MIB, οι συναρτήσεις prctl, οι συναρτήσεις timers και οι συναρτήσεις ioctl. Στο πλάι χρησιμοποιείται ένα περιβάλλον chroot για τον διαχωρισμό των συστημάτων αρχείων. Linux (κατά τη διάρκεια πειραμάτων χωρίς chroot, ο συγγραφέας, εκτελώντας την εντολή "pkg install ...", αντικατέστησε τα περιεχόμενα του /usr/local/* στο Linux). Ωστόσο, ορισμένα βοηθητικά προγράμματα μπορούν να λειτουργήσουν και χωρίς το chroot.
Η προτεινόμενη ενότητα μπορεί να χρησιμοποιηθεί για την ανάπτυξη, τη δημιουργία και τη μεταφορά λογισμικού για το FreeBSD χωρίς τη χρήση εικονικές μηχανέςΣύντομες οδηγίες χρήσης: 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
Πηγή: opennet.ru
