Что ж, есть проект, представляющий что-то вроде binfmt_misc в Linux для OS X, так что теперь вам нужен загрузчик ELF, динамический компоновщик, который может загружать как Mach-O, так и ELF, и некоторый механизм для перевода вызовов Linux в OS X. .
Просто для вдохновения вы можете реализовать динамический компоновщик так, чтобы он игнорировал расширение имени файла - могут быть загружены как libfoo.so.1 (как Linux ELF), так и libfoo.1.dylib (как Mach-O) так что версии системных библиотек для OS X могут быть повторно использованы, так что вам не нужно писать lib.so для "hosted on OS X", а системные вызовы могут обрабатываться с помощью kext, который переводит вызовы Linux в OS X в ядре.
Или, более элегантным способом, реализовать урезанное ядро Linux в виде kext, что делает ядро OS X двойным назначением. Однако для этого потребуется использовать два набора библиотек. (Двоичные файлы не конфликтуют, так что в целом все нормально)