Запуск двоичных файлов FreeBSD в Linux

В общем, будут ли исполняемые файлы на FreeBSD исполняться на операционных системах Linux, особенно Ubuntu?

Вы не можете запускать двоичные файлы, созданные для FreeBSD в Linux (см. Этот вопрос ). В основном это разные операционные системы, которые используют только небольшое подмножество API (совместимость с POSIX).

Однако, если у вас есть исходный код, вы можете создавать двоичные файлы для Linux на FreeBSD; Термин «кросс-компиляция». Например, программы для Windows часто компилируются в системе Linux.

Теоретически, вы могли бы запускать исполняемые файлы операционной системы для других операционных систем. На практике это требует работы, и этого не происходит много, потому что люди не хотят делать для этого работу.

Есть несколько вещей, которые могут мешать:

  • Различные чипы
  • Различные системные вызовы
  • Различные вызовы библиотеки
  • Файлы / пути разные.

Итак, скажем, вы хотите запустить двоичный диск Intel FreeBSD на машине Intel Linux. Чип будет таким же, и эмуляция не нужна. Но интерфейс syscall отличается. Кому-то придется писать код для ядра Linux, чтобы понять, что при запуске двоичного файла FreeBSD используется другая таблица syscall. Это немного упростило, так как они оба UNIX, многие из кода могут быть одинаковыми.

Но тогда вам понадобятся библиотеки. Они могут быть теоретически скопированы из дистрибутива FreeBSD, и тогда динамический загрузчик узнает об этом специальном месте для библиотек FreeBSD. Если бы были какие-либо пути к файлам конфигурации или жестко закодированные пути вывода, это также нужно было решать.

Итак, это выполнимо, но это требует работы. Много работы. Таким образом, работа выполняется обычно только для непопулярной (или слишком новой) ОС для запуска двоичных файлов для более популярной или установленной ОС.

Первоначально Microsoft NT смогла запустить приложения командной строки OS / 2 и имела некоторую теоретическую (полуподобную) возможность запуска приложений POSIX. Эта способность была отброшена, поскольку OS / 2 стала неактуальной, и людям понравился NT для NT, а не как что-то, что могло бы запустить POSIX. Я недостаточно квалифицирован, чтобы сказать, считается ли Windows 7, работающим под управлением Windows 95, с другой ОС, или просто запускает какой-то древний код, объединенный с Win7.

Mac OSX может запускать исполняемые файлы MacOS 7/8, если они были закодированы для чего-то, называемого Carbon (набор библиотек совместимости). Это помогло в миграции на MacOSX. Им также нужна эмуляция для чипа PowerPC.

Поскольку Linux более распространен, чем FreeBSD, действительно нет необходимости в том, чтобы многие люди эмулировали FreeBSD в Linux. Было бы редко, если приложение на FreeBSD не будет доступно в Linux. Поэтому никто не сделал эту работу. Но есть возможность для FreeBSD запускать исполняемые файлы Linux . Поскольку Linux является движущейся целью, эмуляция необходимо обновлять, когда ядро ​​Linux сильно изменяется, или ему нужны новые библиотеки.

  • Разрешить моему компьютеру (ubuntu) принимать SSH-соединения
  • Linux. Задайте размер и размер экрана по умолчанию.
  • Как загрузить один файл по FTP из командной строки?
  • Как обмениваться Ethernet-соединением на Ubuntu (Jaunty)?
  • Как установить драйвер MediaTek MT7610U (RT2860)
  • Xubuntu 11.04 и драйверы Nvidia на Dell XPS L502X
  • Проблемы с монтажом дисков HFS +
  • Как обмениваться Интернетом между двумя компьютерами через USB?
  • Как я могу перечислить все IP-адреса в подключенной сети, предпочтительно с помощью терминала?
  • Как полностью отключить процесс от терминала?
  • Не удалось перенаправить журнал в / var / log / syslog
  • Давайте будем гением компьютера.